我这次要破解的是一个二级C题库的程序.程序界面如下所示.
由于此程序安装好后有一个自动更新程序,一打开就会自动更新,但是更新程序却下载不下来更新.我一怒之下把那个update程序删了,然后就导致程序一打开就跳出错误界面.
下面就多了一个步骤了,先把这个错误去掉.
OD载入程序,按F9运行,跳出错误对话框后,千万不能将它关闭.此时按F2将程序暂停,再按alt+K 显示调用堆栈,双击 prjEjc.00504A96 来到程序领空
我们开始向上找,找到这段程序的开头处.
00504670 . 55 push ebp
00504671 . 8BEC mov ebp, esp
00504673 . 83EC 08 sub esp, 8
在00504670处按F2下断点.重新运行一下程序.然后按F8单步跳过.在跳转的地方特别要注意
碰到了第一个跳,把005047c7 nop了.
005047C7 /74 11 je short 005047DA ;nop
005047C9 . |3935 10207600 cmp dword ptr [762010], esi
005047CF . |0F85 15010000 jnz 005048EA
005047D5 . |E9 00010000 jmp 005048DA
然后继续按F8.
突然,窗口跳了出来.就这样把它解决了.
现在解决注册问题.还是用原来的方法.OD载入程序,按F9运行,进行假注册,跳出错误对话框后,千万不能将它关闭.
此时按F2将程序暂停,再按alt+K 显示调用堆栈
双击 prjEjc(?00750F7E 来到程序领空,开始寻找有什么地方可以跳过这个对话框,找来找去就找到下面这行
00750EE4 . /E9 B8000000 jmp 00750FA1
说明它被跳过了.然后找到了是下面这行跳过了它
00750DD4 . /0F84 0F010000 je 00750EE9
那就在这里按F2设断,重新用OD载入程序,按F9运行,进行假注册,程序就在那里断了下来.将00750DD4 nop 掉.按F8继续单步跳过.就跳出了注册成功对话框.
打开程序.可以看到软件已经注册,而且也可以查看以前不可以看的题目了.
关闭程序.发现这程序好可恶.跳出了n多广告.好吧,就把它去掉吧.
用OD载入程序,按F9运行,将它关闭,跳出了对话框.此时按F2将程序暂停,再按alt+K 显示调用堆栈.可是此时却找不到位于程序领空的地址了,失败.
好吧,换一种方法.跳出来的既然是对话框,那么可以将rtcMsgBox函数中断.在command窗口输入 bp rtcMsgBox, 按回车.然后按F9运行程序后关掉,程序就中断了
72A1D132 > 55 push ebp
72A1D133 8BEC mov ebp, esp
72A1D135 83EC 4C sub esp, 4C
然后按alt+F9执行到用户代码,点击弹出对话框的确定,程序跳到了领空了..
004FFD73 . FFD3 call ebx ; <&MSVBVM60.#595>
004FFD75 . 8D4D AC lea ecx, dword ptr [ebp-54] ; 程序跳到了这里
004FFD78 . 8D55 BC lea edx, dword ptr [ebp-44]
由此可以知道004FFD73就是弹出对话框的代码,把它 nop 掉.
在下面,我又找到了一些弹出对话框的地址,把他们都 nop 掉
004FFDE4 . FFD3 call ebx ; MSVBVM60.rtcMsgBox
004FFE55 . FFD3 call ebx ; MSVBVM60.rtcMsgBox
好了,现在程序可以顺利的运行,也没有NAG了.
程序附件下载:http://wmbol.qupan.com/6566855.html
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!