【发布时间】:2012-12-17 08:59:27
【问题描述】:
我正在尝试在 windows 64 环境中读取一些进程的 PE 标头,并且由于我的代码仅通过读取 32 位和 64 位可执行文件的 IMAGE_NT_HEADERS 结构就可以工作,我想知道:我是否需要编写类似的东西
if executable is 64 bit
use IMAGE_NT_HEADERS64
else
use IMAGE_NT_HEADERS
?我的代码似乎只使用 IMAGE_NT_HEADERS 来处理 64 位和 32 位进程,我错过了什么吗?
【问题讨论】:
-
IMAGE_NT_HEADERS已经是一个宏,它会自动在IMAGE_NT_HEADERS32和IMAGE_NT_HEADERS64之间进行选择。但是,是的,基本上这些结构之间的唯一区别是指针的大小。有一些属性会与两个平台上的 32 位内存地址混淆,这些属性被指定为DWORD(即使它们实际上应该是指针)以保持这种一致性。
标签: c++ windows visual-studio 64-bit 32bit-64bit