Features
Implemented obfuscation features
Features
Only documented features are implemented and functional.
Name Obfuscation
Class Renaming
Classes get short or random names (e.g. a, b, c or xk9m2p). Length configurable (1–32 characters).
Method Renaming
Method names are obfuscated. Not renamed:
main(String[])- Constructors (
<init>,<clinit>) - Native methods
- Enum methods (
valueOf,values) toString(),equals(Object),hashCode()– for JDK compatibility
Override chains are detected; overridden methods get the same new name.
Field Renaming
Field names are obfuscated. Not renamed: serialVersionUID, enum constants.
Homoglyph and Invisible Characters
- Homoglyph: Unicode lookalikes (e.g. Cyrillic
аinstead of Latina) – copy-paste fails - Invisible characters: Zero-width chars in names – safe for JVM, hard to detect
Data Obfuscation
Number Obfuscation
- int: Math expressions (e.g.
123→(50*3)-27); decompilers show the expression, not the literal - long, float, double: XOR
Array Obfuscation
Array dimensions are hidden via XOR (new int[8] → new int[(8 ^ key) ^ key]).
Boolean Obfuscation
true and false are hidden via XOR ((value ^ key) ^ key).
String Obfuscation
- XOR encryption
- Inline decryption at each use site (no central decoder)
- Key per class and per string/field
- Static
final Stringfields:ConstantValueis removed; initialization happens in<clinit>with obfuscated code – API keys and secrets never appear readable in bytecode or tostrings-style tools
Flow Obfuscation
Linear methods are flattened into a switch-dispatcher pattern. The original execution order is obscured: decompilers show a state machine (switch over opaque keys) instead of straightforward sequential code. Control flow becomes harder to follow for reverse engineering.
Debug Info Stripping
Removes file names, line numbers, and local variable names. Decompilers show e.g. var0, var1 instead of meaningful names.
Exclude Patterns
Classes/packages can be excluded from renaming:
*excludes all classes- Prefix match (e.g.
com.exampleexcludescom.example.*) - Built-in:
java.*,javax.*, Bukkit, Minecraft, etc.
Random Options
classNamesRandom,methodNamesRandom,fieldNamesRandom– random names per buildnumberKeyRandom,arrayKeyRandom,booleanKeyRandom,stringKeyRandom,flowKeyRandom– random keys per build