180221 逆向-脱壳技术(4)

1625-5 王子昂 总结《2018年2月21日》 【连续第508天总结】
A. 脱壳技术(4) 重建输入表
B.

重建输入表

外壳程序会破坏原程序的输入表,因此Dump内存以后必须要修复输入表才能正常运行

原理

IAT结构用于保存API的实际地址
PE文件在初始化输入表时,Windows装载器首先搜索OriginalFirstThunk,如果存在,加载程序迭代搜索数组中的每个指针,找到每个IMAGE_IMPORT_BYU_NAME结构所指向的输入函数的地址,然后加载器用函数真正入口地址来替代由FirstThunk指向的IMAGE_THUNK_DATA数组里的元素值。

外壳程序通常会自己起到装载器的作用来填充原程序的IAT,因此需要根据IAT来恢复Dump出来的程序的输入表

有的外壳为了反脱壳,会将原程序的IAT改为自己的Hook函数的地址,这样使得原程序在调用导入函数的时候仍然会把控制权交给外壳,外壳此时可以进行反调试、反Dump等等
应对方法就是跟踪Hook函数的处理方法,得到真正的IAT地址并回填还原

确定IAT的地址和大小

重建输入表的关键就在于IAT的获得,一般程序的IAT是连续排列的,以一个DWORD字的0作为结束,因此只要确定IAT某个点,就能获得整个IAT地址和大小

通过动态调试,找到导入函数的调用时就能发现IAT地址
上下翻动即可找到IAT的头尾,然后Dump出来并进行处理还原IID数组,最后塞到原程序的文件头里即可

ImportREC可以自动完成处理工作,只要告诉它IAT的地址和大小即可重建输入表

C. 明日计划
脱壳技术(5)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值