Skip to content

References

exotic edited this page Feb 18, 2024 · 1 revision

References

De-compilation

First we start on the topic of de-compilation. Sure it's a great tool but it fails very often which is why you need to learn to read bytecode. The most common de-compilation tool you will encounter is Lee Benfield's CFR. But I still need to mention all of them.

JetBrains' FernFlower (not an official mirror) - https://github.com/fesh0r/fernflower
Lee Benfield's CFR - https://github.com/leibnitz27/cfr | http://www.benf.org/other/cfr
Vineflower (a reinforced fork of FernFlower) - https://github.com/Vineflower/vineflower
Krakatau (assembler, disassembler, de-compiler mainly used for heavily obfuscated applications) - https://github.com/Storyyeller/Krakatau
JD-GUI (good de-compiler for non-obfuscated code, includes a GUI) - https://github.com/java-decompiler/jd-gui | https://java-decompiler.github.io/

They all have their own strength and weaknesses. For example, CFR can't handle heavy flow very well compared to something like FernFlower and its forks.

RE tools

Before I start this I want you to know that these tools are meant for reverse-engineering not for cracking and the authors of most of these tools don't want their tool to be known as 'the tool you should use to commit a digital crime!'.

First and in my own opinion the best we have Recaf. Recaf is a full java reverse-engineering suite and is packed with tons of features including a built in assembler, a collection of de-compilation tools, re-mappers, flow graphing, and a plugin system.

Currently there have been 4 iterations of Recaf meaning 4 versions. Recaf 4x is currently in development and is not finished, for now it's recommended to use 3x.

Recaf is made to be resilient against obfuscation but they currently have a problem on their hands which has been going on for a long time and has yet to be solved.

'Anyone wanna write a class API generator?' - https://www.youtube.com/watch?v=nf52gcvEJSY&

Here are some references for Recaf

Recaf (2x) - https://github.com/Col-E/Recaf/tree/master
Recaf (3x) - https://github.com/Col-E/Recaf/tree/dev3
Recaf (4x) - https://github.com/Col-E/Recaf/tree/dev4

I recommend using Recaf but there are obviously other ones.

Threadtear (a multi-functional de-obfuscation tool suite) - https://github.com/GraxCode/threadtear
JByteMod - https://github.com/GraxCode/JByteMod-Beta
Cafebabe - https://github.com/GraxCode/Cafebabe

De-obfuscation

De-obfuscators are used to well de-obfuscate obfuscated JVM bytecode. They do have a slight limitation and it's that they often won't be able to de-obfuscate commercial obfuscation tools, still can be very useful.

DiObfuskator - https://github.com/narumii/Deobfuscator
java-deobfuscator - https://github.com/java-deobfuscator/deobfuscator

Honorable mentions

ASM (a minimalistic, all-purpose bytecode manipulation and analysis framework for JVM bytecode) - https://asm.ow2.io/
Byte Buddy (code generation and manipulation library for JVM bytecode) - https://bytebuddy.net/
SSVM (a VM for JVM bytecode) - https://github.com/xxDark/SSVM
JASM (a post modern age integration focused JVM bytecode assembler) - https://github.com/jumanji144/Jasm
ImHex (a feature packed, FOSS hex editor) - https://imhex.werwolv.net/
Reconstruct (a Java library meant to infer missing information vectors of Java classes, meant to be Recaf's replacement for JPhantom) - https://github.com/jumanji144/Reconstruct

Clone this wiki locally