The Bytecode Club
FernFlower - CLI Java Decompiler - Printable Version

+- The Bytecode Club (https://the.bytecode.club)
+-- Forum: Lobby (https://the.bytecode.club/forumdisplay.php?fid=1)
+--- Forum: Programming (https://the.bytecode.club/forumdisplay.php?fid=86)
+--- Thread: FernFlower - CLI Java Decompiler (/showthread.php?tid=5)



FernFlower - CLI Java Decompiler - Konloch - 07-17-2014

Fernflower is an easy to use yet advanced cli Java decompiler.

Download, READ THIS!

FernFlower has recently become open sourced, you can view the repo at https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine/src/org/jetbrains/java/decompiler

If you're looking for GUI FernFlower, download Bytecode Viewer - https://github.com/Konloch/bytecode-viewer/releases

Basic Decompile:
Code:
java -jar fernflower.jar jarToDecompile.jar decomp/

With that fernflower will decompile jarToDecompile.jar and put the Java files into decomp/jarToDecompile.jar (Remember, jar is simply a .zip archive, so open it with any zip reader)

If you run into the issue with people obfuscating as aa aA and you can't reobfuscate for some reason, fernflower has a neat ability that allows you to rename all of the classes/fields/methods to class1, class2, etc.

Code:
java -jar fernflower.jar -ren=1 jarToDecompile.jar decomp/

For more options, read the FernFlower documentation here.

These are just some of the awesome things you can do with fernflower, go download it and try it out!


RE: FernFlower - CLI Java Decompiler - darkunited - 05-01-2015

Saved my life already. It renamed all obfuscated symbols, decompiled all classes and in the end put then in a JAR.
One question though, any clue on how can I browse that JAR now? BytecodeViewer will refuse to load it as the classes are already decompiled and it expects them to be not...


RE: FernFlower - CLI Java Decompiler - Konloch - 05-02-2015

(05-01-2015, 04:01 AM)darkunited Wrote:  Saved my life already. It renamed all obfuscated symbols, decompiled all classes and in the end put then in a JAR.
One question though, any clue on how can I browse that JAR now? BytecodeViewer will refuse to load it as the classes are already decompiled and it expects them to be not...

If it's decompiled then you can simply open the decompiler jar in a zip archive viewer, then open the .java file with Notepad++.


RE: FernFlower - CLI Java Decompiler - darkunited - 05-03-2015

(05-02-2015, 08:04 AM)Konloch Wrote:  
(05-01-2015, 04:01 AM)darkunited Wrote:  Saved my life already. It renamed all obfuscated symbols, decompiled all classes and in the end put then in a JAR.
One question though, any clue on how can I browse that JAR now? BytecodeViewer will refuse to load it as the classes are already decompiled and it expects them to be not...
If it's decompiled then you can simply open the decompiler jar in a zip archive viewer, then open the .java file with Notepad++.
That's a heart attack when it comes to analyzing strongly obfuscated apps. I succeeded loading up the whole project in IntelliJ but it still didn't output the "smooth" browsing experience that BCV does. I'm definitely looking forward to a possible implementation of that in BCV in the near future, if you have the time and will of course!


RE: FernFlower - CLI Java Decompiler - Konloch - 07-21-2015

(05-03-2015, 07:33 AM)darkunited Wrote:  
(05-02-2015, 08:04 AM)Konloch Wrote:  
(05-01-2015, 04:01 AM)darkunited Wrote:  Saved my life already. It renamed all obfuscated symbols, decompiled all classes and in the end put then in a JAR.
One question though, any clue on how can I browse that JAR now? BytecodeViewer will refuse to load it as the classes are already decompiled and it expects them to be not...
If it's decompiled then you can simply open the decompiler jar in a zip archive viewer, then open the .java file with Notepad++.
That's a heart attack when it comes to analyzing strongly obfuscated apps. I succeeded loading up the whole project in IntelliJ but it still didn't output the "smooth" browsing experience that BCV does. I'm definitely looking forward to a possible implementation of that in BCV in the near future, if you have the time and will of course!

I've been planning on adding obfuscation into BCV itself, so the user can quickly re-obfuscate a heavily obfuscated class to make it easier to read