手脱EZIP v1.0

一、单步

1.载入PEID查壳

EZIP v1.0

2.载入OD,一上来就是一个大跳转,F8单步一直走

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

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的跳转

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

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单步一直走

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运行一次

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一下

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表,运行,查壳

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

 

 
posted @ 2015-11-14 15:52  许忠慧  阅读(287)  评论(0编辑  收藏  举报