IAT重定向的修复

有时候,一些强壳,仅仅定位到了iat表的位置,并且知道了大小,在importrec中也还是无法修复的,我们知道正常的iat表其中存放着各个函数的地址,而经过重定向的IAT表,其中并不是存放着地址,而是一个指针,这个指针,指向壳的某个内存空间中,然后在壳中代码片段将地址ret,这样的话,importrec就无法修复了,我们知道,正常的文件,他的iat表在未加载的时候是字符串名称,windows在加载可执行文件的时候,通过导入表将iat中的字符串填充为正确的地址。importrec则是开辟新的空间,然后作为iat表,但现在无法知道原来的函数名字叫什么,因而无法修复。手动修复的方法有几种。

一,逐个跟踪进程,通过壳中的例程retn所返回的函数入口地址确定函数名称,然后在importrec中修改,有时候壳会在retn掩饰函数名称,这时候就要分析。这种方法比较繁杂,但是也简单粗暴。

二,通过修改壳中代码,一般壳对有些dll入口地址修改,有些则不会修改,不修改的不用做任何处理,对于重定向的dll,我们需要做的就是把重定向的跳转改为何不重定向的一样,具体方法则比较复杂。首先跟踪一个重定向的iat,下内存写入断点,然后不断允行,直到运行到该iat项被修改为跳到例程的地址,这样我们就确认了壳是如何对重定向的iat项进行操作的范围假设称作a->b->c->....->z,其中应该有大量跳转和循环就比如我这里列出的a->b->c->...->z,而非重定向的dll则比较简单,它会略过其中许多步骤,直接从a->z,我们只要找到了这两个的区别,并将重定向的跳转修改为和非重定向一样为a->z即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值