码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2014-10-29 16:27:40      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:io   ar   使用   sp   strong   文件   数据   on   bs   

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?

标签:io   ar   使用   sp   strong   文件   数据   on   bs   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!