如何判断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.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。