用PEID查了下,显示ASPack 2.12 -> Alexey Solodovnikov好的开始脱壳,用OD载入,开始哪个提示一定点击否
PS:其实对于ASPACK有一个非常快,非常简单的手动脱壳方法,先卖个关子
载入后,
0040D001 > 60 pushad
0040D002 E8 03000000 call 0040D00A
0040D007 - E9 EB045D45 jmp 459DD4F7
0040D00C 55 push ebp
开头有CALL跟入,对于压缩壳,其实用ESP定律更简单些,但是为了练手,还是单步跟踪,尤其是这种简单的ASPACK壳,直接F8单步跟踪,开头遇到CALL用F7跟入,遇到红色的向上跳的就F4过去,我们来一步一步走,遇到那第二个CALL,F7来到
0040D00A 5D pop ebp ; ASPack_2.0040D007
0040D00B 45 inc ebp
0040D00C 55 push ebp
0040D00D C3 retn
0040D00E E8 01000000 call 0040D014
0040D013 EB 5D jmp short 0040D072
继续跟进那个CALL,来到
0040D014 5D pop ebp ; ASPack_2.0040D013
0040D015 BB EDFFFFFF mov ebx, -13
0040D01A 03DD add ebx, ebp
0040D01C 81EB 00D00000 sub ebx, 0D000
0040D022 83BD 22040000 00 cmp dword ptr [ebp+422], 0
0040D029 899D 22040000 mov dword ptr [ebp+422], ebx
0040D02F 0F85 65030000 jnz 0040D39A
0040D035 8D85 2E040000 lea eax, dword ptr [ebp+42E]
现在我们就一步一步向下走就是了,经过跋山涉水的跟踪,终于来到:
0040D3BA 68 CC104000 push 004010CC
0040D3BF C3 retn
0040D3C0 8B85 26040000 mov eax, dword ptr [ebp+426]
0040D3C6 8D8D 3B040000 lea ecx, dword ptr [ebp+43B]
0040D3CC 51 push ecx
0040D3CD 50 push eax
看到那个RETN了麽F8过去看看
004010CC >/$ 55 push ebp
004010CD |. 8BEC mov ebp, esp
004010CF |. 83EC 44 sub esp, 44
004010D2 |. 56 push esi
004010D3 |. FF15 E4634000 call dword ptr [<&kernel32.GetCommand>; [GetCommandLineA
看到了麽?这就是脱了壳的程序了,我们右键,”ollydunp脱壳调试程序“
然后点DUMP保存即可!!
现在我们用PEID查一下那个保存的程序Microsoft Visual C++ 6.0 SPx Method 1
脱壳成功,都不用IMPREC还原输入表了,不错,嘎嘎
PS:其实对于ASPACK有一个非常快,非常简单的手动脱壳方法,先卖个关子
载入后,
0040D001 > 60 pushad
0040D002 E8 03000000 call 0040D00A
0040D007 - E9 EB045D45 jmp 459DD4F7
0040D00C 55 push ebp
开头有CALL跟入,对于压缩壳,其实用ESP定律更简单些,但是为了练手,还是单步跟踪,尤其是这种简单的ASPACK壳,直接F8单步跟踪,开头遇到CALL用F7跟入,遇到红色的向上跳的就F4过去,我们来一步一步走,遇到那第二个CALL,F7来到
0040D00A 5D pop ebp ; ASPack_2.0040D007
0040D00B 45 inc ebp
0040D00C 55 push ebp
0040D00D C3 retn
0040D00E E8 01000000 call 0040D014
0040D013 EB 5D jmp short 0040D072
继续跟进那个CALL,来到
0040D014 5D pop ebp ; ASPack_2.0040D013
0040D015 BB EDFFFFFF mov ebx, -13
0040D01A 03DD add ebx, ebp
0040D01C 81EB 00D00000 sub ebx, 0D000
0040D022 83BD 22040000 00 cmp dword ptr [ebp+422], 0
0040D029 899D 22040000 mov dword ptr [ebp+422], ebx
0040D02F 0F85 65030000 jnz 0040D39A
0040D035 8D85 2E040000 lea eax, dword ptr [ebp+42E]
现在我们就一步一步向下走就是了,经过跋山涉水的跟踪,终于来到:
0040D3BA 68 CC104000 push 004010CC
0040D3BF C3 retn
0040D3C0 8B85 26040000 mov eax, dword ptr [ebp+426]
0040D3C6 8D8D 3B040000 lea ecx, dword ptr [ebp+43B]
0040D3CC 51 push ecx
0040D3CD 50 push eax
看到那个RETN了麽F8过去看看
004010CC >/$ 55 push ebp
004010CD |. 8BEC mov ebp, esp
004010CF |. 83EC 44 sub esp, 44
004010D2 |. 56 push esi
004010D3 |. FF15 E4634000 call dword ptr [<&kernel32.GetCommand>; [GetCommandLineA
看到了麽?这就是脱了壳的程序了,我们右键,”ollydunp脱壳调试程序“
然后点DUMP保存即可!!
现在我们用PEID查一下那个保存的程序Microsoft Visual C++ 6.0 SPx Method 1
脱壳成功,都不用IMPREC还原输入表了,不错,嘎嘎