首页
社区
课程
招聘
[原创][分享]dll 手动脱 aspack 壳输入表(IAT)寻找的一个小技巧
2017-11-4 11:57 5862

[原创][分享]dll 手动脱 aspack 壳输入表(IAT)寻找的一个小技巧

xhK 活跃值
3
2017-11-4 11:57
5862
aspack dll脱壳技巧,参见 这里
里面输入表(IAT)是通过函数调用查找的,也是一种不错的方法,我这里再介绍一种自己的方法。
aspack 是压缩壳,压缩壳一般主要目的在于压缩,壳在代码还原后,一般都会还原输入表;那么我们按照PE结构中的区块中去查看下输入表的区块,然后在OD中,从dll的这块内存中找,应该就可以找到输入表。
下面详细介绍一下步骤了。

1、用OD载入要脱壳的autoupdate.dll, 然后按照那篇帖子说的,找到重定位表处理模块,断点找重定位表。如下图,重定位表的rva:002E8000。

然后,在00C11243处下断点,同时将00C1128处,破坏重定位表的指令,用NOP填充,如下图。

然后F9运行到断点00C11243处,这里的ESI里面(00B85CBC)就是重定位表的结束地址。

到这里,查看模块的基址为00870000,可以计算重定位表的大小为:
00B85CBC - 00870000 -  002E8000 = 2DCBC

2、用那篇文章的方法,运行到真正的OEP(00B397C8 )后,用LordPE dump出脱壳后的dumped.dll.
   OEP 的rva为: 00B397C8-00870000=2C97C8
3. 本文的重头戏,输入表的寻找与恢复。
用PeID查看autoupadte的输入表的rva和大小。如下图

回到OD中,拿模块的基址(00870000)加上输入表的rva就是输入表所在区块的地址(00B53000)
在OD的数据窗口中,Ctrl+G 然后输入00B53000 查看输入表区块内存。


这里没有看到什么函数,都是模块内的函数,我们继续向下滚动,碰碰运气看,反正我们又1000h大小的内存要看呢。
(来啊,反正有大把时光呐。。。。)

看到了没,希望来了,00B53230  7C9313B1  ntdll.RtlDeleteCriticalSection
一直向下滚动,知道没有类似的函数出现为止:


到这里,我们可以知道输入表的结束地址为:00B53CA0  
那么输入表的rva : 00B53230-00870000=2E3230 大小: 00B53CA0-00B53230=A70

此时,要打开ImportRec(去掉使用磁盘PE头的选项)来重建dumped.dll的输入表。

填入IAT的信息后,点击获取输入表按钮,然后再修复dumped.dll的输入表和OEP。得到dumped_.dll。
此时,用peid查看,深度扫描下,可以看到,已经脱壳成功,为Delphi开发的dll。

4. 最后一步,修复基址与重定位表。
用LordPe的pe编辑器打开,dumped_.dll。
修复基址为:00870000

修复重定位表。


修复好后,保存,脱壳成功。加载dll可以成功加载。

这里对于寻找输入表,是基于有些PE文件可以直接从区块的名字(如.idata)区分出来输入表, 而达到快速寻找输入表位置的。对于一些区块名字不按套路出牌的PE文件,此法不太适用。

文中提及的文件,也一并传上来,供大家研究交流学习下。 文中若有谬误,还望大家批评指正。




[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (12)
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
axlolo 2017-11-5 15:15
2
0
看多都看不懂的,但是还是学习中,谢谢!
雪    币: 159
活跃值: (38)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
xhK 3 2017-11-5 19:24
3
0
axlolo 看多都看不懂的,但是还是学习中,谢谢!
可先看下文中提及的那篇文章
雪    币: 159
活跃值: (38)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
xhK 3 2017-11-8 10:13
4
0
看雪现在活跃度不行呐
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
axlolo 2017-11-8 23:49
5
0
xhK 可先看下文中提及的那篇文章
好的,这几天加班没时间看,现在才下班
雪    币: 159
活跃值: (38)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
xhK 3 2017-11-10 15:34
6
0
axlolo 好的,这几天加班没时间看,现在才下班
什么工作,加班这么厉害,我都是上班的时候,逛看雪
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tonzizhou 2017-11-10 19:28
7
0
不知道仁兄有空看看这个吗?
好像不太适合你说的找重定位RVA及size。
上传的附件:
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
axlolo 2017-11-11 16:06
8
0
xhK 什么工作,加班这么厉害,我都是上班的时候,逛看雪
我都快上班上疯了,数据有错全部在处理数据。。。。看到上班那些数据我都想一把火全部烧了~~~~
雪    币: 159
活跃值: (38)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
xhK 3 2017-11-15 09:06
9
0
tonzizhou 不知道仁兄有空看看这个吗?好像不太适合你说的找重定位RVA及size。
从区段上看,你这个应该是多重壳,最外层的有可能不是真整的Aspack壳。
雪    币: 159
活跃值: (38)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
xhK 3 2017-11-15 09:07
10
0
axlolo 我都快上班上疯了,数据有错全部在处理数据。。。。看到上班那些数据我都想一把火全部烧了~~~~
淡定。。。  冲动是魔鬼。。。
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tonzizhou 2017-11-16 15:25
11
0
能脱吗?
雪    币: 159
活跃值: (38)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
xhK 3 2017-11-21 13:14
12
0
tonzizhou 能脱吗?
没具体看
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_睡前摇一摇… 2017-11-28 15:43
13
0
完全看不懂
游客
登录 | 注册 方可回帖
返回