【问题标题】:What sections are not loaded by the PE loader?PE 加载器不加载哪些部分?
【发布时间】:2012-01-21 16:07:45
【问题描述】:

是否有任何部分没有被 PE 加载器加载?或者是否已加载部分标题中指定的每个部分?在 ELF 程序中,应该加载的节头(称为程序头或段)是那些标有PT_LOAD 的部分。 PE 项目中有没有类似的东西?

PS。我找到了标志IMAGE_SCN_MEM_DISCARDABLE。部分是否标记为未加载?

【问题讨论】:

  • 这不是它的工作原理。整个文件得到内存映射。在您访问内存页面之前不会加载任何内容。
  • 没错。什么都没有加载。页面通过页面错误按需加载。
  • 所以从技术上讲,如果需要,每个页面都可以访问?并提供一个我可以标记为答案的答案:)

标签: windows loader portable-executable


【解决方案1】:

当重定位节可用,但 PE 映像不需要重定位时,加载程序不会加载重定位节。如果 PE 映像已经过数字签名,则它有一个包含证书的部分。此部分不由加载程序加载。此外,如果调试部分可用,加载器也不会加载它。

【讨论】:

  • 另外,DOS Stub 也没有加载。它只是简单地被加载程序忽略......一些恶意软件滥用它并将自己的东西放在这个区域。
【解决方案2】:

好吧,DOS Stub 不是一个部分!

作为一般规则,PE 文件的某些部分可以读取,但不能映射到内存中(如重定位)。有些部分根本没有映射。文件末尾的调试信息,就是这种情况的一个实例。

通常放置在文件末尾的数据——经过文件中的任何部分(愿意被映射)——不会映射到内存中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多