首页 > 代码库 > 如何判断exe或dll的目标平台及是否是.NET?
如何判断exe或dll的目标平台及是否是.NET?
1.
COFF文件头中偏移0处的Machine指示目标机器类型(IMAGE_FILE_MACHINE_AMD64等),偏移18处的Characteristics位指示文件属性(IMAGE_FILE_32BIT_MACHINE0x0100,IMAGE_FILE_LARGE_ADDRESS_AWARE0x0020)。
但我们判断dll或exe支持的目标平台并不使用COFF头,而使用可选文件头(PE32,PE32+即位于此处),因为可选文件头用于为加载器提供信息。
可选文件头分为3个部分:标准域,windows特定域和数据目录。PE32/PE32+,由位于标准域处的首个标识幻数(Magic),长度为2,它的可能值和含义为:
- 0x10b PE32可执行文件
- 0x107 一个ROM镜像
- 0x20b PE32+可执行文件
位于可选文件头标准域的magic标志位的值,也确定了标准域和特定域的大小。
- 标准域:PE32 28,PE32+24;(PE32比PE32+多了一个BaseOfData)
- 特定域:PE32 68,PE32+ 88。
- 数据目录:可变,可选文件头的总大小由COFF文件头中的SizeofOptionalHader指定。
2.
如何判断exe或dll的目标平台及是否是.NET?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。