引用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。