声明:
1.只为纪录自己成长历程,高手勿喷
2.您的热心是新手持续发帖的动力
一、单步
1.载入PEID查壳
EZIP v1.0
2.载入OD,一上来就是一个大跳转,F8单步一直走
[Asm] 纯文本查看 复制代码 0040D0BE > $ /E9 19320000 jmp Notepad.004102DC ; //入口点
0040D0C3 . |E9 7C2A0000 jmp Notepad.0040FB44
0040D0C8 $ |E9 19240000 jmp Notepad.0040F4E6
0040D0CD $ |E9 FF230000 jmp Notepad.0040F4D1
0040D0D2 . |E9 1E2E0000 jmp Notepad.0040FEF5
0040D0D7 $ |E9 882E0000 jmp Notepad.0040FF64
0040D0DC $ |E9 2C250000 jmp Notepad.0040F60D
3.基本上这个壳靠F8就可以走完了,除了一个向上跳转的位置在下一行F4,然后继续F8
[Asm] 纯文本查看 复制代码 00410611 |. 83C0 28 |add eax,0x28
00410614 |. 8985 ECFDFFFF |mov [local.133],eax
0041061A |.^ E9 40FFFFFF \jmp Notepad.0041055F ; //向上跳转的下一行F4
0041061F |> FFB5 E8FDFFFF push [local.134]
00410625 |. FF95 D4FCFFFF call [local.203]
0041062B |. 8D85 94FCFFFF lea eax,[local.219]
00410631 |. 50 push eax
4.找到指向OEP的跳转
[Asm] 纯文本查看 复制代码 00410684 |. 5B pop ebx
00410685 |. 8BE5 mov esp,ebp
00410687 |. 5D pop ebp
00410688 |.- FFE0 jmp eax ; //指向OEP的跳转
0041068A |> 5F pop edi
0041068B |. 5E pop esi
0041068C |. 5B pop ebx
0041068D |. C9 leave
5.来到OEP
[Asm] 纯文本查看 复制代码 004010CC 55 push ebp ; //来到OEP
004010CD 8BEC mov ebp,esp
004010CF 83EC 44 sub esp,0x44
004010D2 56 push esi
004010D3 FF15 E4634000 call dword ptr ds:[0x4063E4]
004010D9 8BF0 mov esi,eax
004010DB 8A00 mov al,byte ptr ds:[eax]
004010DD 3C 22 cmp al,0x22
6.脱壳后不能运行,我们需要使用loadPE重建PE表
7.运行查壳
运行OK,查壳:Microsoft Visual C++ v6.0 SPx
二、ESP
1.载入OD,一上来就是一个大跳转,F8单步一直走
[Asm] 纯文本查看 复制代码 0040D0BE > $ /E9 19320000 jmp Notepad.004102DC ; //入口点
0040D0C3 . |E9 7C2A0000 jmp Notepad.0040FB44
0040D0C8 $ |E9 19240000 jmp Notepad.0040F4E6
0040D0CD $ |E9 FF230000 jmp Notepad.0040F4D1
0040D0D2 . |E9 1E2E0000 jmp Notepad.0040FEF5
0040D0D7 $ |E9 882E0000 jmp Notepad.0040FF64
0040D0DC $ |E9 2C250000 jmp Notepad.0040F60D
0040D0E1 $ |E9 AE150000 jmp Notepad.0040E694
0040D0E6 $ |E9 772B0000 jmp Notepad.0040FC62
2.跳转落脚点,落脚点是一个push,push的下一行使用ESP定律,下硬件访问断点,然后SHIFT
+F9运行一次
[Asm] 纯文本查看 复制代码 004102DC /> \55 push ebp ; //落脚点
004102DD |. 8BEC mov ebp,esp ; //这里使用ESP
004102DF |. 81EC 28040000 sub esp,0x428
004102E5 |. 53 push ebx
004102E6 |. 56 push esi
004102E7 |. 57 push edi
004102E8 |. 8D85 94FCFFFF lea eax,[local.219]
004102EE |. 50 push eax
3.来到指向OEP的跳转,再F8一下
[Asm] 纯文本查看 复制代码 00410688 |.- FFE0 jmp eax ; //指向OEP的跳转
0041068A |> 5F pop edi
0041068B |. 5E pop esi
0041068C |. 5B pop ebx
0041068D |. C9 leave
0041068E \. C3 retn
0041068F CC int3
4.来到OEP,脱壳,重建PE表,运行,查壳
[Asm] 纯文本查看 复制代码 004010CC 55 push ebp ; //来到OEP
004010CD 8BEC mov ebp,esp
004010CF 83EC 44 sub esp,0x44
004010D2 56 push esi
004010D3 FF15 E4634000 call dword ptr ds:[0x4063E4]
004010D9 8BF0 mov esi,eax
004010DB 8A00 mov al,byte ptr ds:[eax]
004010DD 3C 22 cmp al,0x22
|