- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四十三章-ACProtect V1.09 (编写脚本
修复IAT)
上一章节,我们介绍了如何定位stolen by
tes,本章我们的任务是修复IAT,再次用OD
加载UnPackMe_ACProtect1.09,我们可以
通过并执行HBP.TXT脚本到达假的OEP处。
现在我们在壳的入口处,现在我们来利用
上一章节编写的脚本定位到OEP处,首先,
需要需要给KiUserExceptionDispatcher
入口处以及其下方的ZwContinue调用处分
别设置断点。
现在我们到了假的OEP处,大家可以修改一
下这个脚本让其自动给KiUserExceptionD
ispatcher入口以及ZwContinue调用处设
置断点,并且让其支持输入需要设置硬件
断点的地址,但这里我们暂时没有必须修
改,这个脚本 目前来说已经够用了。
下面我们来随便定位一个API函数的调用
处,单击鼠标右键选择Search for - All
intermodular calls选项搜索。
我们可以看到很多API函数的调用,其中有
些IAT项是正常的,显示出了函数名称,但
是大部分的IAT项都是经过重定位的,并没
有显示函数名称,我们随便选中一个重定
向的IAT项,双击鼠标左键。
这里我们可以看到CALL的是460E80内存单
元中对应的IAT项,我们在数据窗口中定位
到该项。
这里我们可以看到很多经过重定向的项,
这些项直接就位于壳的区段中,我们来看
看区段列表窗口。
大家应该还记得该壳的入口点也是位于这
个区段的,壳的入口点为46B000,也就是说
该壳并没有重新创建一个区段用来处理重
定向的API函数。
接下来任务就需要定位修复IAT项的关键
跳转 (magical jump)了。
下面我们就来通过460ADC这一项来定位关
键跳。
首先我们将定位OEP的脚本备份一下。
我们将备份过的脚本重命名为OEP.txt,接
下来我们通过修改HBP.txt脚本来定位修
复IAT的关键跳转。
这里我们将脚本修改为对460ADC这个重定
向的IAT项设置硬件写入断点,也就是说断
点类型修改为W。
现在我们清除之前设置的硬件断点,重新
启动OD。
执行上面的脚本,不一会儿弹出了是否继
续执行脚本的消息框。
我们可以看到这里对460ADC写入的时候触
发了硬件写入断点,我们知道硬件断点是
断在下一条指令处,我们来看看前一条指
令是什么。
这里我们可以看到是这条指令将对460ADC
地址进行写入,我们来看看EAX的值是多少
。
这里EAX的值为46B492。
这里我们在反汇编窗口中定位到46B492这
个地址,看看该壳做什么处理。
这里我们看到这个重定向的处理非常简单
,首先将常量5BF11A9压入堆栈,接着将该
值与793E0502进行异或,接着就RET返回。
异或得到的结果就是API函数的入口地址,
我们一起来计算一下。
5BF11A9 XOR 793E0502 7C8114AB
计算出来的这个地址就是API函数的入口
地址,我们返回到OD中看看。
我们将堆栈窗口往上拉一点就能看到正确
的API函数地址了,下面我们就来看看是不
是所有的重定向的IAT项都是这样处理的,
先停止脚本。
我们对部分重定向的IAT项设置内存写入
断点,看看会发生什么。
我们运行起来,当下一个重定向的IAT项被
写入的时候断了下来。
我们定位到重定向的部分,执行异或操作
以后可以看到得到的API函数是MulDiv,这
么看来修复是有可能的,我们可以看到正
常的API地址被保存在了堆栈中,确切点来
说是[ESP - 0C]中。
这里我们可以看到往下都是需要重定向的
,到了460BA8,就是正常的IAT项了。
所以我们对460BA8这一项设置内存写入断
点。
运行起来,到了这里。
我们可以看到对于正常的IAT项,[EBP - 0
C]处并不会保存正确的API函数入口地址,
所以说有点遗憾,不然我们可以使用一个
简单的脚本轻松的修复IAT。
我们该怎么做呢?我们需要对写入IAT项的
指令设置硬件执行断点,当脚本执行到这
里的时候,我们判断EAX的值是正常的还是
重定向的,如果是重定向的,那么我们就将
[ESP + 0C]的值填充到IAT对应的条 目中,
如果是正常的IAT项的话,我们就不予处理
,我们来看看该脚本如何编写。
以上就是完整的脚本,这里我是在下一行
的4743d5处设置的硬件执行断点,因为硬
件执行断点当将要执
您可能关注的文档
- 糖尿病教育-01-糖尿病基础知识.pptx
- 糖尿病教育-02-从关键指标看糖尿病的诊断与治疗.pptx
- 糖尿病教育-05-糖尿病降糖药物的选择.ppt
- 糖尿病教育-08-HbA1c测试介绍.pptx
- 糖尿病教育-09-糖尿病与并发症.pptx
- 糖尿病教育-11-关注下肢血管病变和糖尿病足.pptx
- 糖尿病教育-12-β细胞功能知多少.pptx
- 糖尿病教育-16-体重控制.pptx
- 糖尿病教育-17-肥胖糖尿病患者的治疗与管理.pptx
- 人工神经元网络模型.pptx
- 使用OllyDbg从零开始Cracking-44第四十四章-ACProtect V1.pdf
- 使用OllyDbg从零开始Cracking-45第四十五章-ReCrypt v0.pdf
- 使用OllyDbg从零开始Cracking-46第四十六章-Patrick的CrackMe-Part1.pdf
- 使用OllyDbg从零开始Cracking-47第四十七章-Patrick的CrackMe-Part2.pdf
- 使用OllyDbg从零开始Cracking-48第四十八章-PeSpin V1.3.pdf
- 使用OllyDbg从零开始Cracking-49第四十九章-PeSpin V1.3.pdf
- 使用OllyDbg从零开始Cracking-50第五十章-再谈ReCrypt v.0.pdf
- 使用OllyDbg从零开始Cracking-54第五十四章-EXECryptor v2.2.50.pdf
- 使用OllyDbg从零开始Cracking-55第五十五章-ExeCryptor v2.2.50.pdf
- 使用OllyDbg从零开始Cracking-56第五十六章-EXECryptor v2.2.50.pdf
原创力文档


文档评论(0)