对于我这个新手来说判断自效验方式是很困难的,又想多提问多学习,但无奈现在这里每天新手只能发2个帖子,所以我要珍惜这个地方!
我现在有一个很小的软件,带壳文件680KB 脱壳后 1.8M
用PE查壳为:ASPack 2.12 -> Alexey Solodovnikov
应该很简单的一个壳,于是选择用ASPack 2.12 脱壳机脱壳!
脱壳以后PE查为: Borland Delphi 6.0 - 7.0 是用Delphi 6.0 - 7.0编写的应该算脱壳成功了!
但脱壳后的文件虽然运行正常但会在一定时间的时候自动关闭 该时间为60秒
一个哥哥建议下断点 bp SetTimer 调试,于是我就按照这个去做了!
用OD载入后在这里↓
0054602C >/$ 55 push ebp
0054602D |. 8BEC mov ebp, esp
0054602F |. 83C4 EC add esp, -14
00546032 |. 33C0 xor eax, eax
00546034 |. 8945 EC mov dword ptr [ebp-14], eax
00546037 |. B8 A45C5400 mov eax, 00545CA4
0054603C |. E8 3B09ECFF call 0040697C
00546041 |. 33C0 xor eax, eax
00546043 |. 55 push ebp
00546044 |. 68 F5605400 push 005460F5
00546049 |. 64:FF30 push dword ptr fs:[eax]
0054604C |. 64:8920 mov dword ptr fs:[eax], esp
0054604F |. A1 7CB15400 mov eax, dword ptr [54B17C]
00546054 |. 8B00 mov eax, dword ptr [eax]
00546056 |. E8 8D88F4FF call 0048E8E8
0054605B |. A1 7CB15400 mov eax, dword ptr [54B17C]
00546060 |. 8B00 mov eax, dword ptr [eax]
用 bp SetTimer 下断↓
77D18C2E > B8 1E120000 mov eax, 121E ;←断在这里了
77D18C33 BA 0003FE7F mov edx, 7FFE0300
77D18C38 FF12 call dword ptr [edx]
77D18C3A C2 1000 retn 10
77D18C3D 90 nop
77D18C3E 90 nop
77D18C3F 90 nop
77D18C40 90 nop
77D18C41 90 nop
77D18C42 > B8 C5110000 mov eax, 11C5
77D18C47 BA 0003FE7F mov edx, 7FFE0300
77D18C4C FF12 call dword ptr [edx]
77D18C4E C2 0800 retn 8
77D18C51 90 nop
77D18C52 90 nop
77D18C53 90 nop
77D18C54 90 nop
77D18C55 90 nop
77D18C56 8BFF mov edi, edi
77D18C58 55 push ebp
77D18C59 8BEC mov ebp, esp
77D18C5B 8B4D 08 mov ecx, dword ptr [ebp+8]
77D18C5E B8 0A800000 mov eax, 800A
77D18C63 3BC8 cmp ecx, eax
77D18C65 0F87 D74B0000 ja 77D1D842
77D18C6B 0F84 65360000 je 77D1C2D6
77D18C71 6A 04 push 4
77D18C73 58 pop eax
77D18C74 3BC8 cmp ecx, eax
77D18C76 0F82 BA330000 jb 77D1C036
返回领空到这里↓
00438371 |. 85C0 test eax, eax
00438373 |. 75 21 jnz short 00438396
00438375 |. 8D55 F8 lea edx, dword ptr [ebp-8]
00438378 |. A1 04B55400 mov eax, dword ptr [54B504]
0043837D |. E8 42E3FCFF call 004066C4
00438382 |. 8B4D F8 mov ecx, dword ptr [ebp-8]
00438385 |. B2 01 mov dl, 1
00438387 |. A1 A8874100 mov eax, dword ptr [4187A8]
0043838C |. E8 0750FDFF call 0040D398
00438391 |. E8 96BDFCFF call 0040412C
00438396 |> 33C0 xor eax, eax
00438398 |. 5A pop edx
00438399 |. 59 pop ecx
0043839A |. 59 pop ecx
0043839B |. 64:8910 mov dword ptr fs:[eax], edx
0043839E |. 68 B3834300 push 004383B3
004383A3 |> 8D45 F8 lea eax, dword ptr [ebp-8]
004383A6 |. E8 45C3FCFF call 004046F0
004383AB \. C3 retn
004383AC .^ E9 43BDFCFF jmp 004040F4
004383B1 .^ EB F0 jmp short 004383A3
004383B3 . 59 pop ecx
004383B4 . 59 pop ecx
004383B5 . 5D pop ebp
004383B6 . C3 retn
004383B7 90 nop
向上拉查找跳↓
00438325 |. 68 AC834300 push 004383AC
0043832A |. 64:FF30 push dword ptr fs:[eax]
0043832D |. 64:8920 mov dword ptr fs:[eax], esp
00438330 |. 6A 01 push 1 ; /TimerID = 1
00438332 |. 8B45 FC mov eax, dword ptr [ebp-4] ; |
00438335 |. 8B40 34 mov eax, dword ptr [eax+34] ; |
00438338 |. 50 push eax ; |hWnd
00438339 |. E8 32F1FCFF call <jmp.&user32.KillTimer> ; \KillTimer
0043833E |. 8B45 FC mov eax, dword ptr [ebp-4]
00438341 |. 8378 30 00 cmp dword ptr [eax+30], 0
00438345 |. 74 4F je short 00438396
00438347 |. 8B45 FC mov eax, dword ptr [ebp-4]
0043834A |. 8078 40 00 cmp byte ptr [eax+40], 0
0043834E |. 74 46 je short 00438396
00438350 |. 8B45 FC mov eax, dword ptr [ebp-4]
00438353 |. 66:8378 3A 00 cmp word ptr [eax+3A], 0
00438358 |. 74 3C je short 00438396
0043835A |. 6A 00 push 0 ; /Timerproc = NULL
0043835C |. 8B45 FC mov eax, dword ptr [ebp-4] ; |
0043835F |. 8B40 30 mov eax, dword ptr [eax+30] ; |
00438362 |. 50 push eax ; |Timeout
00438363 |. 6A 01 push 1 ; |TimerID = 1
00438365 |. 8B45 FC mov eax, dword ptr [ebp-4] ; |
00438368 |. 8B40 34 mov eax, dword ptr [eax+34] ; |
0043836B |. 50 push eax ; |hWnd
0043836C |. E8 5FF2FCFF call <jmp.&user32.SetTimer> ; \SetTimer
00438371 |. 85C0 test eax, eax
00438373 |. 75 21 jnz short 00438396
00438375 |. 8D55 F8 lea edx, dword ptr [ebp-8]
00438378 |. A1 04B55400 mov eax, dword ptr [54B504]
将 00438358 |. 74 3C je short 00438396
改为 00438358 |. 74 3C jMP short 00438396
保存后的文件可以打开60秒也不关闭但无法使用了
我在想,它不应该是打开文件后创建了定时器了吧,如果有时间限制为什么没有脱壳的就一点问题都没有,脱壳的就60秒自动关闭呢,究竟是脱壳脱坏了还是汇编的不正确呢,还是还有其他自效验,我应该如何下手呢?
新手每天的帖子只能发2个,我也知道哥哥姐姐们也很忙,但还是恳求您们在百忙之中高抬贵手,教教我这个刚起步的新手,非常感激!
感谢 卡卡哥哥对我的帮助和支持,虽然问题没有解决 但您在那么忙的情况下还为我解答问题已经很可贵了,真的谢谢您!!
有愿意帮助我的哥哥姐姐请留下QQ 我会象您请教 或+我的QQ 20001015
最后祝大家工作顺利 事业有成!!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)