吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 2911|回复: 12

[转载技术] 第四十三章-ACProtect V1.09脱壳(编写脚本修复IAT)

  [复制链接]
Shark恒 发表于 2015-1-20 17:23 | 显示全部楼层 |阅读模式

                  第四十三章-ACProtect V1.09(编写脚本修复IAT)
上一章节,我们介绍了如何定位stolen bytes,本章我们的任务是修复IAT,再次用OD加载UnPackMe_ACProtect1.09,我们可以通过并执行HBP.TXT脚本到达假的OEP处。
image002.jpg
现在我们在壳的入口处,现在我们来利用上一章节编写的脚本定位到OEP处,首先,需要需要给KiUserExceptionDispatcher入口处以及其下方的ZwContinue调用处分别设置断点。
image004.jpg
image006.jpg
image008.jpg
现在我们到了假的OEP处,大家可以修改一下这个脚本让其自动给KiUserExceptionDispatcher入口以及ZwContinue调用处设置断点,并且让其支持输入需要设置硬件断点的地址,但这里我们暂时没有必须修改,这个脚本目前来说已经够用了。
image010.jpg
下面我们来随便定位一个API函数的调用处,单击鼠标右键选择Search for - All intermodular calls选项搜索。
image012.jpg
我们可以看到很多API函数的调用,其中有些IAT项是正常的,显示出了函数名称,但是大部分的IAT项都是经过重定位的,并没有显示函数名称,我们随便选中一个重定向的IAT项,双击鼠标左键。
image014.jpg
image016.jpg
这里我们可以看到CALL的是460E80内存单元中对应的IAT项,我们在数据窗口中定位到该项。
这里我们可以看到很多经过重定向的项,这些项直接就位于壳的区段中,我们来看看区段列表窗口。
image018.jpg
大家应该还记得该壳的入口点也是位于这个区段的,壳的入口点为46B000,也就是说该壳并没有重新创建一个区段用来处理重定向的API函数。
image020.jpg
接下来任务就需要定位修复IAT项的关键跳转(magical jump)了。
下面我们就来通过460ADC这一项来定位关键跳。
首先我们将定位OEP的脚本备份一下。
image022.jpg
image024.jpg
我们将备份过的脚本重命名为OEP.txt,接下来我们通过修改HBP.txt脚本来定位修复IAT的关键跳转。
这里我们将脚本修改为对460ADC这个重定向的IAT项设置硬件写入断点,也就是说断点类型修改为W。
现在我们清除之前设置的硬件断点,重新启动OD。
image026.jpg
执行上面的脚本,不一会儿弹出了是否继续执行脚本的消息框。
image028.jpg
我们可以看到这里对460ADC写入的时候触发了硬件写入断点,我们知道硬件断点是断在下一条指令处,我们来看看前一条指令是什么。
image030.jpg
这里我们可以看到是这条指令将对460ADC地址进行写入,我们来看看EAX的值是多少。
image032.jpg
这里EAX的值为46B492。
image034.jpg
image036.jpg
这里我们在反汇编窗口中定位到46B492这个地址,看看该壳做什么处理。
这里我们看到这个重定向的处理非常简单,首先将常量5BF11A9压入堆栈,接着将该值与793E0502进行异或,接着就RET返回。
异或得到的结果就是API函数的入口地址,我们一起来计算一下。
5BF11A9 XOR 793E0502 = 7C8114AB
计算出来的这个地址就是API函数的入口地址,我们返回到OD中看看。
image038.jpg
我们将堆栈窗口往上拉一点就能看到正确的API函数地址了,下面我们就来看看是不是所有的重定向的IAT项都是这样处理的,先停止脚本。
image040.jpg
我们对部分重定向的IAT项设置内存写入断点,看看会发生什么。
image042.jpg
我们运行起来,当下一个重定向的IAT项被写入的时候断了下来。
image044.jpg
我们定位到重定向的部分,执行异或操作以后可以看到得到的API函数是MulDiv,这么看来修复是有可能的,我们可以看到正常的API地址被保存在了堆栈中,确切点来说是[ESP - 0C]中。
image046.jpg
这里我们可以看到往下都是需要重定向的,到了460BA8,就是正常的IAT项了。
所以我们对460BA8这一项设置内存写入断点。
image048.jpg
运行起来,到了这里。
image050.jpg
我们可以看到对于正常的IAT项,[EBP - 0C]处并不会保存正确的API函数入口地址,所以说有点遗憾,不然我们可以使用一个简单的脚本轻松的修复IAT。
image052.jpg
我们该怎么做呢?我们需要对写入IAT项的指令设置硬件执行断点,当脚本执行到这里的时候,我们判断EAX的值是正常的还是重定向的,如果是重定向的,那么我们就将[ESP + 0C]的值填充到IAT对应的条目中,如果是正常的IAT项的话,我们就不予处理,我们来看看该脚本如何编写。
image054.jpg
以上就是完整的脚本,这里我是在下一行的4743d5处设置的硬件执行断点,因为硬件执行断点当将要执行该条指令的时候就断下来,不同于硬件写入或者访问断点。
这个脚本是基于HBP.txt改写的,首先对IAT项重定向的下一条指令4743d5处设置硬件执行断点。
image056.jpg
这里是ToProcess这个分支,当脚本检测到中断异常,将EIP与4743d5进行比较,如果相等就跳转到ToRepair分支中。
image058.jpg
ToRepair分支,我们首先判断EAX是否为正常,如果被重定向到壳所在区段的话,那么地址是小于500000的,反之,如果EAX的值大于500000,就表示该IAT项是正常的,我们就无须进行修复,回到开始处继续捕获下一次中断。如果EAX是重定向的值的话,我们就使用变量aux2来保存正确的API函数地址,正确的API函数地址保存在[ESP - 0C]中。我们将其写入到EDI指向的IAT项中即可。
下面我们就来执行一下该脚本,试试效果。
重启程序,将之前设置的硬件断点全部清空,接着对KiUserExceptionDispatcher的入口处以及ZwContinue的调用处分别设置断点,然后运行脚本。
image060.jpg
程序运行起来了,我们来看下IAT。
image062.jpg
嘿嘿,我们可以看到IAT项都被修复了。
我们将脚本重命名为IAT.txt。
image064.jpg
下面我们需要定位IAT的起始地址以及IAT的大小。
image066.jpg
这里我们可以看到IAT的起始地址为460818,结束于460F28。
image068.jpg
OEP(RVA) = 271b5
IAT的起始地址(RVA) = 60818
IAT的大小 = 710
这里我们可以用的假的OEP,后面我们可以手工修改。
下一章节,我们来解决AntiDump,敬请关注。

本系列文章汉化版转载看雪论坛

感谢原作者:RicardoNarvaja(西班牙人)
原作者个人主页:http://www.ricardonarvaja.info/

感谢热心翻译的朋友:
1~3章译者:BGCoder
4~58章译者:安于此生

全集配套程序下载地址:
链接: http://pan.baidu.com/s/1eQzTWfo 密码: vytv




评分

参与人数 14HB +15 THX +4 收起 理由
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
Jawon + 1
琉璃天空 + 1
一路走来不容易 + 1
Soul1999 + 1
消逝的过去 + 1
kway + 1
thunderiser + 1
我是好人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
壮志凌云 + 1
jaunic + 2
hnymsh + 2
lies + 1
段易桐 + 1 + 1 好人有好报!你的热心我永远不忘!谢谢!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
hackysh 发表于 2022-2-8 17:13 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
别管我了行 发表于 2022-3-2 03:58 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ghostxu 发表于 2022-4-26 13:00 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
米泔水 发表于 2022-4-26 14:56 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
自力更生吧 发表于 2022-4-26 22:53 | 显示全部楼层


[快捷回复]-软件反汇编逆向分析,软件安全必不可少!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
心意 发表于 2022-4-27 10:28 | 显示全部楼层

[快捷回复]-学破解防逆向,知进攻懂防守!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
weiran324 发表于 2022-4-27 23:01 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
曾经沧海 发表于 2022-10-31 19:52 | 显示全部楼层

爱论坛,爱网友!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
曾经沧海 发表于 2022-11-20 19:32 | 显示全部楼层

谢谢大佬指点!!!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表