🌐
GitHub
github.com › leibnitz27 › cfr
GitHub - leibnitz27/cfr: This is the public repository for the CFR Java decompiler
Alternately, to decompile an entire jar, simply provide the jar path, and if you want to emit files (which you probably do!) add --outputdir /tmp/putithere. The main site for CFR is benf.org/other/cfr, where releases are available with a bunch of rambling musings from the author.
Starred by 2.3K users
Forked by 302 users
Languages   Java
🌐
Bytecode
the.bytecode.club › showthread.php
CFR Java Decompiler
CFR is a modern CLI Java Decompiler, you can download it at http://www.benf.org/other/cfr/ If you're looking for GUI CFR, check out Bytecode Viewer - https://github.com/Konloch/bytecode-viewer/releases To run it, simply use:
🌐
aldeid
aldeid.com › wiki › CFR-java-decompiler
CFR-java-decompiler - aldeid
$ java -jar cfr_0_116.jar cookie.jar [SNIP] if (this.passwordField1.getPassword().length == 0) { JFrame newFrame = new JFrame("Error"); JLabel label = new JLabel("Please enter a password."); label.setHorizontalAlignment(0); newFrame.add(label); newFrame.setPreferredSize(new Dimension(300, 120)); newFrame.getContentPane(); newFrame.pack(); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); newFrame.setLocation(dim.width / 2 - newFrame.getSize().width / 2, dim.height / 2 - newFrame.getSize().height / 2); newFrame.setVisible(true); } else { try { MessageDigest digest = MessageDigest.getInstance("MD5"); byte[] arr = digest.digest(new String(this.passwordField1.getPassword()).getBytes("UTF-8")); String md5 = new BigInteger(1, arr).toString(16); System.out.println(md5);
🌐
GitHub
github.com › sotasan › decompiler
GitHub - sotasan/decompiler: Java Decompiler GUI
A GUI application that allows you to browse Java archives using various decompilers.
Starred by 246 users
Forked by 19 users
Languages   Java 85.6% | Kotlin 14.4%
🌐
Benf
benf.org › other › cfr
CFR - yet another java decompiler.
CFR will decompile modern Java features - up to and including much of Java 9, 12 & 14, but is written entirely in Java 6, so will work anywhere!
🌐
Homebrew
formulae.brew.sh › formula › cfr-decompiler
cfr-decompiler — Homebrew Formulae
brew install cfr-decompiler · Yet Another Java Decompiler · https://www.benf.org/other/cfr/ License: MIT · Formula JSON API: /api/formula/cfr-decompiler.json · Formula code: cfr-decompiler.rb on GitHub ·
🌐
Java Decompilers
javadecompilers.com
Java decompiler online
Java decompilers online: *JAD, *JDCore, *Procyon, *Fernflower, *CFR. ✓ A user interface to extract source code from .class and .jar ‘binary’ files.
🌐
Macuyiko
blog.macuyiko.com › post › 2015 › a-quick-look-at-java-decompilers.html
A Quick Look At Java Decompilers
It uses FernFlower, Procyon and CFR for decompilation, makes this an awesome visual tool using state-of-art decompilers:
Find elsewhere
Top answer
1 of 7
41

There is the open source Java decompiler, Procyon.

I have not tested it against any obfuscated code, but I have seen it decompile many methods that JD-GUI failed to handle. Note that it's a work in progress, and I'm sure you will find plenty of code that it will fail to decompile.

2 of 7
19

Old and Lacking Entries

JAD Some time ago, everyone’s decompiler of choice was jad. Currently, the project is dead (in addition, it wasn’t open source), but still you see a lot of people referring to it.

Java DeObfuscator Also an older tool from fileoffset.com, but still works more or less. The interface is rather clunky to use for larger projects, but the tool is open source.

JODE JODE is a java package containing a decompiler and an optimizer for Java. This package is freely available under the GNU GPL. It hasn’t been updated for quite some time.

AndroChef Proprietary tool to decompile Android programs and Java files, available here. Not worth the money given the alternatives, just as DJ Decompiler.

Candle An open source decompiler by Brad Davis. I’m mentioning it for completeness, but is far away from being feature complete.


Modern Tools

JD-Gui Probably one of the most widely used tools for Java decompilation, as it is easy to use and provides a graphical user interface which allows to quickly open up and inspect a class file or JAR. You can find it over here.

FernFlower Very new and promising analytical Java decompiler (becoming an integral part of IntelliJ 14).

It’s a command line tool. This one is able to show the Unicode parameters with their full name.

Download from here. It’s a command line tool. This one is able to show the Unicode parameters with their full name.
Note that it's also already integrated by default in IntelliJ.

CFR

Free, and open source. This one aims to decompile modern Java features, including Java 12 switch expressions, Java 8 lambdas (pre and post Java beta 103 changes), Java 7 String switches etc., though is itself written in Java 6.

Also a command line tool. This one does an even better job and is slightly faster.

Procyon

Open source, and also aims to deal with Java 8 features (lambdas, :: operator). Needs Java 7 to run.

Krakatau Krakatau is interesting because it has been written in Python. It currently contains three tools: a decompiler and disassembler for Java class files and an assembler to create class files.

Does not yet support Java 8 features.

Soot

Soot is a framework for analyzing and transforming Java and Android applications, originally developed by the Sable Research Group of McGill University. It’s not very commonly used “just” as a decompiler, as it also defines an intermediate byte code language.

Recaf

A Java Bytecode editor and reverse engineering tool aimed at being intuitive to use. It can present bytecode through multiple decompilers (CFR, FernFlower, Procyon) or in a table layout to allow displaying class elements that are indecipherable in standard decompilers. Recaf uses context-sensitive menus to interact with classes, methods, and fields, allowing users to search for use cases, rename items, and edit definitions in a disassembled format.

It supports jars, wars, classes, and extracting classes from running Java processes.

It is written completely in Java and is fully open source.

Konloch’s Bytecode Viewer

An Advanced Lightweight Java Bytecode Viewer, GUI Java Decompiler, GUI Bytecode Editor, GUI Smali, GUI Baksmali, GUI APK Editor, GUI Dex Editor, GUI APK Decompiler, GUI DEX Decompiler, GUI Procyon Java Decompiler, GUI Krakatau, GUI CFR Java Decompiler, GUI FernFlower Java Decompiler, GUI DEX2Jar, GUI Jar2DEX, GUI Jar-Jar, Hex Viewer, Code Searcher, Debugger and more.

Written completely in Java, and it’s open source.

It uses FernFlower, Procyon and CFR for decompilation, makes this an awesome visual tool using state-of-art decompilers:

Enigma

A tool specifically geared for deobfuscation:

Originally used to deobfuscate Minecraft versions. Uses Procyon internally.

A more up to date fork can be found here

It’s fun to note that a lot of effort into decompilers and de-obfuscators for Java is the result of the modding scene around Minecraft, one of the most popular games implemented in Java.

Source: http://blog.macuyiko.com/post/2015/a-quick-look-at-java-decompilers.html

🌐
Java Decompiler
java-decompiler.github.io
Java Decompiler
JD-GUI lets you drag and drop LOG files, decompile CLASS files, and display the line of code that appears in Java stack traces.
🌐
JanBask Training
janbasktraining.com › community › java › what-is-a-good-java-deobfuscation
What is a good java deobfuscation | JanBask Training Community
October 12, 2022 - It uses FernFlower, Procyon and CFR for decompilation, makes this an awesome visual tool using state-of-art decompilers:
🌐
Eclipse Marketplace
marketplace.eclipse.org › free-tagging › cfr
cfr | Eclipse Plugins, Bundles and Products - Eclipse Marketplace | Eclipse Foundation
Enhanced Class Decompiler integrates CFR, FernFlower, JD, Procyon, Vineflower seamlessly with Eclipse and allows Java developers to debug class files without source code directly...
🌐
eikendev
eiken.dev › blog › 2021 › 02 › how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks
How to Break Your JAR in 2021 - Decompilation Guide for JARs and APKs | eikendev
February 26, 2021 - This should create the file ./build/Procyon.Decompiler/libs/procyon-decompiler-1.0-SNAPSHOT.jar, which is your freshly compiled Procyon decompiler. You might be wondering: Isn’t there an easier way? And I suppose it depends. GUI tools like Bytecode Viewer also use multiple decompilers under the hood and allow you to see their output nicely side-by-side.
🌐
GitHub
github.com › Konloch › bytecode-viewer
GitHub - Konloch/bytecode-viewer: A Java 8+ Jar & Android APK Reverse Engineering Suite (Decompiler, Editor, Debugger & More)
Latest dependencies (incl. decompilers like CFR, JD-GUI etc.)
Starred by 15.3K users
Forked by 1.2K users
Languages   Java 97.7% | HTML 1.2% | Lex 0.8% | JavaScript 0.3% | Python 0.0% | Ruby 0.0%
🌐
Benf
benf.org › other › cfr › faq.html
CFR - FAQ - yet another java decompiler.
Not for decompilation. I've written everything from scratch - partly because I'm doing this for fun, partly because I'm half tempted to port it to C++ at some point, so I don't want dependencies. There is a small reflective use of NIO, to allow the code to (still) require only Java6. ... CFR is very (very) deliberately java 6 only.
🌐
Reddit
reddit.com › r/java › java decompiler gui
r/java on Reddit: Java Decompiler Gui
June 25, 2022 - Quiltflower resugaring decompiler is developed primarily by the minecraft community · if you've ever forgotten to attach a -sources jar, but could navigate to a definition or view sources while debugging a class anyway, intellij provides that feature with Fernflower · standalone GUI decompilers are often used for malware analysis, or by curious people, or by people who don't use or don't want to fire up intellij.
🌐
FreshPorts
freshports.org › devel › cfr
FreshPorts -- devel/cfr: Class File Reader (CFR) Java decompiler
CFR will decompile modern Java features - up to and including much of Java 9, 10, 12 and beyond, but is written entirely in Java 6, so will work anywhere! It'll even make a decent go of turning class files from other JVM langauges (like Kotlin) back into Java!
🌐
SegmentFault
segmentfault.com › a › 1190000040025345 › en
Which Java decompiler tool is better? Take a look at the comparative analysis - 未读代码 - SegmentFault 思否
August 13, 2021 - If you just decompile a certain class. # 反编译 class 文件,结果输出到控制台 java -jar cfr-0.151.jar WindupClasspathTypeLoader.class # 反编译 class 文件,结果输出到 out 文件夹 java -jar cfr-0.151.jar WindupClasspathTypeLoader.class --outputpath ./out