0167:004079DF PUSH ESI 0167:004079E0 XOR ESI,ESI 0167:004079E2 CMP BYTE PTR [0048CD78],00 0167:004079E9 PUSH EDI 0167:004079EA JZ 00407A8A ...... 14. 按F10键N次(我也不知道几次,你自己数一数吧^_^),一直来到下面的地方停下: ...... 0167:00407A91 LEA EAX,[EBP-0140] ←- 程序停留在这里 0167:00407A97 PUSH EAX 0167:00407A98 PUSH EDI ←- EDI指向输入的名字“KraneXH” 0167:00407A99 CALL 00407B47 ←- 计算注册码 0167:00407A9E MOV ESI,0048CDA4 0167:00407AA3 LEA EAX,[EBP-0140] 0167:00407AA9 PUSH ESI ←- ESI指向输入的注册码“12345678” 0167:00407AAA PUSH EAX ←- EAX指向正确的注册码“5CFC0875” 0167:00407AAB CALL 004692D0 0167:00407AB0 ADD ESP,10 0167:00407AB3 NEG EAX 0167:00407AB5 SBB EAX,EAX 0167:00407AB7 INC EAX 0167:00407AB8 MOV [00489FDC],EAX 0167:00407ABD JNZ 00407B27 0167:00407ABF LEA EAX,[EBP-0140] 0167:00407AC5 PUSH EAX 0167:00407AC6 PUSH EDI ←- EDI指向输入的名字“KraneXH” 0167:00407AC7 CALL 00407BE4 ←- 计算注册码 0167:00407ACC LEA EAX,[EBP-0140] 0167:00407AD2 PUSH ESI ←- ESI指向输入的注册码“12345678” 0167:00407AD3 PUSH EAX ←- EAX指向正确的注册码“23804216” 0167:00407AD4 CALL 004692D0 0167:00407AD9 ADD ESP,10 0167:00407ADC NEG EAX 0167:00407ADE SBB EAX,EAX 0167:00407AE0 INC EAX 0167:00407AE1 MOV [00489FDC],EAX 0167:00407AE6 JNZ 00407B27 ...... 15. 大家一定会问:为什么会在这里停下,而不是其它地方呢?因为我在前面的程序中已经用 D *** 看过了,没有发现什么可疑的呀^_^! 按F10走到0167:00407A99 CALL 00407B47处,用 D EAX 和 D EDI 观察其里面是什么?可以看到EDI指向我们输入的名字“KraneXH”,EAX指向的内存区域没有什么特别的数据;紧接着下面的CALL 00407B47 会对“KraneXH”进行一些处理,具体的 我们还不知道,继续往后走; 16. 按F10走到0167:00407AAB CALL 004692D0这一句,然后用 D ESI 和 D EAX 查看内存中的数据,可以看到ESI指向我们输入的注册码“12345678”,而EAX指向另外一串字符“5CFC0875”。不用说,十有八九这就是正确的注册码了,赶紧把它写在纸上吧^_^!继续往下走,我们会在下面的地方紧接着发现另外一个类似程序段,从而得到另外一串码“23804216”; 17. 验证注册码:按F5返回winzip,选择注册,输入名字“KraneXH”和注册码“5CFC0875”或“23804216”。然后你看到了什么?注册成功的画面出现,直接确认就搞定了,哈哈哈。。。! 18. 现在我们知道CALL 00407B47这条语句的作用是根据我们输入的名字来计算正确的注册码,然后和我们输入的注册码比较,看两者是否相等。处理后事:最后别忘了用CTRL+D呼出softice,然后下命令 BC * 清除所有断点!!!(出处:清风网络学院 )
复制本页网址和标题,发送给你QQ/Msn的好友一起分享
上一篇:Tomcat全攻略
下一篇:破解WinXfilesBlowfish的注册加密