1. 研究目的与意义
1.选题背景:
COFF-通用对象文件格式,是一种很流行的对象文件格式。现在PC平台流行的可执行文件格式主要是Windows下的PE和Linux的ELF,它们都是COFF格式的变种。PE文件结构是在COFF指令结构的基础上进行了包装,加入了一些DOS文件头,导入表,导出表,资源表等,然后PE载入器根据一定的流程载入执行该PE文件。目标文件就是源代码编译后但未进行链接的那些中间文件,它跟可执行文件的内容与结构很相似,所以一般跟可执行文件格式采用一种格式存储。目标文件中的内容至少有编译后的机器指令代码、数据,还有链接时需要的一些信息,如符号表、调试信息、字符串等。以“段”的形式存储。很多编译器使用这种格式的目标文件,很多其他语言也使用这种格式的对象文件。统一格式的目标文件为混合语言编程带来了极大的方便。
2. 研究内容和预期目标
研究内容:
1)剖析COFF格式文件的结构,理清每个结构的组成部分
2)研究COFF格式文件头中部分属性的作用
3. 研究的方法与步骤
1)查阅关于COFF格式文件的相关资料,明白COFF格式文件的基本构造以及每个部分的意义及属性,清楚每个部分在整个文件结构中的作用以及属性相关的特定值,及每个部分所占字节的长度。
File Header |
Optional Header |
Section Header 1 |
...... |
Section Header n |
Section Data |
Relocation Directives |
Line Numbers |
Symbol Table |
String Table |
如左图:/q)^V!umk_x0012_NdnJ0COFF文件一共有8种数据,自上而下分别为:爱好者博墅)v_x001D_mX-~)T)nk%h1.文件头(File Header)爱好者博墅,[P{Z,gz5P6]_x0019_v2.可选头(Optional Header)爱好者博墅({"n~6Ud W3H3.段落头(Section Header)C%Y4Z1Y vI2} i04.段落数据(Section Data)爱好者博墅 oHR8}aJ5.重定位表(Relocation Directives):{)a }oo-i06.行号表(Line Numbers)g$g `q8W3Q?$j07.符号表(Symbol Table))U`"Z6_ O/]8NB_x0012_W08.字符串表(String Table)
2)本次毕业设计提取重要信息主要是文件头(魔法数字,段落数,时间戳,符号表偏移,符号数,可选头长度,文件标记),段落头(段名,段数据偏移,段长度),符号表(文件位置),这些信息用于显示。魔法数字指定是文件最开头的几个用于区别其他文件类型的字节,有了这些魔法数字,我们就可以很方便的判断文件。时间戳指代该文件的创建时间。
3)由于COFF格式文件的各个部分的相关属性相关联,故文件头中的段落数可确定段落的数量。当文件头读取完成后,根据文件头中可选头的值判断可选头的长度是否为0。若可选头长度为0,则文件头后紧跟着段落头。根据段落头的结构特征,可读取段名,段数据偏移以及段长度。段落中非常重要的段为.text(代码段:程序源代码编译后的机器指令)根据段名,根据段数据偏移以及段长度可以提取出段对应的数据。这些数据用于数据提取的显示及比较文件的相似性。
4)通过以上提取出的数据可进行两个源程序的比较,若两个源程序编译产生的目标文件的.text段的数据相同,说明两个源程序的运行的实质(编译后的机器指令)是相同的。通过比较两个文件的时间戳,可以判断文件是否是复制的(经过复制的文件时间戳相同)。
5)文件信息的修改,通过选择对应的部分,并修改所指的数据,并显示。
6)退出程序。
4. 参考文献
1. 俞甲子 石凡 潘爱民. 程序员的自我修养—链接、装载与库,电子工业出版社
2. 张桂珠 刘丽 陈爱国. Java面向对象程序设计(第二版),北京邮电大学出版社
3. John R.Levine.链接器与加载器,北京航空航天大学出版社
5. 计划与进度安排
1. 2022年12月28日 — 2022年3月16日
接受毕业设计任务,查阅资料并完成开题报告;
2. 2022年3月17日 — 2022年4月11日
以上是毕业论文开题报告,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。