java-asm-obfuscator
java-asm-obfuscator copied to clipboard
java-asm-obfuscator (jasmo)
Obfuscates compiled java code to make it harder to reverse engineer.
usage: java -jar jasmo.jar <src> <dest> [-c <arg>] [-h] [-k <arg>] [-p <arg>] [-v]
-c,--cfn <arg> Enable 'crazy fucking names' and set name length (large names == large output size)
-h,--help Print help message
-k,--keep <arg> Don't rename this class
-p,--package <arg> Move obfuscated classes to this package
-v,--verbose Increase verbosity
Current Obfuscators:
- Shuffle Members
- Shuffles the order of classes, methods, fields, annotations, interfaces, exceptions etc
- Inline Accessors
- Removes get/set methods, replacing them with direct field access
- Remove Debug Information
- Removes debugging information left by the compiler such as variable names and line numbers
- Scramble Classes
- Renames classes, optionally skipping classes provided by the --keep option, all classes are moved to the package provided by the --package option (otherwise to the base package)
- Scramble Fields
- Renames fields
- Scramble Methods
- Renames methods, skipping those that are required not to be (such as main), native or are overrides of external libraries (Libraries should be included in java class path).
- Scramble Strings
- Replaces string constants with an "unscramble" method
The project includes two test scripts in the 'test/' directory
- The first test obfuscates the compiled output of it's self. (Make sure that target/java-asm-obfuscator-*.jar has execution permission)
- The second test obfuscates the compiled output of it's self with the obfuscated output generated by the first test; to make sure that the obfuscated version is functional. (Make sure that target/result.jar has execution permission)
For analyzing obfuscated code I suggest using bytecode-viewer, it merges many java reverse engineering tools into one and includes many useful features.