zoukankan      html  css  js  c++  java
  • 手脱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
     
  • 相关阅读:
    Redis--过期键策略(惰性删除、定期删除)
    Redis--数据库(个数16、键空间、过期字典、过期策略)
    Redis--事件(serverCron)
    ArrayList是如何扩容的?
    Java的四大引用类型
    类加载机制,双亲委派模型及其优点
    GC调优思路
    modcount的作用
    JVM的常见的垃圾收集器
    什么是临界区?如何解决冲突(也就是临界区的调度原则)?
  • 原文地址:https://www.cnblogs.com/JianXu/p/5158384.html
Copyright © 2011-2022 走看看