如何识别包含代码的 PE 部分?

逆向工程 视窗 聚乙烯 部分
2021-06-19 08:48:18

一般来说,决定PE节是否包含代码的标准是什么?

具体来说,.textor.code部分是否总是被认为包含代码?IMAGE_SCN_CNT_CODE标志 (0x00000020) 和IMAGE_SCN_MEM_EXECUTE标志 (0x20000000)之间的关系是什么- 我们是否可以将至少包含这两者之一的部分视为肯定包含代码?

是否有硬性静态规则来识别代码段?

1个回答

具体来说,.textor.code部分是否总是被认为包含代码?

不。

以及IMAGE_SCN_CNT_CODEflag(0x00000020)和IMAGE_SCN_MEM_EXECUTEflag(0x20000000)的关系是什么

前者被 Windows PE 加载程序忽略。Windows PE 加载器使用后者,如果设置了标志,则该部分的页面在内存中被标记为可执行文件(通过https://en.wikipedia.org/wiki/NX_bit)。

我们可以将至少包含这两个中的一个的部分视为肯定包含代码吗?

总是,不。

一般来说,决定PE节是否包含代码的标准是什么?

虽然.text/.code部分通常包含代码,并且带有IMAGE_SCN_MEM_EXECUTE标志的部分通常包含代码,但真正说一个部分肯定包含代码的唯一方法是 CPU 在运行时实际执行该部分中的代码。