A Java bytecode assembler, disassembler, and decompiler designed to handle obfuscated code and support the latest JVM specifications.
Krakatau is a Java bytecode toolchain that includes an assembler, disassembler, and decompiler. It allows developers to convert Java classfiles to and from a human-readable text format, modify bytecode, and decompile binaries to source code, with a focus on handling obfuscated code that other tools struggle with.
Security researchers, reverse engineers, and Java developers needing to analyze, modify, or understand obfuscated or legacy Java bytecode, such as in malware analysis or legacy system maintenance.
Krakatau stands out for its ability to work with heavily obfuscated code and its support for the latest JVM bytecode specifications, offering precision and reliability where other decompilers and disassemblers fail.
Java decompiler, assembler, and disassembler
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The disassembler handles heavily obfuscated code that breaks standard tools like `javap`, as highlighted in the README for security analysis.
Supports the full Java 19 bytecode specification and some undocumented legacy JVM features, ensuring compatibility with latest JVM versions.
Roundtrip disassembly mode produces output that reassembles into bit-for-bit identical classfiles, crucial for non-standard attributes like in CLDC or Scala code.
Assembler syntax is a superset of Jasmin with full Java 19 support, allowing precise bytecode creation and modification from scratch.
The decompiler lacks support for Java 8+ features like lambdas, and v2 is still a work in progress, requiring use of the older v1 for decompilation.
Installation requires Rust and Cargo, adding complexity compared to Java-based tools that run directly on the JVM.
While mostly compatible, there are minor incompatibilities with Jasmin syntax, which can hinder migration from other assemblers.