Simple, lightweight, and effective Java bytecode obfuscator with modern GUI. Designed to protect your Java applications by making code less readable while maintaining full functionality.
- π Class Name Obfuscation - Renames classes to unreadable names
- π¦ Package Obfuscation - Obfuscates package names and structure
- π€ Method Name Obfuscation - Renames methods while preserving functionality
- π String Obfuscation - Encrypts string literals in bytecode
- π’ Variable Obfuscation - Renames local variables and parameters
- π Method Reordering - Changes method order to confuse reverse engineers
- π Control Flow Obfuscation - Adds dead code and complex control flow (EASY/HEAVY modes)
- π§ Watermarking - Adds custom prefixes to obfuscated names
- πΊοΈ Mappings Generation - Generates mapping files for debugging
- π― Pattern Matching - Selective obfuscation using include patterns
- π¨ Modern GUI - User-friendly Swing interface with FlatLaf
- β‘ Fast Processing - Efficient bytecode manipulation using ASM
- Java: 17 or higher
- Build Tool: Gradle (for building from source)
- Download the latest release JAR file
- Run with Java:
java -jar {obfuscator-jar-file}.jar
- Select Input JAR - Choose the JAR file you want to obfuscate
- Configure Options - Enable desired obfuscation features
- Set Output Path - Specify where to save the obfuscated JAR
- Configure Include Patterns (optional) - Specify which packages/classes to obfuscate
- Start Obfuscation - Click "Start Obfuscation" and wait for completion
The application automatically saves your settings to settings.json in the working directory. You can:
- Load Config - Restore previous settings
- Save Config - Manually save current settings
- Obfuscate Class Names - Renames classes to random, unreadable names
- Obfuscate Packages - Obfuscates package structure and names
- Watermark - Adds custom prefix to all obfuscated names (e.g.,
TEST_)
- Obfuscate Method Names - Renames methods (excluding constructors and overrides)
- Obfuscate Variables - Renames local variables and method parameters
- Change Methods Order - Randomizes method order in classes
- Obfuscate Strings - Encrypts string literals in bytecode, making them harder to extract
- Flow Obfuscation:
NONE- No control flow obfuscationEASY- Adds simple dead code and unnecessary jumpsHEAVY- Adds complex control flow structures and fake conditions
- Crash Class - Inserts a crash class that causes errors when decompiled
- Generate Mappings - Creates a JSON mapping file for reverse lookups
- Include Patterns - Specify which packages/classes to obfuscate (one per line)
- Java 17+
- Gradle 8.0+
-
Clone the repository:
git clone https://github.com/neziw/Noobfuscator.git cd Noobfuscator -
Build the project:
./gradlew build
-
Create shadow JAR:
./gradlew shadowJar
-
The executable JAR will be in
build/libs/
# Run the application
./gradlew run
# Build without tests
./gradlew build -x testNoobfuscator is designed to be simple yet effective. While it may not match the complexity of commercial obfuscators, it provides:
- β Simplicity - Easy to use, no complex configuration
- β Effectiveness - Makes code significantly harder to read and reverse engineer
- β Reliability - Maintains code functionality while obfuscating
- β Open Source - Transparent and modifiable
- β Lightweight - Minimal dependencies, fast processing
Perfect for:
- Protecting intellectual property in Java applications
- Making reverse engineering more difficult
- Learning bytecode manipulation techniques
- Small to medium Java projects
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions, please open an issue on the GitHub repository.
Made with β€οΈ by neziw