首页 > Web开发 > 详细

如何判断exe或dll的目标平台及是否是.NET?

时间:2014-10-29 16:25:39      阅读:850      评论:0      收藏:0      [点我收藏+]

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?

原文:http://www.cnblogs.com/mumuliang/p/4059610.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!