Java obfuscator with Minecraft plugins supports. Based on ColonialObfuscator
⚠️ NOTE: Written mostly with the help of AI due to my fairly limited JVM knowledge. It’s quite stable on Java 7–25 and works very well with Minecraft Paper plugins. I’m unlikely to actively maintain it further.
- String Encryption - Encrypts string constants with XOR-based encryption
- Number Obfuscation - Obfuscates integer, long, float, and double constants
- Boolean Obfuscation - Transforms boolean values with complex expressions
- Flow Obfuscation - Creates complex control flow patterns
- Dispatcher - Converts methods to use dispatcher pattern
- Shuffle - Randomizes order of fields and methods
Before:
public boolean returnTrue() {
return true;
}
public boolean returnFalse() {
return false;
}
public void testConditions(int n, int n2, int n3) {
if (n == 200) {
System.out.println("n is 200");
}
if (n2 == 500) {
System.out.println("test2 is 500");
}
if (n3 != -1) {
System.out.println("n2 is not -1");
}
}
}
After:
public class Test {
static char[] кГБфбдГТЕжкД_ЭнЮгЧЙйАнЗроорцПРяЖФИНшйюЮмкЯУмЇиЙГИЖтЪА;
static int хщЮрГЕІирІвряРауГфПИцШИиРвздЮЖщЭЯРряюКбИ;
public void testConditions(int n, int n2, int n3) {
this.кГБфбдГТЕжкД_жЖЮШАкляіЙвВїиЩьЬюМШЧеФекаьхУтВмвщЩщювЫШ(
0x582A5BE7 ^ 0x582A508B,
new Object[]{n, n2, n3}
);
}
private void кГБфбдГТЕжкД_ЧкязФвуТыжЦэфнХЗхЬчрЛТщптЩтюцКУниТЙРИЪГВ(int n, int n2, int n3) {
if (n == (0x7361D762 ^ кГБфбдГТЕжкД_ещмСРУУалнГлВпоЫЬЭОХХоиуЫмєЇпкУцДоСзЕвСц(
-1308310402, 399363459, -1429195483, -712292576))) {
System.out.println(ЯУШЇюЙдыгЛшТпхеДчфЬкХйЕцюЩПкРБчГЖСэнІВжЙ(...));
}
if (n2 == (0x56F338AE ^ кГБфбдГТЕжкД_ещмСРУУалнГлВпоЫЬЭОХХоиуЫмєЇпкУцДоСзЕвСц(
174662077, -491941917, -674906218, -1928584349))) {
System.out.println(ЯУШЇюЙдыгЛшТпхеДчфЬкХйЕцюЩПкРБчГЖСэнІВжЙ(...));
}
if (n3 != (0xC0A86905 ^ кГБфбдГТЕжкД_ещмСРУУалнГлВпоЫЬЭОХХоиуЫмєЇпкУцДоСзЕвСц(...))) {
System.out.println(ЯУШЇюЙдыгЛшТпхеДчфЬкХйЕцюЩПкРБчГЖСэнІВжЙ(...));
}
}
public boolean returnTrue() {
return (Boolean)this.кГБфбдГТЕжкД_жЖЮШАкляіЙвВїиЩьЬюМШЧеФекаьхУтВмвщЩщювЫШ(
0x289DDE0C ^ 0x289D9FD7, new Object[0]
);
}
public boolean returnFalse() {
return (Boolean)this.кГБфбдГТЕжкД_жЖЮШАкляіЙвВїиЩьЬюМШЧеФекаьхУтВмвщЩщювЫШ(
0x3631CF9A ^ 0x3631D9A5, new Object[0]
);
}
}
Check out the wiki
by @core2k21 (tg)