绑定导入表

我们之前分析过导入表,在PE文件加载前IAT表和INT表相同,只有文件加载后才能根据INT表通过序号或名称使用GetProcessAddress函数获得函数地址贴到IAT表中
我们观察记事本程序,记事本程序在PE文件加载前就把函数地址贴到IAT表中了。这种情况叫做绑定导入表
这样做的好处是程序运行快,坏处是万一dll没有占住要使用的ImageBase,会出现错误,还有万一dll被修改了,值会发生改变
如果导入表中的时间戳为0代表dll的所有函数地址还没有绑定,当时间戳为-1时,意味着函数地址已经被绑定
那么真正的绑定时间在哪呢,是在绑定导入表中
在这里插入图片描述
在这里插入图片描述
绑定导入表在数据目录的第12项
绑定导入表的第一项就是时间戳,第二项是dll名称,第三项是这个dll使用了多少dll,因为我们调用的系统函数也会调用别的dll
每一个结构中的OffsetModuleName需要加上第一个绑定导入表的地址才是真正的dll名称
一个绑定导入表后跟的不是下一个绑定导入表,而是这个dll引用的别的dll
在这里插入图片描述
最后一项是一个全0的结构
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值