【问题标题】:How do I read the PE header of a module loaded in memory?如何读取内存中加载的模块的 PE 标头?
【发布时间】:2010-12-06 11:53:11
【问题描述】:

我正在.NET 中试验内存访问。目前,我有一个托管程序,它启动一个 unmanaged 进程并检索其已加载模块(DLL)之一的BaseAddress。我想做的是以某种方式读取已加载模块的 PE 标头,以便稍后检索其导出的地址。

很遗憾,我找不到任何关于此的好信息。有什么想法吗?

【问题讨论】:

    标签: c# .net memory portable-executable


    【解决方案1】:

    This 是 PE 文件格式的一个很好的起点。

    您可以从基地址 P/Invoke ReadProcessMemory 复制标头到您的进程中。您需要将读入的内存解析为各种 PE 标头。第一个标题是IMAGE_DOS_HEADER,它将指向IMAGE_NT_HEADERS。然后,您可以使用 IMAGE_NT_HEADERS 中的 IMAGE_OPTIONAL_HEADER 在二进制文件中查找 IMAGE_EXPORT_DIRECTORY 的位置。

    【讨论】:

      猜你喜欢
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      相关资源
      最近更新 更多