Linux/Unix平台可执行文件格式分析
COFF 文件格式分析 COFF 格式比 a.out 格式要复杂一些,最重要的是包含一个节段表(section table),因此除了 .text,.data,和 .bss 区段以外,还可以包含其它的区段 。另外也多了一个可选的头部,不同的操作系统可一对此头部做特定的定义。 COFF 文件格式如下:
文件头部的数据结构:
COFF 文件头部中魔数与其它两种格式的意义不太一样,它是表示针对的机器 类型,例如 0x014c 相对于 I386 平台,而 0x268 相对于 Motorola 68000系列 等。当 COFF 文件为可执行文件时,字段 f_flags 的值为 F_EXEC(0X00002) ,同时也表示此文件没有未解析的符号,换句话说,也就是重定位在连接时就已 经完成。由此也可以看出,原始的 COFF 格式不支持动态连接。为了解决这个问 题以及增加一些新的特性,一些操作系统对 COFF 格式进行了扩展。Microsoft 设计了名为 PE(Portable Executable)的文件格式,主要扩展是在 COFF 文件 头部之上增加了一些专用头部,具体细节请参阅参考资料 18,某些 UNIX 系统 也对 COFF 格式进行了扩展,如 XCOFF(extended common object file format )格式,支持动态连接,请参阅参考资料 5。 紧接文件头部的是可选头部,COFF 文件格式规范中规定可选头部的长度可以 为 0,但在 LINUX 系统下可选头部是必须存在的。下面是 LINUX 下可选头部的 数据结构:
(编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |