PE文件:延迟导入表

延迟导入表从它的名字上,我们可以知道他是一种加载比较延迟的导入表,不是在一开始就被加载的,而是等到要被使用的时候,才会被延迟加载(动态加载相关链接库并修正函数的虚拟地址,实现对函数的调用)。
摘要由CSDN通过智能技术生成

0x00 作用

延迟导入表从它的名字上,我们可以知道他是一种加载比较延迟的导入表,不是在一开始就被加载的,而是等到要被使用的时候,才会被延迟加载(动态加载相关链接库并修正函数的虚拟地址,实现对函数的调用)。
目的:
1.提高程序的加载速度。
2.提高兼容性:有的函数在老的Windows版本中并不存在,但是在新的Windows版本中存在,而我们想要写一个Dll来实现一个动态的判断,即可以根据操作系统的版本来决定动态库是否要被加载,则可以使用延时导入技术。

延时导入的局限性:
1.一个导出了全局变量的的Dll是无法被延时加载的。
2.Kernel32.dll是不能被延时加载的,因为要加载好该模块才能调用LoadLibrary和GetProcAddress。
3.不应该在DllMain的入口函数中调用一个延时载入的函数,因为这样可能引起程序奔溃(可能此时的Dll并没有被加载上)。

0x01 结构

数据目录的第十四个成员。

typedef struct ImgDelayDescr {
     
    DWORD           grAttrs;           // attributes  
    RVA         
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值