gpt4 book ai didi

windows - 在 Dll 的 .edata 部分中指定的 Dll 名称的作用

转载 作者:可可西里 更新时间:2023-11-01 10:14:25 26 4
gpt4 key购买 nike

Dll 的 .edata 部分除了单独的函数导出规范外,还包含一个指定 Dll 名称的字段(参见 this reference,字段“Name RVA”)。然而,在我能找到的所有文档中,导入的解析总是引用 Dll 文件名和路径,当然这些可能与本条目中指定的“记录的”Dll 名称不同。

这个字段的用途是什么?它在解决进口方面有什么作用吗?

最佳答案

调试原始内存时,加载 DLL 的文件名(和路径)可能不容易获得,导出表中的这个字段是识别特定内存区域被特定 DLL 占用的便捷方式.

除了足以作为包含它的理由的调试值之外,Windows 加载程序还可以在递归解析导入时使用此字段来确定特定模块是否已加载或作为系统 DLL 的安全完整性检查等。即使在如果这个字段在现代版本的 Windows 中被完全忽略,PE/COFF 规范至少提供了这种可能性。

直接回答你的问题,这个字段在导入的解析中没有作用——至少它以前没有。这可能在最近版本的 Windows 中发生了变化,但如果它应用于非系统 DLL,则会破坏向后兼容性。我的猜测是,对于任何类型的导入解析,此字段都将被忽略。

为了好玩,我使用以下标准在 Windows 7(64 位)机器上使用 32 位 PE 模块进行了快速测试:

  • 尝试加载通过其模块导入部分引用私有(private) DLL 的测试 EXE
  • 在私有(private) DLL 的导出目录中,我将 Name 字段十六进制编辑为不同的名称以及一个空字符串

当我启动测试 EXE 时,私有(private) DLL 的两个版本都成功加载,只要测试 EXE 的引用导入部分具有正确的文件名,DLL 在启动时恰好被命名。

关于windows - 在 Dll 的 .edata 部分中指定的 Dll 名称的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45427617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com