我在IDA中注意到,我分析的PE文件不仅具有.rdata部分,而且还具有.idata。有什么不同?

最佳答案

  • .rdata用于const数据。它是.data段的只读版本。
  • .idata保存导入目录(.edata用于导出)。 EXE和DLL使用它来指定导入和导出的功能。有关详细信息,请参见PE格式规范(http://msdn.microsoft.com/library/windows/hardware/gg463125)。

  • 总结典型的段名称:
    .text: Code
    .data: Initialized data
    .bss: Uninitialized data
    .rdata: Const/read-only (and initialized) data
    .edata: Export descriptors
    .idata: Import descriptors
    .reloc: Relocation table (for code instructions with absolute addressing when
              the module could not be loaded at its preferred base address)
    .rsrc: Resources (icon, bitmap, dialog, ...)
    .tls: __declspec(thread) data (Fails with dynamically loaded DLLs -> hard to find bugs)
    

    正如Martin Rosenau提到的那样,段名称只是典型的。真正的段类型在段头中指定,或通过使用存储在段中的数据来定义。

    10-08 16:26