Awesome
Ambien
Features
Feature | Implemented |
---|---|
String encryption | ✅ |
Number obfuscation | ✅ |
Flow obfuscation | ✅ |
Reference obfuscation | ✅ |
Crashers | ✅ |
Miscellaneous ZIP stuff | ✅ |
GUI | 🚫 |
As of 1.5.0-beta release, unimplemented features will be added at some point
Usage
- Download the latest jar here
- The jar ending in
-beta
is the obfuscator itself. - The jar ending in
-lib
is an optional library you can use to exclude methods & classes.
- The jar ending in
Before using:
- Ambien MUST be ran with Java 8+
- Ambien should not be used alongside or with other obfuscators.
Run the jar using the --create-config
argument to create a base config
Then run the Ambien jar using the -config
argument (including the path to your config)
To see all the arguments Ambien offers, you can use the '-help' argument
Example obfuscation
Example obfuscation of Ambien v1.4.0
Original
public static void main(String[] args) {
AnotherClass.yellow();
boolean plaaaaaaaay = false;
for (int i = 0; i < 15; ++i) {
System.out.printf("%b: %d\n", plaaaaaaaay, i);
plaaaaaaaay = !plaaaaaaaay;
}
}
Full test jar source code can be found here
Obfuscated
public static void main(String[] args) throws Throwable {
AnotherClass.yellow();
boolean plaaaaaaaay = false ^ true;
int i = 0;
while(i < ((16 | -108 | 0) ^ -101)) {
byte[] var4 = new byte[]{73, 121, 76, 53, 109, 50, 76, 53, 110, 121, 76, 53, 105, 121, 76, 53, 52, 121, 76, 53, 103, 50, 76, 53, 110, 121, 76, 53};
System.out.printf(A07cQLY3IyaJGAbxxl5(new String(486kCqNqdnWHTRGJKW21xyGHn05SSE8b5CoJlJHw6Y9hUzd3YCj7qmPGN(var4)), QuVrzlq11JpJxR8B1R7CTzqo6w, 13120), plaaaaaaaay, i);
boolean var10003;
if (!plaaaaaaaay) {
var10003 = true;
if (((31 | -116 | -22) ^ -37) != ((48 | 50 | -128) ^ 55)) {
}
boolean var6 = false;
if (var6) {
}
} else {
var10003 = false;
}
plaaaaaaaay = var10003;
++i;
if (((-22 | 34 | -124) ^ -124) != ((48 | -2 | 123) ^ -40)) {
}
boolean var5 = false;
if (var5) {
}
}
}
Full class decompilation can be seen here
Transformer settings can be seen here
Crasher
<img src="./web/media/crasher-cfr.png" width="400" height="200"> <img src="./web/media/crasher-fernflower.png" width="400" height="200"> <img src="./web/media/crasher-procyon.png" width="400" height="200">As of 1.2.1-beta release
Contributing
- Simply clone this repository
- Add
-Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG
to vm options to see debug output
Dependencies
Lombok, ASM, SLF4J, GSON & JCommander