原帖子链接:
http://bbs.pediy.com/showthread.php?t=106369
我所要指出的是,作者并未真正破解,而仅仅是实现了输入任何注册码直接弹出来“注册正确”的对话框而已,其后边的代码执行的依然是未注册的。
而且作者所解释的CMP ESI,2 /*将用户输入的注册码与真注册码比较*/也是不正确的。
004D554D |. 83C4 0C ADD ESP,0C
004D5550 |. E8 831C0C00 CALL Fm.005971D8 关键call
004D5555 |. 5F POP EDI
004D5556 |. 5B POP EBX
004D5557 |. 8BF0 MOV ESI,EAX
004D5559 83FE 02 CMP ESI,2 /*原作者解释错误*/
004D555C |. 6A 00 PUSH 0
004D555E |. 68 74DC5C00 PUSH Fm.005CDC74 ; ASCII "Fund Manager"
004D5563 |. 75 07 JNZ SHORT Fm.004D556C
004D5565 |. 68 7E060000 PUSH 67E 语句1
004D556A |. EB 05 JMP SHORT Fm.004D5571
004D556C |> 68 61060000 PUSH 661 语句2
004D5571 |> FF75 08 PUSH DWORD PTR SS:[EBP+8]
004D5574 |. E8 9AC1F4FF CALL Fm.00421713 //跳向注册正确或者错误的提示窗口
通过分析,我们知道语句1和语句2,正是注册正确与否的两个分支,由此可以判断004D5550 是关键call
未注册的时候运行完关键call,eax=2,所以我们F7进入,修改eax的返回值为1即可。
同时此软件对注册用户、序列号、注册号要进行3次判断,所以要修改判断语句cmp eax,edi为cmp eax,eax共3处。
思路写出来了。我也成功调试了。我把调试完毕的破解文件传给大家。大家好好研究哦。我可是研究了一下午。。。呵呵。。。不会的可以留言,大家继续努力哦。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课