-
Notifications
You must be signed in to change notification settings - Fork 73
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.
- 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.
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.
- 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.