Linux/Unix平台可执行文件格式分析
字段 magic 为 0413 时表示 COFF 文件是可执行的,注意到可选头部中显式 定义了程序进入点,标准的 COFF 文件没有明确的定义程序进入点的值,通常是 从 .text 节开始执行,但这种设计并不好。 前面我们提到,COFF 格式比 a.out 格式多了一个节段表,一个节头条目描 述一个节数据的细节,因此 COFF 格式能包含更多的节,或者说可以根据实际需 要,增加特定的节,具体表现在 COFF 格式本身的定义以及稍早提及的 COFF 格 式扩展。我个人认为,节段表的出现可能是 COFF 格式相对 a.out 格式最大的 进步。下面我们将简单描述 COFF 文件中节的数据结构,因为节的意义更多体现 在程序的编译和连接上,所以本文不对其做更多的描述。此外,ELF 格式和 COFF格式对节的定义非常相似,在随后的 ELF 格式分析中,我们将省略相关讨 论。
有一点需要注意:LINUX系统中头文件coff.h中对字段 s_paddr的注释 是"physical address",但似乎应该理解为"节被加载到内存中所占用的空间长 度"。字段s_flags标记该节的类型,如文本段、数据段、BSS段等。在 COFF的节 中也出现了行信息,行信息描述了二进制代码与源代码的行号之间的对映关系, 在调试时很有用。 参考资料 19是一份对COFF格式详细描述的中文资料,更详细的内容请参阅参 考资料 20。 ELF文件格式分析 (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |