zoukankan      html  css  js  c++  java
  • ESP定律脱壳

       ESP定律是比较常用的脱壳方式,作为新手用的也比较多简单写一下我的看法。

      esp定律的使用过程大致为:

        1.开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色),并且只有sp和ip为红色。

        

        2.Command窗口中输入dd 0012FFA4 后回车,跟随esp寄存器后的地址。

        3.选中下断的地址,断点--->硬件访--->WORD断点

        4.按一下F9运行程序,直接来到了跳转处,按下F8,到达程序OEP(程序入口)

      花了很长时间理解了一下原理,简单谈一下,可能有错。

    我们把壳理解为一个对程序进行压缩和解压的子程序,相当于调用call指令:call xxxx,call指令遵循堆栈平衡,所以esp作为堆栈指针,程序前后入栈和出栈必须相同。

    可刚开始的程序:

    0040D000  60 pushad //注意这里ESP=0012FFC4(入栈)

    0040D001 E8 00000000 call ASPACK.0040D006 //ESP=0012FFA4
    PUSHAD就是把所有寄存器压栈!我们在到壳的最后看看:
    代码:
    0040D558 61 popad //ESP=0012FFA4(出栈)
    0040D559 75 08 jnz short ASPACK.0040D563 //注意这里ESP=0012FFC4

    我们在0012ffa4处设置下物理断点,壳在出栈时调用ESP=0012FFC4是截断。按下f8到达程序入口。

    适用范围:

    几乎全部的压缩壳,部分加密壳。只要是在JMP到OEP后,ESP=0012FFC4的壳,理论上我们都可以使用

      

  • 相关阅读:
    vant 移动helloworld
    ts
    study vant
    uniapp 上传图片
    electron
    1
    测试vue模板
    [Java] Spring_1700_Spring_DataSource
    [Java] Spring_1600_AOP_XML
    [Java] Spring_1500_AOP_Annotation
  • 原文地址:https://www.cnblogs.com/hatkids/p/8886325.html
Copyright © 2011-2022 走看看