-
-
[原创][分享]dll 手动脱 aspack 壳输入表(IAT)寻找的一个小技巧
-
发表于:
2017-11-4 11:57
6831
-
[原创][分享]dll 手动脱 aspack 壳输入表(IAT)寻找的一个小技巧
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
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)