git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@389 379699f6-c40d-0410-875b-85095c16579estable
parent
a2225808c8
commit
11349fea27
@ -0,0 +1,166 @@ |
||||
; This class contains a hand optimized (and hard to decompile) |
||||
; string obfuscating method. Maybe I will use it in the Obfuscator |
||||
; some day, but probably the decompiler will handle those string, too. |
||||
|
||||
.class public jode/test/ObfuscateStrings |
||||
.super java/lang/Object |
||||
|
||||
.method private static obf(Ljava/lang/String;)Ljava/lang/String; |
||||
.limit locals 2 |
||||
.limit stack 7 |
||||
aload_0 |
||||
invokevirtual java/lang/String/toCharArray()[C |
||||
dup |
||||
iconst_0 |
||||
ldc 0x12345678 |
||||
goto firstloop |
||||
|
||||
loopstart: |
||||
; next pseudo random |
||||
; char array |
||||
dup_x1 |
||||
swap |
||||
iload_1 |
||||
swap |
||||
ldc 0x7fffffff |
||||
iand |
||||
|
||||
firstloop: |
||||
;stack content: |
||||
; char array |
||||
; char array copy |
||||
; current index |
||||
; current pseudo random |
||||
|
||||
ldc 1103515245 |
||||
imul |
||||
sipush 12345 |
||||
iadd |
||||
dup_x2 |
||||
sipush 0xff |
||||
iand |
||||
dup_x2 |
||||
pop |
||||
|
||||
;stack content: |
||||
; char array |
||||
; next pseudo random |
||||
; xor mask |
||||
; char array copy |
||||
; current index |
||||
|
||||
dup2_x1 |
||||
|
||||
;stack content: |
||||
; char array |
||||
; next pseudo random |
||||
; char array copy |
||||
; current index |
||||
; xor mask |
||||
; char array copy |
||||
; current index |
||||
|
||||
caload |
||||
ixor |
||||
|
||||
;stack content: |
||||
; char array |
||||
; next pseudo random |
||||
; char array copy |
||||
; current index |
||||
; new char |
||||
|
||||
swap |
||||
dup_x1 |
||||
istore_1 |
||||
iinc 1 1 |
||||
castore |
||||
|
||||
;stack content: |
||||
; char array |
||||
; next pseudo random |
||||
;locals: 1 = current index |
||||
|
||||
swap |
||||
dup |
||||
arraylength |
||||
iload_1 |
||||
if_icmpne loopstart |
||||
|
||||
new java/lang/String |
||||
dup_x2 |
||||
swap |
||||
invokespecial java/lang/String/<init>([C)V |
||||
pop |
||||
areturn |
||||
.end method |
||||
|
||||
.method private static obf2(Ljava/lang/String;)Ljava/lang/String; |
||||
.limit locals 2 |
||||
.limit stack 8 |
||||
aload_0 |
||||
invokevirtual java/lang/String/toCharArray()[C |
||||
ldc 0x12345678 |
||||
istore_1 |
||||
iconst_0 |
||||
|
||||
loop: |
||||
; char array |
||||
; next index |
||||
|
||||
|
||||
;stack content: |
||||
; char array |
||||
; current index |
||||
dup2 |
||||
dup2 |
||||
caload |
||||
|
||||
; char array |
||||
; current index |
||||
; char array |
||||
; current index |
||||
; original char |
||||
|
||||
iload_1 |
||||
ldc 0x7fffffff |
||||
iand |
||||
|
||||
dup |
||||
ldc 1103515245 |
||||
imul |
||||
sipush 12345 |
||||
iadd |
||||
istore_1 |
||||
sipush 0xff |
||||
iand |
||||
ixor |
||||
|
||||
; char array |
||||
; current index |
||||
; char array |
||||
; current index |
||||
; new char |
||||
|
||||
castore |
||||
iconst_1 |
||||
iadd |
||||
|
||||
; char array |
||||
; next index |
||||
dup2 |
||||
swap |
||||
arraylength |
||||
if_icmplt loop |
||||
|
||||
; char array |
||||
; next index |
||||
pop |
||||
|
||||
new java/lang/String |
||||
dup_x1 |
||||
swap |
||||
invokespecial java/lang/String/<init>([C)V |
||||
areturn |
||||
.end method |
||||
|
Loading…
Reference in new issue