一个屏幕抓取工具的破解思路与分析
2009-06-08 16:55:13 来源:WEB开发网我们往上面找,在00467A5C处下断,然后重新载入程序,中断后单步运行,通过分析上面的代码,我们可以得出:
A、00467A6D处跳转不能实现,否则就直接跳向了注册对话框了,我们单步时,通过修改寄存器的ZF标志位,让其没有跳转
B、00467A76处的跳转必须跳,否则不能跳过注册对话框,同样的,通过修改寄存器的ZF标志位,让其实现
然后我们F9运行起程序来,果然没有了注册对话框,不过依然显示为未注册版(UNREGISTED!)
这说明直接改上面的跳转是不是行的了
8、重新载入程序,跟进上面一段代码里的两个CALL
A、call ScreenHu.004027F7,直接来到段尾:
0041C673 84DB test bl,bl
0041C675 74 12 je short ScreenHu.0041C689
0041C677 5E pop esi
0041C678 C705 743B7A00 >mov dword ptr ds:[7A3B74],0
0041C682 33C0 xor eax,eax
0041C684 5B pop ebx
0041C685 83C4 10 add esp,10
0041C688 C3 retn
0041C689 5E pop esi //如果能够跳到这里,必须是正确注册的了
0041C68A B8 01000000 mov eax,1
0041C68F 5B pop ebx
0041C690 83C4 10 add esp,10
我们单步时,会发现我们跳到了这里:0041C678
好了,开始我们的第1 个修改:
0041C678 C705 743B7A00 >mov dword ptr ds:[7A3B74],1
0041C682 B0 01 mov al,1
0041C684 5B pop ebx
0041C685 83C4 10 add esp,10
0041C688 C3 retn
B、call ScreenHu.004019EC
0041ADA0 A1 CC407A00 mov eax,dword ptr ds:[7A40CC]
0041ADA5 8B0D 24287900 mov ecx,dword ptr ds:[792824]
0041ADAB 56 push esi
0041ADAC 50 push eax
0041ADAD 51 push ecx
0041ADAE 33F6 xor esi,esi
0041ADB0 E8 21990E00 call ScreenHu.005046D6
0041ADB5 83C4 08 add esp,8
0041ADB8 85C0 test eax,eax
0041ADBA 75 07 jnz short ScreenHu.0041ADC3
0041ADBC B8 01000000 mov eax,1
0041ADC1 5E pop esi
0041ADC2 C3 retn
这个CALL里的修改更为直接,直接将0041ADBA 处的跳转NOP掉,然后运行起来,OK了!
然后把修改后的程序保存一份!
这样,一个破解过程就完成了,呵呵!!
更多精彩
赞助商链接