没有合适的资源?快使用搜索试试~ 我知道了~
第55章-EXECryptor v2.2.50.a脱壳-Part21
需积分: 0 0 下载量 58 浏览量
2022-08-03
17:03:11
上传
评论
收藏 1015KB PDF 举报
温馨提示
试读
20页
第55章-EXECryptor v2.2.50.a脱壳-Part21
资源详情
资源评论
资源推荐
第五十四章-ExeCryptor v2.2.50.a-Part2
本章我们将编写一个脚本来修复 ExeCryptor 的 IAT。可能很多童鞋一听到脚本这个词就有一种头皮发麻的感觉。(嘿嘿),因为一
般来说人家编写好的脚本通常都比较长,看起来非常复杂的样子,当然会感觉到头皮发麻撒。但是我这里换一种方法,我不是直接拿
一个现成的脚本给大家,而是带着大家从零开始编写这个脚本,逐步添砖加瓦,这样大家接受起来就容易的多。
我的想法很简单,就是遍历 IAT,看哪一个 IAT项被重定向了,如果被重定向了的话,就修复之,我们首先来构建这个脚本的基本框架。
首先我们要定义一个变量,用它来作为 IAT 项的指针。
var table
首先我们将 IAT 的起始地址保存到该 table 变量中
mov table,460818
这里我们就将table这个变量初始化完毕了,接下来我们需要遍历整个 IAT,判断其中哪些项被重定向了,如果被重定向了,就修复之。
如果没有被重定向,就继续遍历下一项。
脚本的基本框架就是这样的:
start:
cmp [table],50000000
ja ToSkip
log table
end
ToSkip:
add table,4
jmp start
这是一个基本框架-遍历 IAT 中的每一项,依次判断 IAT 项中的值是否大于 50000000(一般来说大于 50000000 的话,就属于是 DLL
中的地址,即为正常的 API 函数地址,没有被重定向)如果大于 50000000 的话,就直接跳过该项,继续遍历下一项。
如果是小于等于 50000000 的话,说明是被重定向过的,则进行下面的操作:
log table
end
这里的话我们就需要对重定向的项进行修复了,要对其修复的话,首先我们要知道其实际要调用的 API 函数是什么,这里为了简单
起见,我们只测试第一个待修复的项,所以在定位到实际要调用的 API 函数以后,直接退出循环。
我们首先断到 OEP 处(如何断在 OEP 处,上一章已经给大家介绍过了),然后执行该脚本看看效果。
我们可以看到提示第 7 行有一个不识别的 end 命令,呵呵,写错了,应该是 ret 命令才对,我们将它改过来。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
var table
mov table,460818
start:
cmp [table],50000000
ja ToSkip
log table
ret
ToSkip:
add table,4
jmp start
这里我们已经改过来了,再次执行该脚本看看效果。
我们可以看到这次没有报错,并且第一个重定向的 IAT 项的地址成功被记录到日志中了。
现在我们需要获取重定向的 IAT 项的值了,所以这里我们再定义 content 变量用于临时保存重定向的 IAT 项的值。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
var table
var content
mov table,460818
start:
cmp [table],50000000
ja ToSkip:
log table
mov content,[table]
log content
ret
ToSkip:
add table,4
jmp start
这里添加了 content 这个变量以后,我们就可以把重定向过的 IAT 项的地址以及值都记录到日志中了。
我们可以看到执行完该脚本以后,日志中记录了 460818 这个 IAT 项中的值为 47FCA8,接下来我们需要将 ret 命令去掉,循环遍历所
有项。不知道大家知不知道其实 ODbgScript 这个插件是可以对脚本进行单步跟踪的,以便脚本出错的时候方便我们调试。我们来
看一看这个功能如何使用:
我们选中菜单项 Plugins-ODbgScript-Script Window,打开脚本跟踪窗口。
这里我们可以看到单步跟踪的快捷键为 S,给指定行设置断点的快捷键为 F2,有了这两个命令就足够我们对脚本进行跟踪排错了。
剩余19页未读,继续阅读
一曲歌长安
- 粉丝: 50
- 资源: 302
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0