@@ -11,6 +11,7 @@ A powerful and flexible Java bytecode obfuscator built with ASM that provides co
1111- ** Local Variable Renaming** - Obfuscate local variable names for additional protection
1212- ** Reference Updating** - Automatically updates all references to renamed elements throughout the codebase
1313- ** Inheritance-Aware Renaming** - Properly handles interface implementations and method overrides
14+ - ** Multiple Naming Modes** - Choose from sequential, alphabetic, random short/long, or single character naming schemes
1415
1516### 🎯 Advanced Configuration
1617- ** Keep Rules System** - Sophisticated rules for preserving specific classes, methods, and fields
@@ -68,6 +69,14 @@ java -jar java-bytecode-obfuscator-1.0-SNAPSHOT.jar input.jar output.jar \
6869java -jar java-bytecode-obfuscator-1.0-SNAPSHOT.jar input.jar output.jar \
6970 --mappings mappings.txt --verbose \
7071 --rename-classes --rename-methods --rename-fields --rename-local-variables
72+
73+ # Use different naming modes
74+ java -jar java-bytecode-obfuscator-1.0-SNAPSHOT.jar input.jar output.jar \
75+ --naming-mode RANDOM_SHORT --rename-classes --rename-methods --rename-fields
76+
77+ java -jar java-bytecode-obfuscator-1.0-SNAPSHOT.jar input.jar output.jar \
78+ --naming-mode SEQUENTIAL_ALPHA --verbose \
79+ --rename-classes --rename-methods --rename-fields --rename-local-variables
7180```
7281
7382### Configuration File
@@ -80,6 +89,7 @@ Create a JSON configuration file for complex scenarios:
8089 "renameClasses" : true ,
8190 "renameFields" : true ,
8291 "renameMethods" : true ,
92+ "namingMode" : " RANDOM_SHORT" ,
8393 "verbose" : true ,
8494 "keepRules" : {
8595 "keepMainClass" : true ,
@@ -107,6 +117,7 @@ ObfuscationConfig config = new ObfuscationConfig.Builder()
107117 .renameClasses(true )
108118 .renameFields(true )
109119 .renameMethods(true )
120+ .namingMode(NamingMode . RANDOM_SHORT )
110121 .verbose(true )
111122
112123 // Keep specific classes
@@ -132,6 +143,57 @@ Obfuscator obfuscator = new Obfuscator();
132143obfuscator. obfuscate(inputJar, outputJar, config, mappingsFile);
133144```
134145
146+ ## Naming Modes
147+
148+ The obfuscator supports multiple naming modes to generate obfuscated names:
149+
150+ ### Available Modes
151+
152+ | Mode | Description | Example Output |
153+ | ------| -------------| ----------------|
154+ | ` SEQUENTIAL_PREFIX ` | Sequential with prefix (default) | ` a1 ` , ` a2 ` , ` a3 ` , ` m1 ` , ` m2 ` , ` f1 ` , ` f2 ` |
155+ | ` SEQUENTIAL_ALPHA ` | Sequential alphabetic | ` a ` , ` b ` , ` c ` , ` aa ` , ` ab ` , ` ac ` |
156+ | ` RANDOM_SHORT ` | Random short names (4 characters) | ` abcd ` , ` xyzk ` , ` mnop ` , ` qrst ` |
157+ | ` RANDOM_LONG ` | Random long names (8-16 characters) | ` abcdefgh ` , ` xyzklmnopqrs ` |
158+ | ` SINGLE_CHAR ` | Single character names | ` a ` , ` b ` , ` c ` , then falls back to ` a1 ` , ` a2 ` |
159+
160+ ### Usage Examples
161+
162+ ``` bash
163+ # Use random short names for maximum obfuscation
164+ java -jar obfuscator.jar input.jar output.jar --naming-mode RANDOM_SHORT
165+
166+ # Use single character names for minimal size
167+ java -jar obfuscator.jar input.jar output.jar --naming-mode SINGLE_CHAR
168+
169+ # Use alphabetic sequence for readability in testing
170+ java -jar obfuscator.jar input.jar output.jar --naming-mode SEQUENTIAL_ALPHA
171+ ```
172+
173+ ### Configuration File
174+
175+ ``` json
176+ {
177+ "namingMode" : " RANDOM_SHORT" ,
178+ "renameClasses" : true ,
179+ "renameFields" : true ,
180+ "renameMethods" : true
181+ }
182+ ```
183+
184+ ### Programmatic Usage
185+
186+ ``` java
187+ import net.cvs0.config.NamingMode ;
188+
189+ ObfuscationConfig config = new ObfuscationConfig .Builder ()
190+ .namingMode(NamingMode . RANDOM_LONG )
191+ .renameClasses(true )
192+ .renameFields(true )
193+ .renameMethods(true )
194+ .build();
195+ ```
196+
135197## CLI Reference
136198
137199### Command Line Options
@@ -149,6 +211,9 @@ Options:
149211 --rename-classes Enable class renaming
150212 --rename-fields Enable field renaming
151213 --rename-methods Enable method renaming
214+ --rename-local-variables Enable local variable renaming
215+ -n, --naming-mode <mode> Name generation mode (SEQUENTIAL_PREFIX, SEQUENTIAL_ALPHA,
216+ RANDOM_SHORT, RANDOM_LONG, SINGLE_CHAR)
152217 --mappings <file> Output mappings file
153218 -v, --verbose Enable verbose output
154219 --keep-class <class> Keep specific class (repeatable)
@@ -184,9 +249,19 @@ java -jar obfuscator.jar input.jar output.jar \
184249# Generate mappings
185250java -jar obfuscator.jar input.jar output.jar --mappings mappings.txt
186251
252+ # Use different naming modes
253+ java -jar obfuscator.jar input.jar output.jar \
254+ --naming-mode RANDOM_LONG \
255+ --rename-classes --rename-methods --rename-fields
256+
257+ java -jar obfuscator.jar input.jar output.jar \
258+ --naming-mode SINGLE_CHAR \
259+ --verbose
260+
187261# Override config file settings
188262java -jar obfuscator.jar -c config.json input.jar output.jar \
189263 --rename-classes false \
264+ --naming-mode SEQUENTIAL_ALPHA \
190265 --verbose
191266```
192267
@@ -199,6 +274,7 @@ java -jar obfuscator.jar -c config.json input.jar output.jar \
199274 "renameClasses" : true ,
200275 "renameFields" : true ,
201276 "renameMethods" : true ,
277+ "namingMode" : " SEQUENTIAL_PREFIX" ,
202278 "verbose" : true ,
203279 "keepRules" : {
204280 "keepMainClass" : true ,
@@ -214,6 +290,7 @@ java -jar obfuscator.jar -c config.json input.jar output.jar \
214290 "renameClasses" : true ,
215291 "renameFields" : true ,
216292 "renameMethods" : true ,
293+ "namingMode" : " RANDOM_SHORT" ,
217294 "verbose" : false ,
218295 "keepRules" : {
219296 "keepMainClass" : true ,
@@ -241,6 +318,7 @@ java -jar obfuscator.jar -c config.json input.jar output.jar \
241318 "renameClasses" : false ,
242319 "renameFields" : true ,
243320 "renameMethods" : false ,
321+ "namingMode" : " SINGLE_CHAR" ,
244322 "verbose" : false ,
245323 "keepRules" : {
246324 "keepStandardEntryPoints" : true ,
@@ -264,6 +342,7 @@ java -jar obfuscator.jar -c config.json input.jar output.jar \
264342 "renameClasses" : true ,
265343 "renameFields" : true ,
266344 "renameMethods" : true ,
345+ "namingMode" : " RANDOM_LONG" ,
267346 "verbose" : true ,
268347 "keepRules" : {
269348 "keepMainClass" : true ,
@@ -402,14 +481,42 @@ ObfuscationConfig config = new ObfuscationConfig.Builder()
402481 .renameClasses(false )
403482 .renameFields(true ) // Only obfuscate fields
404483 .renameMethods(false )
484+ .namingMode(NamingMode . SINGLE_CHAR )
405485 .keepStandardEntryPoints()
406486 .build();
407487```
408488
409489### Aggressive Obfuscation
410490``` java
411- ObfuscationConfig config = ConfigPresets . createAggressiveObfuscation()
412- .build(); // Minimal keep rules for maximum obfuscation
491+ ObfuscationConfig config = new ObfuscationConfig .Builder ()
492+ .renameClasses(true )
493+ .renameFields(true )
494+ .renameMethods(true )
495+ .renameLocalVariables(true )
496+ .namingMode(NamingMode . RANDOM_LONG )
497+ .keepStandardEntryPoints() // Minimal keep rules for maximum obfuscation
498+ .build();
499+ ```
500+
501+ ### Different Naming Modes
502+ ``` java
503+ // Sequential with prefix (default)
504+ ObfuscationConfig config1 = new ObfuscationConfig .Builder ()
505+ .namingMode(NamingMode . SEQUENTIAL_PREFIX )
506+ .renameClasses(true )
507+ .build();
508+
509+ // Random short names for good obfuscation
510+ ObfuscationConfig config2 = new ObfuscationConfig .Builder ()
511+ .namingMode(NamingMode . RANDOM_SHORT )
512+ .renameClasses(true )
513+ .build();
514+
515+ // Single character for minimal size
516+ ObfuscationConfig config3 = new ObfuscationConfig .Builder ()
517+ .namingMode(NamingMode . SINGLE_CHAR )
518+ .renameClasses(true )
519+ .build();
413520```
414521
415522### Framework-Specific Configurations
@@ -420,6 +527,7 @@ ObfuscationConfig config = new ObfuscationConfig.Builder()
420527 .renameClasses(true )
421528 .renameFields(true )
422529 .renameMethods(true )
530+ .namingMode(NamingMode . RANDOM_SHORT )
423531 .keepClassPattern(" .*Configuration" )
424532 .keepClassPattern(" .*Controller" )
425533 .keepClassMethodPattern(" .*Component" , " .*" )
@@ -434,6 +542,7 @@ ObfuscationConfig config = new ObfuscationConfig.Builder()
434542 .renameClasses(true )
435543 .renameFields(true )
436544 .renameMethods(true )
545+ .namingMode(NamingMode . SEQUENTIAL_ALPHA )
437546 .keepClassPattern(" .*Activity" )
438547 .keepClassPattern(" .*Service" )
439548 .keepClassPattern(" .*BroadcastReceiver" )
@@ -550,6 +659,12 @@ This project is licensed under the MIT License - see the LICENSE file for detail
550659
551660## Changelog
552661
662+ ### Version 1.1.0
663+ - Added multiple naming modes (SEQUENTIAL_PREFIX, SEQUENTIAL_ALPHA, RANDOM_SHORT, RANDOM_LONG, SINGLE_CHAR)
664+ - Enhanced CLI with naming mode selection
665+ - Updated configuration file format to support naming modes
666+ - Improved local variable renaming with configurable naming modes
667+
553668### Version 1.0.0
554669- Initial release with class, method, and field renaming
555670- Advanced keep rules system
0 commit comments