脱壳_详细_各种方法

1、ESP 定律

  1.1、第10讲

  压栈 --> 数据窗口跟随ESP的值,设置 硬件(软件)访问(写入)断点 --> (shift+)F9

 

2、内存镜像

  2.1、第10讲

  OD“内存映射”界面,第1个".rsrc"节设置 F2断点 --> Shift+F9 --> “内存映射”界面 00401000处设置 F2断点 --> Shift+F9

 

3、模拟跟踪法

  3.1、第10讲. SFX

    OD 选项--> 调试设置 --> SFX选项卡 --> “块方式跟踪真正入口处(不准确)”

    重新载入 --> OD自动开始跟踪 --> 自动跳到OEP

  3.2、第10讲. “tc eip<????????”

    OD 选项--> 调试设置 --> SFX选项卡 --> “停止在自释放器的入口”

    重新载入

    “内存映射”界面 --> 找到"SFX"的那个节 --> 敲入命令“tc eip<0040E000” (ZC: 0040E000 就是 "SFX"的那个节 的"地址") --> OD显示正在跟踪(时间较长,机器也可能变比较卡)

  ZC: tc 命令  应该不止可以跟踪EIP,也可以跟踪ESP等

 

4、最后一次异常法

  4.1、第10讲

    OD 选项--> 调试设置 --> 异常 --> 除了 "忽略在KERNEL32中发生的内存访问异常" 之外,其他所有的"√" 全部去掉。

    重新载入 --> Shift+F9 3次,程序跑飞

    重新载入 --> Shift+F9 2次 --> 堆栈窗口 找 "SE 句柄"(ZC: 对应的异常回调函数指针为0040CCD7) --> 反汇编窗口 Ctrl+G,输入0040CCD7 --> 在转到的地址 下F2断点 --> Shift+F9 --> 取消刚才的F2断点(ZC: 这时程序断在了F2断点处) --> 使用 单步法

  4.2、第16讲

    【500】【02:45】OD重新载入,隐藏OD(OD-->插件-->OD调试隐藏插件-->隐藏OD),SHIFT+F9 到最后一次异常, Shift+F9 2次 程序跑飞。

      【635】【03:31】OD重新载入-->隐藏OD-->Shift+F9 1次 --> 来到这里 --> 堆栈窗口 --> SE 句柄,右键,数据窗口中跟随 --> 数据窗口,右键,内存访问断点 (∵这个壳 对断点检测的比较厉害,一般的断点可能断不下来,∴我们选择内存访问断点)--> Shift+F9 --> 断在这里,下F2断点--> Shift+F9 --> 断在这里,下F2断点 --> Shift+F9 --> 删掉刚才的 内存访问断点 和 2个F2断点 --> 【915】【05:05】给大家看一下,如果忘记删除 内存访问断点的话,会是什么样子的情况(ZC: 应该是如果有相应的异常的话,就执行到 异常处理函数里面去了[异常处理函数/相关的指令 没有被改掉的话]) --> 【975】【05:25】应该是要F4执行到这里,但是程序直接跑到了上面(ZC: 注意看,断在这里 是∵内存访问,而非 异常处理函数执行到这里) --> 【1025】【05:41】清除内存访问断点 --> F4 来到retn处 --> "内存映射"窗口 00401000处 下F2断点 --> Shift+F9 --> 程序 出现(壳代码里面的)提示信息 --> 来到OEP

 

5、单步法

  5.1、第14讲

    【760】【04:13】单步法 (近CALL 就F7跟进,远CALL就F8)(ZC: 那到底 多远的CALL算远CALL?)

    向上跳转 ==> 下一句指令处 F4;向下跳转 ==> F7 / F8

6、

 

100、OD插件脱壳() ==> "重建输入表" 前面的"√" ==> 何时需要保留?何时需要取消?

  100.1、第17课 【1600】【08:52】"重建输入表" 前面的"√"取消

  100.2、第19课 【1285】【07:07】OD插件(OllyDump)脱壳(不√选 "重建输入表")

 

X

 

posted @ 2016-06-23 13:54  DebugSkill  阅读(440)  评论(0编辑  收藏  举报