关闭

Windows PE/COEF

标签: windowsimage平台dos扩展c
185人阅读 评论(0) 收藏 举报
分类:

Windows 平台下的可执行文件采用PE的格式, VISUAL C++编译产生的目标文件仍然是COFF,

以为为了兼容以前的DOS可执行文件,所以出了PE相对于COFF的超集来处理。

 

VISUAL C++

#pragma data_seg("FOO")

int global = 1;

#pragma data_seg(".data")

表示先全局变量 global 存到FOO段中间去,然后在回到.data段。

 

COFF文件的文件头部包括了2部分,1个是描述文件总体结构和属性的映射头,另外一个是描述该文件中包含的段属性的段表。

映射头

从它的结构体看来, 主要是用了确定平台的,和机器的信息等等。

 

.drectve 段 主要就是给编译传递参数的。

COFF 的符号表跟ELF的符号表很类似,有几个特殊的数据,如 ABS 表示符号是个绝对值,即就是个常量,不存在任何的段里。

符号类型,有2种,变量和其他符号:变量 为 notype , 其他符号 为 notype()。

符号可见范围: static 只有目标文件内部是可见的。 External 表示符号是全局变量。

PE 特有的一个头 PE扩展头部结构,有了很多成员,有些部分跟PE文件的装载和运行相关,大多数跟Windows系统相关联的。

IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES == 16 ]

这个成员表示一个数组包含着其他的表,比如导入表,资源表....

定义了很多个宏(0-15)来打开这些信息,比如 IMAGE_DIRECTORY_ENTRY_EXPORT.

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6402次
    • 积分:145
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档