目录 Table of Contents
基础脱壳教程7:手脱tElock 0.98b1壳
1. 最后一次异常法
OD 载入, 发现一开始就是个向上的跳转
先 调试设置
把所有的异常去掉
然后 shift+F9 看看多少次之后程序会跑飞
3、问异常法脱壳去掉忽略异常后怎么无法暂停。
解答:OD插件--StrongOD--Options--Skip Some Exceptions选项取消,重启OD再试试。
发现 17 次之后程序跑飞
然后我们运行 16 次
然后看堆栈窗口, 找到有 SE句柄
就是 SE处理程序
的这个 数据
然后再Ctrl+G
, 输入SW句柄
前的地址
然后下断点, shift+F9, 取消断点, 接着单步跟到 OEP.
但是我自己脱壳的时候发现, 最后单步跟踪会出问题, 莫名其妙跳不过循环......
我们用 OD 插件脱壳
发现无法运行
ximo 用汉化版的 ImportREC 发现无法修复, 于是他用英文原版修复
下面是他用英文版的步骤 :
IAT AutoSearch
> Get Import
> Show Invalid
, 发现很多无效的函数
首先右键 Trace Level 1(Disasm)
, 发现无法跟踪
然后用 Trace Level3(Trap Flag)
, 发现软件挂掉未响应
用 OD 的进程的话会死掉, 估计是软件 bug
我们打开原来那个需要脱壳的程序
然后再用 ImportREC 载入, 输入 OEP, 自动查找 IAT
, 获取输入表
, 显示无效函数
然后我们再用等级 3 跟踪一下, 这时候程序开始跟踪了
等它修复完, 显示无效函数
发现还有 5 个无效函数无法修复, 现在我们直接将其 剪切
修复转储
后发现可以运行, 查壳发现已经脱壳.
2. 模拟跟踪
使用模拟跟踪法的前提是, 程序没有 SEH 暗桩
SEH暗桩
请问下暗桩的原理是什么
但是我们刚才已经看到了这个程序有着许许多多的 SEH 暗桩, 理论上是无法使用模拟跟踪法了
但是, 刚才发现 shift+F9 17 次之后程序跑飞, 也就是 shift+F9 16 次之后程序就能运行了, 就说明 shift+F9 16 次之后程序就没有暗桩了
既然如此, 我们应该就可以用模拟跟踪法了吧 ?
首先我们 shift+F9 16 次, 再次找到 SE句柄
, 转到
, 下断点
接着我们模拟跟踪法试一下, 找到内存 alt+M, 找到包含 SFX 的这一项
然后命令行输入 tc eip<0042c000
, 0042C000 是 SFX 这一行的地址
回车发现 OD 正在跟踪, 然后直接跳到 OEP.
3. 两次内存镜像
alt+M 找到内存, 找到程序段第一个 .rsrc 下断
再次 alt+M 找到内存, 找到第一个 .text 下断
运行直接跳到 OEP.
重点还是修复
等级3跟踪。