一直都觉得winrar使用40天以后,每次运行弹出请注册的NAG窗口很烦人,一直想给去掉,晚上正好看到了看雪老师写的《加密与解密》中相关去除NAG的资料。就想照葫芦画瓢也自己试试^o^
实验环境:win2k sp2
实验对象:winrar 3.20
工具:peid,Resscope,w32Dasm,peditor,Uedit32,ollydbg 1.10
过程:先用peid查看,发现未加壳,用Resscope打开winrar.exe,找到dialog-->REMINDER,发现是Nag窗口的内容,用W32dasm打开winrar.exe,查找REMINDER发现两个地址0043EC9B和00442ABA,用OD载入,先到达0043EC9B代码如下
0043EC81 /7F 04 jg short WinRAR1.0043EC87
0043EC83 |85C0 test eax,eax
0043EC85 |7D 24 jge short WinRAR1.0043ECAB
0043EC87 \C605 40554900 01 mov byte ptr ds:[495540],1
0043EC8E 6A 00 push 0
0043EC90 68 A02A4400 push WinRAR1.00442AA0
0043EC95 FF35 A8D54A00 push dword ptr ds:[4AD5A8]
0043EC9B 68 AD5A4900 push WinRAR1.00495AAD
可以看见0043EC9B是从0043EC81跳过来的。于是用PEditor中的FLC算出虚拟地址0043EC81的十六进制偏移为0003E281,然后用Uedit32把7F改为7E,保存后退出,再运行winrar发现已不再弹出nag窗口。(用w32Dasm也可以看出实际偏移地址,而且OD也可以直接改,为了熟悉下Uedit32,所以画蛇添足了)
一开始我是想把7F 04改为90 00的,程序可以运行,但是程序运行后即将弹出NAG窗口的时候(也就是程序运行后3~5秒时)连续出现三个错误,程序自动结束。
研究的过程中暂时发现两个个问题。
第一个问题:查找REMINDER发现两个地址0043EC9B和00442ABA,用OD载入后一个地址00442ABA,代码如下
00442A96 33C0 xor eax,eax
00442A98 5F pop edi
00442A99 5E pop esi
00442A9A 5B pop ebx
00442A9B 5D pop ebp
00442A9C C2 1000 retn 10
00442A9F 90 nop
00442AA0 55 push ebp
00442AA1 8BEC mov ebp,esp
00442AA3 81C4 00FCFFFF add esp,-400
00442AA9 53 push ebx
00442AAA 56 push esi
00442AAB 57 push edi
00442AAC 8B7D 08 mov edi,dword ptr ss:[ebp+8]
00442AAF 8B75 10 mov esi,dword ptr ss:[ebp+10]
00442AB2 8B5D 0C mov ebx,dword ptr ss:[ebp+C]
00442AB5 8BCE mov ecx,esi
00442AB7 FF75 14 push dword ptr ss:[ebp+14]
00442ABA 68 AD5A4900 push WinRAR1.00495AAD
因为没有发现跳过这个地址的跳转,于是也就没做相关改动,只改了第一处的地址,从结果来看,好象也成功了。这就是我不明白的地方,相关的地址有两处,我只改了一处,为什么结果会成功?
第二个问题:为什么我把0043EC81处的跳转给nop掉之后程序出错?
因为本人刚接触这方面,所以非常多的方面都不懂,还停留在nop,jmp方面,还请大家帮帮忙指点一下,谢谢大家了。
感谢你能读完这篇烂文,菜鸟刚起步,大家帮帮忙:-)
大家都把自己的方法说了,我也会再研究一下.谢谢大家
但是我两个问题大家能帮忙看一下吗?谢谢
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!