Recaf is an easy to use modern Java bytecode editor based on Objectweb’s ASM. No more hassling with the constant pool or stack-frames required. Check out the docs for more information.
Recaf Requirements
You can run Recaf with Java 8 or higher (Its reccomended that you use the lastest jdk8 release from jdk.java.net). Using Java 9 and higher requires an additional step to use.
Java 8: No additional steps required.
Java 9+: Update the controlsfx dependency in the pom.xml such that the 8.40.14 release is changed to the 9.0.0 release. You can then build from the source code with maven (Open a terminal and enter mvn package assuming you have Maven installed). Be aware that the github releases are based on Java 8.
Also Read: Tyton : Kernel-Mode Rootkit Hunter
Running & Updates
To get the latest version of Recaf you can either download the source code and compile with maven or grab a binary from the releases page.
As a jar file you can double click it to run Recaf. However it is reccomended that you launch via command line so you can specify the JDK java executable. Doing this will unlock additional features that rely on JDK functionality (tools.jar). For example on windows you would use the following command:
“C:\Program Files\Java\jdk1.8.0_202\bin\java.exe” -jar recaf.jar
Note: To ensure the classpath contains the contents of jdk\lib\tools.jar copy it into your jdk\jre\lib\ext folder.
Note: You can automate opening files via command line:
java -jar recaf.jar -i MyJar.jar -c com/example/MyClass
Note: When launching Recaf you will be notified about updates as they come out.
Libraries used:
- ASM – Class editing abilities
- CFR – Decompilation
- Simple-Memory-Compiler – Recompilation of decompiled code
- JIMFS – Virtual file system
- ControlsFX – Custom controls (Used in pretty much everything)
- RichTextFX – Decompiler code highlighting
- JRegex – Pattern matching for decompiler code highlighting
- minimal-json – Json reading/writing for config storage
- Commonmark – Markdown parsing
- picocli – Command line argument parsing