首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++读取PE可选标头以确定DEP和ASLR

C++读取PE可选标头以确定DEP和ASLR
EN

Stack Overflow用户
提问于 2015-04-23 07:37:08
回答 2查看 2.4K关注 0票数 0

我希望解析一个PE文件并从它读取可选的头部,以及其他一些数据,这些数据使我能够知道它是32位的PE还是64位的。我知道imagehlp和dbghlp头文件为我提供了像IMAGE_OPTIONAL_HEADER.这样的结构。但我不知道如何解析我的文件来生成这些文件。我可以使用文档并使用偏移量编写自己的解析器,但是如果有人知道正确的API来解析PE呢?

我的目标: 1)确定该文件是x64还是x86可执行文件。可能在报头??2)检查ASLR,DEP和SAFESEH。前两个我认为将在PE可选的标题。

那么,是否有任何API来解析我的PE并返回这些结构?

EN

回答 2

Stack Overflow用户

发布于 2015-04-23 07:43:34

您应该看看图像帮助程序库。有一个方法MapAndLoad将给您一个指向PE文件( structure)各个部分的指针,即 structure structure包含指向 structure的指针。

字段DllCharacteristic包含各种标志,例如IMAGE_DLLCHARACTERISTICS_NX_COMPATIMAGE_DLLCHARACTERISTICS_NO_SEH

要使用这些API,需要包含Imagehlp.h和指向Imagehlp.lib的链接。

票数 2
EN

Stack Overflow用户

发布于 2015-04-23 08:10:53

1)确定该文件是x64文件还是x86可执行文件。

Machine字段来自IMAGE_FILE_HEADER

2)检查ASLR、DEP和SAFESEH

ASLR

  • DllCharacteristics检查IMAGE_OPTIONAL_HEADER
  • 按位和以上字段与IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE:如果不是0,那么图像支持ASLR。

DEP

  • DllCharacteristics检查IMAGE_OPTIONAL_HEADER
  • 按位和以上字段与IMAGE_DLLCHARACTERISTICS_NX_COMPAT:如果不是0,那么图像支持ASLR。

SAFESEH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29816732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档