Skip to content
SPECIFICTION
Get listed

CFR vs uncompyle6

CFR

benf.org

uncompyle6

github.com

Side by side

FigureCFRuncompyle6
Price fromFreeFree
Free planYesYes
Free trial——
Open source——
WindowsYesYes
macOSYesYes
LinuxYesYes
APIYes—
Self-hostedYesYes
Plans published11
Spec score · Reverse Engineering Tools8.2 (#10)7.6 (#34)
Spec score · Decompiler Software8.3 (#5)7.6 (#15)
Known limitationThe maker says CFR has edge cases and may produce poor results for some inputs.The README identifies control-flow handling as a major decompilation problem and says erroneous decompilations may sometimes be detected and reported.
LicenseThe maker’s FAQ directs users to the project README for its license; the project repository identifies the license as MIT.The repository identifies the project as GPL-3.0 licensed.
PurposeCFR is a Java decompiler that converts Java class files back into Java source.uncompyle6 translates Python bytecode into equivalent Python source code.
SupportThe maker invites users to email reports of problems and directs bug reports to the GitHub issue tracker.The maintainer says bug reports may take a while to receive attention and that sponsoring or supporting the project can prioritize issues.

Plans

CFR

  • FreeFree

CFR pricing →

uncompyle6

  • Open-source softwareFree

uncompyle6 pricing →

In their own words

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.

Visit benf.org

uncompyle6

uncompyle6 is a free, GPL-3.0-licensed tool for translating compiled Python bytecode into equivalent Python source code. It runs on `.pyc` and `.pyo` files from the command line, and can also deparse code fragments or return source information around a bytecode offset. The README lists bytecode from Python 1.0 through 3.8, Dropbox Python 2.5 bytecode, and some PyPy bytecode as accepted inputs. Fragment deparsing is used in trepan debuggers to show source at runtime and can provide more stack-trace detail than a line number. The `--syntax-verify` option checks decompiled syntax when used with the matching bytecode version. Control-flow handling remains a major challenge, and some incorrect decompilations may be detected and reported. The tool does not handle obfuscated code, Cython, or MicroPython, and cannot directly decompile Py2EXE executables. Python 3.7 and 3.8 support is generally better in the related decompile3 project. Installation is through PyPI for Python 3.11 and later, or a GitHub Releases file for earlier Python versions. Platforms listed include Linux, macOS, Windows, and self-hosted use.

Visit github.com