脱壳_详细_使用的方法_02

ZC: 需要将 每节课 里面 脱的每种壳 使用了哪些方法都记录下来

 

1、第6课

  基础脱壳教程6:手脱EZIP 壳

  (1)、单步

    (A)、【510】【02:50】入口点是否找错

      【550】【03:03】"d 4064F4"。向上拉,拉到全等于零的哪一个... 最后来到的是地址0x4062E4

      【640】【03:33】importREC 显示的IAT为0x0062E0(ZC: 应该是正确的)

      【750】【04:10】向下翻来到0x406520:6520-62E4=0x23C,importREC显示IAT大小为0x248,显然也是没有问题的

      【923】【05:07】LoadPE-->"重建PE"

      【1078】【05:58】重新来一次--> 先讲第二种方法 再来脱壳

  (2)、ESP定律【1123】【06:13】

    【1217】【06:45】脱壳(用LoadPE来脱)

    【1275】【07:05】importREC 修复

    【1325】【07:20】ZC: 可以运行了,那还要不要用LoadPE进行"重建PE"?这个"重建PE"是在什么情况下使用的?

  有时候可以用重建PE的方法。

 

  补充:

    【33】【00:10】OD插件脱壳

    【75】【00:25】LoadPE-->修正镜像大小 (镜像大小相同,但是不知是否必须做这一步)

    【101】【00:33】importREC 修复

    【155】【00:51】LoadPE-->"重建PE"

 

  ZC: 我把 脱好壳 importREC修复过 能正常运行的 exe,用 LoadPE-->"重建PE" 操作了一下,exe反而不能运行了...

 

// ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ 

2、第7课

  基础脱壳教程7:手脱tElock 0.98b1壳
    1、最后一次异常法  【135】【00:45】

      (1)、OD-->选项-->调试设置-->异常: 除了"忽略在KERNEL32中发生的内存访问异常"保留之外,去掉所有选项前面的"√"

      (2)、(Shift+F9)*17次 程序跑飞

      (3)、OD重新运行程序(Ctrl+F2)--> (Shift+F9)*16次(比 程序跑飞 少一次)-->【335】【01:51】堆栈窗口 ESP+4的地方有一个"SE 句柄" 的那一行--> 反汇编窗口中 转到(Ctrl+G) [堆栈窗口中 列"数值" 所对应的地址处]--> 在 反汇编窗口的这个位置 F2下断--> Shift+F9(OD就断在了这个断点上) --> 取消断点 --> F8单步(使用单步法继续) --> 【610】【03:22】来到OEP

      (4)、【625】【03:28】用OD插件来脱壳

      (5)、【672】【03:42】importREC 修复。他说他的汉化版的importREC无法修复,于是他使用英文原版的"Import RECconstructor v1.6 FINAL (C) 2001-2003 MackT/uCF"

        【773】【04:17】26个无效指针--> 先用等级1来跟踪一下,就修复了一个指针--> 用等级3来修复,发现在这里直接用等级3来修复 irr直接卡死 (用OD插件脱壳出来的程序 用irr的等级3来修复 肯定会卡死掉,估计就是这个软件的BUG吧) (ZC: 应该是 irr加载了OD调试中的程序,才出现这个问题的吧?)

        【915】【05:05】这么做:打开原来的没脱壳的程序,然后用irr去载入这个程序,然后再用 等级3来跟踪一下,这时候它就在跟踪了 就不会死掉(ZC: 我看到现象,貌似也在假死的嘛),等了一会 修复完毕,发现还有5个无法修复,直接剪切掉

        【1093】【06:03】脱壳后的程序 可以运行了

        ZC: 我观察,他的两个方式 的唯一差别就是: OD正在调试被加壳程序,且 程序处于"暂定状态"
    2、模拟跟踪【1060】【07:00】

      使用模拟跟踪法的前提是,程序没有 "SEH安装",但是 我们刚才看到 这个程序有很多个"SEH安装",理论上是 没法使用 模拟跟踪法 了,但是我们发现 17次(Shift+F9)之后 程序跑飞,也就是说 (Shift+F9)*16次之后 程序就没有"SEH安装"了

      【1400】【07:47】尝试一下:(Shift+F9)*16次--> 用最后一次异常法使程序断在 第16次的异常的回调函数中 --> 【1500】【08:20】此时使用 模拟跟踪法:

        "内存映射"窗口 --> 找到 SFX 的那个节(这个节的"地址"为0042C000) --> 在命令行输入"tc eip<0042C000" 回车 --> 发现 OD正在"跟踪",这个跟踪需要点时间 大家耐心点-->【1610】【08:55】直接跳到OEP
    3、两次内存镜像【1665】【09:13】

      OD "内存映射"窗口 --> 第1个".rsrc"节,F2,Shift+F9,断下--> 再次 "内存映射"窗口,找到"地址"为00401000的地方 (ZC: 我估计是他看到 ".rsrc"节的断点还在,于是想到 异常没有设置断在了异常里面了)

      【1750】【09:42】将 异常设置中的 "忽略在KERNEL32中发生的内存访问异常"和"忽略(传递到程序)以下异常情况" 中的选项全部√上

      【1775】【09:50】OD "内存映射"窗口 --> 第1个".rsrc"节,F2,Shift+F9,断下--> 再次 "内存映射"窗口(ZC: 此时看到".rsrc"节的断点已经没有了),找到"地址"为00401000的地方,F2,Shift+F9 --> 直接跳到OEP
  重点还是修复
  等级3跟踪。

 

3、第8课

  基础脱壳教程8:手脱exe32pack壳

  1、ESP定律

  2、下断:BP IsDebuggerPresent
  运行,取消断点
  ALT+F9
  计算ss+edi
  转到OEP!

 

  【565】【01:55】用OD插件脱,发现 可能修复完之后还是不能运行。就用LoadPE来脱一下

 

4、第9课

  基础脱壳教程9:脱WinUpack加的壳

  加条件断点的方法。

 

  【170】【00:55】单步法

  【310】【01:43】这个软件 以前用它脱过壳,知道 入口点就是 0x0040A41E。但是这里 跳转没有实现,【400】【02:13】强行让它(跳转)实现(改ZF标识),来到 入口点,LoadPE脱壳,无法运行,irr修复(0个模块,0个输入函数) 根本无法修复

 

  【710】【03:57】又来到这里,其实这里已经在进行 输入表的重建工作了。... ... 【940】【05:13】当eax==0的时候,这个跳转实现,∴ 我们在这一行下一个条件断点:反汇编窗口-->右键-->断点-->条件:“eax==0” ---> F9

 

5、第10课

  基础脱壳教程10:脱壳的基本思路及小结
  壳的分类:压缩壳、加密壳
  脱壳的基本方法:
  1、单步
  2、ESP定律
  3、内存镜像
  4、模拟跟踪(2类)
    1) SFX跟踪
    2) tc eip<XXXX
  5、最后一次异常
  6、特殊  【660】【03:40】

 

  【518】【02:52】什么叫不脱壳破解:并不是说不用脱了,而是到达OEP之后,然后 直接去分析 直接去破解

  【730】【04:03】练习一下

    【815】【04:32】当拿到一个壳,毫无思路的时候,都可以使用 单步法 来跟

      【893】【0457】这里 可以使用 ESP定律 了

    【1035】【05:45】脱壳,2种方法:OD插件;LoadPE

    【1068】【05:55】LoadPE脱壳,首先 修正镜像大小,当然 一些压缩壳 修不修正都无所谓,加密壳 必须修正。我们习惯上还是都修正一下,免得出现错误 --> 完整转存

      【1138】【06:18】ImportREC 修复

    【1222】【06:47】用OD插件来脱 --> ImportREC 修复

 

  【1418】【07:52】脱壳 Pe Pcak 1.0,“pepack 1.0.exe”

    【1780】【09:53】如果发现 ImportREC剪切指针之后 程序无法运行,可以尝试 用等级3 跟踪,还是不行 则尝试 手动查找 IAT

    【1865】【10:22】用第2中方法:内存镜像法来脱壳

 

  【2000】【11:05】脱壳 JDPack 1.x

    【2075】【11:32】模拟跟踪法(SFX) 

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

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

      【2160】【11:59】OD插件脱壳

    【2292】【12:43】另外一种 模拟跟踪法

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

      重新载入

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

 

  【2435】【13:30】脱壳 PEncrypt 4.0 Gamma

    【2488】【13:48】我们运行一下程序看看,(程序在OD中)能够运行 (ZC: 会不会有这种情况,程序平时能运行,用OD载入后 不能运行?应该可能会,可能是它检测到了调试器)

    【2523】【14:00】内存镜像法 

      【2680】【14:53】单步法,遵循规则:向上跳转 不能让它实现,跑飞的CALL 要跟进去

    【2740】【15:13】用 最后一次异常法

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

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

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

    【2990】【16:35】OD插件脱壳 / LoadPE脱壳+ImportREC修复 ,得到的程序都不能运行

    【3120】【17:18】尝试 LoadPE的“重建 PE” --> 是行的通的

 

 第2部分  “录像2.exe”

  【110】【00:21】脱壳 fsg 1.33

    【175】【00:35】ESP定律法

    【578】【01:55】条件断点:反汇编窗口 某条指令上 右击-->条件,输入“[esi]==0”

 

  【1250】fsg1.33.exe 用 PEiD的插件来脱壳,各种插件 自己搜集,【1358】【04:37】插件“Unpacker for FSG v1.33” 【1480】【04:55】脱壳成功

X

 

posted @ 2016-06-13 14:17  DebugSkill  阅读(586)  评论(0编辑  收藏  举报