【发布时间】:2017-01-23 19:21:19
【问题描述】:
我使用 pe 文件分析器软件,如 exeinfoPe,在部分列表部分有 .text 和 CODE 部分类型,我们可以使用它们,例如将 .data 名称更改为 .text 或 CODE 或其他部分名称。这些部分类型相同吗?他们之间有什么区别?
【问题讨论】:
-
请参阅code segment 和data segment。有时,它们可能是相同的。
-
我相信您在谈论部分名称,而不是标志。有一些常见的部分名称,但它们不是必需的。什么实际上是标志(例如可执行或可写)。
-
.code和.text段是同义词。否则,段通常不可互换。例如,它们在许多架构上都是只读的。 -
您将部分名称与部分标志混淆了。
CODE是节标志,.text是节名。虽然一个部分的名称提供了一个很好的线索,它的用途,一个部分可以命名任何东西,它是决定它可以用于什么的部分标志。 -
PE Explorer 误导了你。虽然
CODE,特别是IMAGE_SCN_CNT_CODE,是一个节标志,可以与其他标志结合使用,或者没有其他标志,可以认为是表示一个节的类型,.text只是节名。按照惯例,它具有标志IMAGE_SCN_CNT_CODE|IMAGE_SCN_MEM_EXECUTE|IMAGE_SCN_MEM_READ,但具有不同名称的部分也可以具有这种“类型”,而名为.text的部分至少在理论上可以具有其他标志。有关详细信息,请参阅 PECOFF 规范:msdn.microsoft.com/en-us/library/windows/desktop/…
标签: assembly disassembly