一般来说,决定PE节是否包含代码的标准是什么?
具体来说,.text
or.code
部分是否总是被认为包含代码?IMAGE_SCN_CNT_CODE
标志 (0x00000020) 和IMAGE_SCN_MEM_EXECUTE
标志 (0x20000000)之间的关系是什么- 我们是否可以将至少包含这两者之一的部分视为肯定包含代码?
是否有硬性静态规则来识别代码段?
一般来说,决定PE节是否包含代码的标准是什么?
具体来说,.text
or.code
部分是否总是被认为包含代码?IMAGE_SCN_CNT_CODE
标志 (0x00000020) 和IMAGE_SCN_MEM_EXECUTE
标志 (0x20000000)之间的关系是什么- 我们是否可以将至少包含这两者之一的部分视为肯定包含代码?
是否有硬性静态规则来识别代码段?
具体来说,
.text
or.code
部分是否总是被认为包含代码?
不。
以及
IMAGE_SCN_CNT_CODE
flag(0x00000020)和IMAGE_SCN_MEM_EXECUTE
flag(0x20000000)的关系是什么
前者被 Windows PE 加载程序忽略。Windows PE 加载器使用后者,如果设置了标志,则该部分的页面在内存中被标记为可执行文件(通过https://en.wikipedia.org/wiki/NX_bit)。
我们可以将至少包含这两个中的一个的部分视为肯定包含代码吗?
不总是,不。
一般来说,决定PE节是否包含代码的标准是什么?
虽然.text
/.code
部分通常包含代码,并且带有IMAGE_SCN_MEM_EXECUTE
标志的部分通常包含代码,但真正说一个部分肯定包含代码的唯一方法是 CPU 在运行时实际执行该部分中的代码。