PEView查看DLL延迟加载信息

本文详细介绍了DLL延迟加载技术的工作原理及其在VS2015中的应用,通过具体步骤展示了如何设置DLL延迟加载,以及如何使用PEView查看DLL延迟加载信息。

1 DLL延迟加载技术

在Windows中加载程序时,需要把该程序的代码和所需的DLL复制到内存空间中。如果所需的DLL不存在,则程序将会报错。如果程序所需的DLL比较多,则程序启动会消耗较多时间。可以采用DLL延迟加载技术减少程序启动时间。使用该技术的程序,在启动时无需加载所需DLL,在代码试图引用DLL中包含的一个符号时才将DLL加载。

2 VS2015设置DLL延迟加载

使用VS2015编写程序时,可以通过VS2015为该程序设置延迟加载的DLL。在VS2015中,选择菜单栏“项目->XXX属性”,之后在弹出的属性页左侧的“配置属性”中选择“链接器->输入”,之后在右侧的“延迟加载的DLL”中输入要延迟加载的DLL名,如图1所示。

图1 设置延迟加载的DLL

 

3 通过PEView查看延迟加载的DLL信息

在《基于PEview分析PE文件》中提到,PE文件的NT头包括Signatrue、IMAGE_FILE_HEADER和IMAGE_OPTIONAL_HEADER三部分。其中,IMAGE_OPTIONAL_HEADER中包含了16个Data Directory,其中第14个是“DELAY IMPORT Descriptors”,就是保存了延迟加载的DLL信息的地址,如图2所示。

图2 DELAY IMPORT Descriptors

 

从图2中可以看到,延迟加载的DLL信息保存在0x00B03000的地址当中,该地址为相对虚拟地址,即RVA。从PEView中可以看到,延迟加载的DLL信息实际上是保存在了“SECTION.didat”中的“DELAY IMPORT Descriptors”中。图3为RVA是0x00B03000中的内容。

图3 延迟加载DLL名字信息

从图3中可以看到 ,加载的DLL的名字信息保存在了RVA的0x00A7DBD0中。从PEView中可以看到,该RVA位于“SECTION.rdata”中的“DELAY IMPORT DLL Names”中,如图4所示。

图4 DELAY IMPORT DLL Names

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值