Skip to content

1. Getting Started

EpicPlayerA10 edited this page Nov 22, 2025 · 3 revisions

Welcome! We are glad that you want to contribute to our deobfuscator. This chapter covers everything you need to know to get started.

✨ Best practises

  • Add comments in complex areas. ASM is hard, so let's make it easier for others to understand what is happening in code (especially inside transformers).
  • Upload obfuscated test class sample. Especially when you are creating a new transformer then test sample is required for it. When someone wants to rewrite some part of the code, then these tests are helping us that we won't break anything.

🪜 Project structure

The project is structured as follows:

  • deobfuscator-api - The API for the deobfuscator.
  • deobfuscator-impl - The main deobfuscator runner.
  • deobfuscator-transformers - Transformers for the deobfuscator.
  • reverse-engineering - A place where you can throw your reverse-engineered classes (for example: complex number pool, complex string pool). You can reference them inside your transformers to make them more readable.
  • testData - Tests for transformers
    • src/java - You can write your java code to test transformers
    • compiled/custom-classes - Compiled classes to test transformers. You can throw here classes from your obfuscated jars.
    • compiled/custom-jars - Jars to test transformers. You can throw here your obfuscated jars.
    • deobfuscated - Raw classes after a deobfuscation process. Useful when debugging.
    • results - Expected results that are auto-generated decompiled java code.
  • TestDeobfuscation.java - Class where each test sample is registered.
  • Bootstrap.java - Class where you can run deobfuscator manually.

🧰 Recommended tools

  • IntelliJ IDEA - IDE for Java development
  • Recaf - Modern java bytecode editor. Use it to analyze obfuscated classes.
  • JVM Specification - Java Virtual Machine Specification. Use it to learn more about java bytecode. There are described things like JVM instructions, some terms, etc.
  • JVM Manual - Excellent community-made JVM manual that clearly explains most JVM concepts.

Clone this wiki locally