LinkLab实验
1.实验目的与要求
(1). 了解链接的基本概念和链接过程所要完成的任务。
(2). 理解ELF目标代码和目标代码文件的基本概念和基本构成
(3). 了解ELF可重定位目标文件和可执行目标文件的差别。
(4). 理解符号表中包含的全局符号、外部符号和本地符号的定义。
(5). 理解符号解析的目的和功能以及进行符号解析的过程。
2.实验原理与内容
每个实验阶段(共5个)考察ELF文件组成与程序链接过程的不同方面知识
阶段1:全局变量ó数据节
阶段2:强符号与弱符号ó数据节
阶段3:代码节修改
阶段4:代码与重定位位置
阶段5:代码与重定位类型
3.实验过程与结果
实验阶段1:
(1)首先我要以下代码,然而会出现一堆乱码
(2)输入readelf -a phase1.o 查看elf文件内容,找到输出的.data 节中偏移量为32的位置。如下图:
在这里插入图片描述
我的是0×60+0=0×60处
(3)用hexedit phase1.o命令来修改phase1.o,并对phase1.o数据节中相应字节进行修改
(4)删除前一个linkbomb,生成新的linkbomb,最后重新输出得到我们要的结果:
实验阶段2
(1)输入readelf -a phase1.o 查看elf文件内容
(2)可以发现COM未被赋初始值,需要打补丁phase2_patch.o