【破文标题】手脱SoftSentry 2.11 -> 20/20 Software
【破文作者】王者之剑
【作者邮箱】[email]hj2008mt@163.com[/email]
【作者主页】
www.chinapojie.cn
【破解工具】ImportREC,LordPE,OD
【破解平台】XP
【破解声明】这个壳很少见,我也是最近才看到的,感觉很有趣才写下这编破文,如有不对之处还请大侠们纠正,最好是不要用砖头砸我,理解一下偶也是个新手,呵呵!
现在我们开始吧.....
先用PEID查一下,起码要做的,呵呵.
发现是SoftSentry 2.11 -> 20/20 Software,倒,说实在的第一次看到,之前没看到过,但这个壳很好玩的说,呵呵!
再用OD载入吧.下面是入口点.
00439E90 > 55 push ebp
00439E91 8BEC mov ebp, esp
00439E93 83EC 64 sub esp, 64
00439E96 53 push ebx
00439E97 56 push esi
00439E98 57 push edi
00439E99 E9 50000000 jmp 00439EEE
00439E9E 0000 add byte ptr [eax], al
00439EA0 90 nop
00439EA1 9E sahf
00439EA2 0300 add eax, dword ptr [eax]
00439EA4 0000 add byte ptr [eax], al
00439EA6 40 inc eax
00439EA7 00C1 add cl, al
00439EA9 00F8 add al, bh
00439EAB 2101 and dword ptr [ecx], eax
00439EAD 0066 3D add byte ptr [esi+3D], ah
00439EB0 0100 add dword ptr [eax], eax
00439EB2 66:3D 0100 cmp ax, 1
我们F8往下跟吧.
0043A032 /0F85 2E000000 jnz 0043A066
0043A038 |33C0 xor eax, eax
0043A03A |66:A1 322D4400 mov ax, word ptr [442D32]
0043A040 |F6C4 10 test ah, 10
0043A043 |0F84 1D000000 je 0043A066
0043A049 |6A 00 push 0
0043A04B |68 03800000 push 8003
0043A050 |68 11010000 push 111
0043A055 |A1 802C4400 mov eax, dword ptr [442C80]
0043A05A |50 push eax
0043A05B |FF15 94344400 call dword ptr [<&USER32.SendMessageA>; USER32.SendMessageA
0043A061 |E9 05000000 jmp 0043A06B
0043A066 \E8 15060000 call 0043A680
0043A06B 833D 70F14300 0>cmp dword ptr [43F170], 0
0043A072 0F84 16000000 je 0043A08E
0043A078 8B4D B0 mov ecx, dword ptr [ebp-50]
0043A07B E8 402C0000 call 0043CCC0
0043A080 8945 B0 mov dword ptr [ebp-50], eax
0043A083 8B4D B0 mov ecx, dword ptr [ebp-50]
0043A086 E8 F52C0000 call 0043CD80
跟到上面的一个CALL时我们发现程序会运行起来,这样就无法跟下去,那我们就要想办法了,呵呵.我们再来一次.但
是一定要记得刚才是到哪里运行的,要不会错过的,呵呵.
0043A032 /0F85 2E000000 jnz 0043A066
0043A038 |33C0 xor eax, eax
0043A03A |66:A1 322D4400 mov ax, word ptr [442D32]
0043A040 |F6C4 10 test ah, 10
0043A043 |0F84 1D000000 je 0043A066
0043A049 |6A 00 push 0
0043A04B |68 03800000 push 8003
0043A050 |68 11010000 push 111
0043A055 |A1 802C4400 mov eax, dword ptr [442C80]
0043A05A |50 push eax
0043A05B |FF15 94344400 call dword ptr [<&USER32.SendMessageA>; USER32.SendMessageA
0043A061 |E9 05000000 jmp 0043A06B
到上面的位置后我们将下面两处nop掉.再往下跟
0043A032 /0F85 2E000000 jnz 0043A066
0043A043 |0F84 1D000000 je 0043A066
我们NOP后的效果大家看一下是不是这样的:
0043A02F F6C4 C0 test ah, 0C0
0043A032 90 nop
0043A033 90 nop
0043A034 90 nop
0043A035 90 nop
0043A036 90 nop
0043A037 90 nop
0043A038 33C0 xor eax, eax
0043A03A 66:A1 322D4400 mov ax, word ptr [442D32]
0043A040 F6C4 10 test ah, 10
0043A043 90 nop
0043A044 90 nop
0043A045 90 nop
0043A046 90 nop
0043A047 90 nop
0043A048 90 nop
0043A049 6A 00 push 0
0043A04B 68 03800000 push 8003
再我们跟到下面的地方再查找二进制字串符FF D7 6A 00
0043A049 6A 00 push 0
我们查到后可以看到以下代码
0043A3AB FFD7 call edi
0043A3AD 6A 00 push 0
0043A3AF 68 28F34300 push 0043F328 ; ASCII "softSENTRY"
0043A3B4 68 18F34300 push 0043F318 ; ASCII "Failed to run!"
0043A3B9 6A 00 push 0
0043A3BB FF15 84344400 call dword ptr [<&USER32.MessageBoxA>>; USER32.MessageBoxA
0043A3C1 5F pop edi
0043A3C2 5E pop esi
0043A3C3 C2 0400 retn 4
那我们就在
0043A3AB FFD7 call edi
在上面这里下段.
跟进我们这里就到了OEP了,下面的就不用我说了,呵呵!!
00439E90 > 55 push ebp
00439E91 8BEC mov ebp, esp
00439E93 83EC 64 sub esp, 64
00439E96 53 push ebx
00439E97 56 push esi
00439E98 57 push edi
00439E99 E9 50000000 jmp 00439EEE
00439E9E 0000 add byte ptr [eax], al
00439EA0 90 nop
00439EA1 9E sahf
00439EA2 0300 add eax, dword ptr [eax]
00439EA4 0000 add byte ptr [eax], al
00439EA6 40 inc eax
00439EA7 00C1 add cl, al
00439EA9 00F8 add al, bh
00439EAB 2101 and dword ptr [ecx], eax
00439EAD 0066 3D add byte ptr [esi+3D], ah
00439EB0 0100 add dword ptr [eax], eax
00439EB2 66:3D 0100 cmp ax, 1
【破解总结】这个壳不错,很好玩....
很少写破文,写得有问题的地方请大家提示一下,谢谢了!!!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)