zoukankan      html  css  js  c++  java
  • 手脱ASPack v2.12变形壳2

    1.PEID载入

    ASPack v2.12
    

    2.载入OD,跟之前帖子的入口特征相同,都是一个pushad,但是请不要怀疑这是同一个壳,绝对不是,pushad下一行ESP定律下硬件断点,然后shift+F9运行一次

    0057E001 >  60              pushad                            ; //程序入口点
    0057E002    E8 03000000     call memcolla.0057E00A            ; //ESP定律
    0057E007  - E9 EB045D45     jmp 45B4E4F7
    0057E00C    55              push ebp
    0057E00D    C3              retn
    0057E00E    E8 01000000     call memcolla.0057E014
     

    3.ESP落脚点,删除硬件断点继续F8,注意,普通的aspack壳在注释的地方会跳向OEP,但是这个没有

    0057E3B0   /75 08           jnz short memcolla.0057E3BA       ; //程序落脚点
    0057E3B2   |B8 01000000     mov eax,0x1
    0057E3B7   |C2 0C00         retn 0xC
    0057E3BA   68 00104000     push memcolla.00401000
    0057E3BF    C3              retn                              ; //普通壳会在这里跳向OEP
    0057E3C0    8B85 26040000   mov eax,dword ptr ss:[ebp+0x426]
    0057E3C6    8D8D 3B040000   lea ecx,dword ptr ss:[ebp+0x43B]
     

    4.步骤3的retn跳向的位置,到这里继续F8

    00401000    87C0            xchg eax,eax                      ; //跳转的位置
    00401002    FC              cld
    00401003    80EC 00         sub ah,0x0
    00401006    83F1 00         xor ecx,0x0
    00401009    90              nop
     

    5.这是一个近call,F7跟进,然后继续F8就可以到达OEP了,需要注意的是中间有几个向上跳转,记得在下一行F4

    0057D40D    E8 12000000     call memcolla.0057D424            ; //F7
    0057D412    80CA 00         or dl,0x0
    0057D415    50              push eax                          
    0057D416    9C              pushfd
    0057D417    58              pop eax                           
    0057D418    F6C4 01         test ah,0x1
    0057D41B  - 75 FE           jnz short memcolla.0057D41B
     

    6.找到关键跳,F8一下就可以到OEP了

    0057D5A3    61              popad
    0057D5A4    BA F8085000     mov edx,memcolla.005008F8
    0057D5A9  - FFE2            jmp edx                           ; //指向OEP的关键跳
    0057D5AB    0000            add byte ptr ds:[eax],al
    0057D5AD    0000            add byte ptr ds:[eax],al
     

    7.来到OEP,可以脱壳了

    005008F8    55              push ebp                          ; //OEP
    005008F9    8BEC            mov ebp,esp
    005008FB    83C4 F0         add esp,-0x10
    005008FE    53              push ebx                          
    005008FF    56              push esi                          
    00500900    B8 10045000     mov eax,memcolla.00500410
    00500905    E8 665FF0FF     call memcolla.00406870
    0050090A    8B1D 08415000   mov ebx,dword ptr ds:[0x504108]   
    00500910    8B35 9C415000   mov esi,dword ptr ds:[0x50419C] 

    8.运行,查壳

    运行OK,查壳:Borland Delphi 4.0
    
  • 相关阅读:
    C#异常小知识
    Cisco路由器配置学习-ip accounting
    Sublime Text 3预览Markdown
    什么是permit-inside功能
    锐捷双出口
    思科双出口+策略路由+NAT
    github常见操作和常见错误
    网易注册页面知识点
    java,xml等注释删除,正则表达式使用123
    简单多线程是否安全判断
  • 原文地址:https://www.cnblogs.com/JianXu/p/5158373.html
Copyright © 2011-2022 走看看