本实验的目的在于加深对程序生成与运行过程中链接的基本概念、作用和ELF文件的基本格式组成的理解。实验的主要内容是在二进制层面上逐步修改一个由多个可重定位目标模块组成的程序,使其在运行时满足实验指定的行为要求。 本实验包含以下阶段,各阶段考察程序链接与ELF文件的不同方面知识:
实验环境: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获得(请提供教师在任教单位网站上的个人主页链接)。相关文件仅供教师使用,请勿公开给学生或发布于网上等其他场所。