上一段时间,朋友的单位购买了一个正版软件,德X导播,是带狗运行,尝试破之。
安装后,执行文件为XXCam.exe,启动是弹出,没有找到加密狗的消息框后点击程序退出。
peid 测壳为ASProtect v1.23 RC1 *,使用ASProtect脱壳工具,unpack,然后kill后生成EZCam_u.exe。启动一下XXCam_u.exe,能正常启动弹出没发现狗的提示。习惯搜字符串参考,用C32ASM加载,没有发现加密狗等,发现有试用次数等提示,看来还有次数的限制。直接调用OD,查找字符串查看参考。
直接F9运行,弹出没发现狗的消息框,F12暂停,然后找到Alt+K显示堆栈,找到调用USER32.MessageBoxA一项,右击执行到返回,然后点击消息框的确定后,返回到USER32的领空,这时再按Alt+F9返回到用户代码的领空
004060D0 . 64:A1 0000000>mov eax, dword ptr fs:[0]
004060D6 . 6A FF push -1
004060D8 . 68 2B4F4100 push 00414F2B
004060DD . 50 push eax
004060DE . B8 882B0000 mov eax, 2B88
004060E3 . 64:8925 00000>mov dword ptr fs:[0], esp
004060EA . E8 71E40000 call 00414560
004060EF . 56 push esi
004060F0 . 8BF1 mov esi, ecx
004060F2 . E8 39860000 call 0040E730
004060F7 . E8 A4820000 call 0040E3A0
004060FC . 84C0 test al, al
004060FE . 75 13 jnz short 00406113
00406100 . 6A 00 push 0
00406102 . 6A 00 push 0
00406104 . 68 34B44100 push 0041B434
00406109 . E8 DAE00000 call 004141E8 ; MessageBox,没狗
0040610E . E9 C7040000 jmp 004065DA
00406113 > E8 D8850000 call 0040E6F0
00406118 . 84C0 test al, al
可以看到,如果4060F7及上面的CALL可能是验证没狗的,在004060FE下断点,重新加载OD,原以为更改004060FE的JNZ,直接改为jmp 00406113就行,那知F9后,直接弹框,没拦到下来,原来的断点已被清除,那肯定又是JNZ那被执行了,这时直接将它改为JMP,然后保存为另一个份1.EXE,退出OD,重新加载1.EXE。
:004060FE:: 75 13 JNZ SHORT 00406113 \:JMPDOWN
::00406100:: 6A 00 PUSH 0
::00406102:: 6A 00 PUSH 0
::00406104:: 68 34B44100 PUSH 41B434 \->: 没有找到加密狗
::00406109:: E8 DAE00000 CALL 004141E8 \:JMPDOWN
::0040610E:: E9 C7040000 JMP 004065DA \:JMPDOWN
::00406113:: E8 D8850000 CALL 0040E6F0 \:JMPDOWN\:BYJMP JmpBy:004060FE,
::00406118:: 84C0 TEST AL,AL
::0040611A:: 75 38 JNZ SHORT 00406154 \:JMPDOWN
::0040611C:: E8 4F850000 CALL 0040E670 \:JMPDOWN
::00406121:: 84C0 TEST AL,AL
::00406123:: 75 13 JNZ SHORT 00406138 \:JMPDOWN
::00406125:: 6A 00 PUSH 0
::00406127:: 6A 00 PUSH 0
::00406129:: 68 20B44100 PUSH 41B420 \->: 试用次数已达到限制
::0040612E:: E8 B5E00000 CALL 004141E8 \:JMPDOWN
::00406133:: E9 A2040000 JMP 004065DA \:JMPDOWN
::00406138:: E8 33830000 CALL 0040E470 \:JMPDOWN\:BYJMP JmpBy:00406123,
::0040613D:: 84C0 TEST AL,AL
::0040613F:: 75 13 JNZ SHORT 00406154 \:JMPDOWN
::00406141:: 6A 00 PUSH 0
::00406143:: 6A 00 PUSH 0
::00406145:: 68 14B44100 PUSH 41B414 \->: 试用已到期
::0040614A:: E8 99E00000 CALL 004141E8 \:JMPDOWN
::0040614F:: E9 86040000 JMP 004065DA \:JMPDOWN
::00406154:: 68 091D0000 PUSH 1D09 \:BYJMP JmpBy:0040611A,0040613F,
::00406159:: E8 72820000 CALL 0040E3D0 \:JMPDOWN
::0040615E:: 83C4 04 ADD ESP,4
::00406161:: 84C0 TEST AL,AL
::00406163:: 75 13 JNZ SHORT 00406178 \:JMPDOWN
::00406165:: 6A 00 PUSH 0
::00406167:: 6A 00 PUSH 0
::00406169:: 68 FCB34100 PUSH 41B3FC \->: 本软件未被授权无法启动
::0040616E:: E8 75E00000 CALL 004141E8 \:JMPDOWN
::00406173:: E9 62040000 JMP 004065DA \:JMPDOWN
再向上翻细看结跳转结构,发现三处跳转
::004060FE:: 75 13 JNZ SHORT 00406113 为没找到加密狗
::0040611A:: 75 38 JNZ SHORT 00406154 为试用次数已达到限制
::00406163:: 75 13 JNZ SHORT 00406178 本软件未被授权无法启动
直接将这三者改为jmp,另存一份,启动,能成功启动到正常的软件画面,用了几天,感觉正常。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课