Apktool vs CFR
Apktool
apktool.orgCFR
benf.orgSide by side
| Figure | Apktool | CFR |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| API | — | Yes |
| Self-hosted | — | Yes |
| Plans published | 1 | 1 |
| Spec score · Reverse Engineering Tools | 8.1 (#12) | 8.2 (#10) |
| Purpose | Apktool is a tool for reverse engineering Android APK files. | CFR is a Java decompiler that converts Java class files back into Java source. |
| Support | The official site points users to GitHub Discussions, Stack Overflow, and IRC for community support. | The maker invites users to email reports of problems and directs bug reports to the GitHub issue tracker. |
Plans
In their own words
Apktool
Apktool is a command-line tool for reverse engineering Android APK files. It can disassemble an app’s resources into a form close to their original structure, then rebuild an app after changes such as translation or permission edits. Its analysis mode attempts to extract resources and the manifest for inspection without rebuilding. Apktool runs on Windows, Linux, and macOS; its official installation guide describes wrapper-script steps for those systems and requires Java 8 or later. Decode options include choosing resource-resolution behavior, skipping resources or source disassembly, and setting a framework directory. Build options include selecting an aapt2 binary, adding a generic Network Security Configuration file, and disabling APK repacking. The Apache license permits redistribution, modification, and integration into another project. Apktool is free, with no pricing tiers stated. Its FAQ says Android devices are not officially supported, and some OEM-modified “Magic APKs” may not decode or build. Builds are unsigned; copying a signature retains only the original APK signature v1 scheme.
CFR
CFR is a free Java decompiler that reconstructs Java source from Java class files. It can process individual named classes, classes found on a classpath, or a whole JAR, and the command-line tool can place output in a chosen directory with the --outputdir option. Decompilation behavior can be adjusted through command-line options or an options file. The maker says CFR handles many features from Java 9, 12, and 14, and it can attempt class files from other JVM languages; those are rendered as Java rather than their original language. CFR is written in Java 6 and is said to run wherever Java 6 does. It is available as a downloadable JAR, through Maven, and from GitHub. The FAQ notes an API from version 0.135, and the project repository identifies the license as MIT. CFR handles bytecode rather than native code. Its maker also notes that some inputs fall into edge cases where output may be poor. There are no paid plans or usage limits stated.