计算机系统基础 - 链接与ELF目标文件实验

(苏丰,Betway必威西汉姆联)

实验介绍

本实验的目的在于加深对程序生成与运行过程中链接的基本概念、作用和ELF文件的基本格式组成的理解。实验的主要内容是在二进制层面上逐步修改一个由多个可重定位目标模块组成的程序,使其在运行时满足实验指定的行为要求。 本实验包含以下阶段,各阶段考察程序链接与ELF文件的不同方面知识:

实验中需要完成对二进制可重定位目标文件(.o文件)特定内容的修改,包括数据内容、机器指令、重定位记录等。在完成每个阶段的修改后,链接相关模块生成的可执行程序应能正常运行并输出期望的字符串。

实验环境:Linux i386/x86-64,实验语言:汇编/C

实验内容

实验的每一阶段n中,按照阶段的目标要求修改二进制可重定位目标模块phase[n].o(例如其中的数据节、代码节、重定位记录节等),然后使用如下命令生成可执行程序linklab:
gcc -no-pie -o linklab main.o phase[n].o (个别阶段还需链接进其它模块)
运行该可执行程序linklab时应输出符合该阶段目标的字符串。

学生实验说明文档

学生实验数据样例:(针对x86-64) (针对IA-32)

教师实验文件

供教师开展本实验所需的实验文件可e-mail联系suf@nju.edu.cn获得(请提供教师在任教单位网站上的个人主页链接)。相关文件仅供教师使用,请勿公开给学生或发布于网上等其他场所。