al’ = al xor bl = 55 ( al = 76 , bl = 10 )
++++++++++++++++++++++++++++++++++++++++++++++++++
以16进制算
1110110
10000
――――――
1100110 =66
以十进制来算
1001100
1010
――――――
1000110 =70
我不知道上面的55是怎么得来的……
因为我看了几个帖子跟踪出来的 异或 的结果都跟我自己动手算的结果不相同
http://bbs.pediy.com/showthread.php?s=&threadid=40596
http://bbs.pediy.com/showthread.php?s=&threadid=39672&perpage=10&highlight=&pagenumber=3
请教一下 55 这个结果是如何得来的……
引用http://bbs.pediy.com/showthread.php?s=&threadid=40596
经验总结】
本人对esp的堆栈做了跟踪得出如下规律:(所有字符都表示位数)
堆栈地址 数值 所取的内容
ss:[esp+4] 0 1 2 3 4 5 6 7 10
ss:[esp+5] 2 3 4 5 6 7 8 9 32
ss:[esp+6] 4 5 6 7 8 9 A B 54
ss:[esp+7] 6 7 8 9 A B C D 76
ss:[esp+8] 8 9 A B C D E F 98
ss:[esp+9] A B C D E F 0 BA
ss:[esp+A] C D E F 0 1 DC
ss:[esp+B] E F 0 1 2 FE
又知:
al’ = al xor bl = 55 ( al = 76 , bl = 10 )
cl’ = cl xor dl = 6E ( cl = FE , dl = 32 )
dl’ = dl xor bl = 4E ( dl = BA , bl = 54 )
bl’ = bl xor ss:[esp+A] ( bl = 98 )
得出结论如下:
[8][7]与[2][1]异或,结果必须等于55
[16][15]与[4][3]异或,结果必须等于6E
[6][5]与[12][11]异或,结果必须等于4E
[10][9]与[14][13]异或,结果必须等于19
满足以上的注册码即为真正的注册码,给个例子:7CE5F929871D1603。
但是总觉得不对,因为KAN也出了个分析,并给了个注册码:4510/510911000/7,按我的算法,这里的/应该是不合法的,因为/本身就占了2个字节,这是为什么,斑竹明鉴!・
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法