实验报告

实 验(五)

题 目 LinkLab
链接  
专 业 计算机科学与技术
学   号 190110812
班   级 7
学 生 刘新晨    
指 导 教 师 吴锐   
实 验 地 点 G707    
实 验 日 期 2021/5/16

计算机科学与技术学院

目 录

第1章 实验基本信息 - 3 -
1.1 实验目的 - 3 -
1.2 实验环境与工具 - 3 -
1.2.1 硬件环境 - 3 -
1.2.2 软件环境 - 3 -
1.2.3 开发工具 - 3 -
1.3 实验预习 - 3 -
第2章 实验预习 - 4 -
2.1 ELF文件格式解读 - 4 -
2.2程序的内存映像结构 - 4 -
2.3程序中符号的位置分析 - 4 -
2.4程序运行过程分析 - 4 -
第3章 各阶段的原理与方法 - 5 -
3.1 阶段1的分析 - 5 -
3.2 阶段2的分析 - 5 -
3.3 阶段3的分析 - 5 -
3.4 阶段4的分析 - 5 -
3.5 阶段5的分析 - 5 -
第4章 总结 - 6 -
4.1 请总结本次实验的收获 - 6 -
4.2 请给出对本次实验内容的建议 - 6 -
参考文献 - 7 -

第1章 实验基本信息

1.1 实验目的
理解链接的作用与工作步骤
掌握ELF结构与符号解析与重定位的工作过程
熟练使用Linux工具完成ELF分析与修改
1.2 实验环境与工具
1.2.1 硬件环境
X64 CPU;8G RAM;2.60GHz;
1.2.2 软件环境
Win10 64位以上;VMware 15.5.7; Ubuntu 64位
1.2.3 开发工具
Visual Studio 2019 64位以上;CodeBlocks 64位;vi; vim; gcc

第2章 实验预习
2.1 ELF文件格式解读
请按顺序写出ELF格式的可执行目标文件的各类信息(5分)

段头部表:将连续的文件映射到运行时的内存段
. init : 定义了_init函数,程序初始化代码会调用它
. text : 已编译程序的机器代码
. rodata : 只读数据,比如printf语句中的格式串和开关语句的跳转表
. data : 已初始化的全局和静态C变量
. bss : 未初始化的全局和静态C变量
. symtab :一个符号表,它存放在程序中定义和引用的函数和全局变量的信息
. debug : 一个调试符号表,其条目时程序中定义的全局变量和类型定义,程序中定义和引用的全局变量,以及原始的C源文件。
. line : 原始C源程序的行号和.text节中机器指令之间的映射
. strtab : 一个字符串表,其内容包括 .symtab 和 .debug节中的符号表,以及节头部中的节名字。
节头部表:描述目标文件的节。
2.2程序的内存映像结构
请按照内存地址从低到高的顺序,写出Linux下X64内存映像(5分)
内核内存
用户栈
共享库的内存映射区域
运行堆
读写段
只读代码段

2.3程序中符号的位置分析
请运行“LinkAddress -u 学号 姓名” 按地址顺序写出各符号的地址、空间。并按照Linux下X64内存映像标出其所属各区(5分)

2.4程序运行过程分析
请按顺序写出LinkAddress从开始执行到main前/后执行的子程序的名字(使用gcc与objdump/GDB/EDB)(5分)
main执行前:
Breakpoint 1 at 0x400598
<function, no debug info> _init;
Breakpoint 2 at 0x4005d0
<function, no debug info> free@plt;
Breakpoint 3 at 0x4005e0
<function, no debug info> puts@plt;
Breakpoint 4 at 0x4005f0
<function, no debug info> __stack_chk_fail@plt;
Breakpoint 5 at 0x400600
<function, no debug info> printf@plt;
Breakpoint 6 at 0x400610
<function, no debug info> __libc_start_main@plt;
Breakpoint 7 at 0x400620
<function, no debug info> malloc@plt;
Breakpoint 8 at 0x400630
<function, no debug info> exit@plt;
Breakpoint 9 at 0x400650
<function, no debug info> _start;
Breakpoint 10 at 0x400680
<function, no debug info> deregister_tm_clones;
Breakpoint 11 at 0x4006c0
<function, no debug info> register_tm_clones;
Breakpoint 12 at 0x400700
<function, no debug info> __do_global_dtors_aux;
Breakpoint 13 at 0x400720
<function, no debug info> frame_dummy;
Breakpoint 14 at 0x40074a
<function, no debug info> show_pointer;
Breakpoint 15 at 0x40077b
<function, no debug info> useless;

main执行后:
Breakpoint 16 at 0x400786
<function, no debug info> main;
Breakpoint 17 at 0x400b10
<function, no debug info> __libc_csu_init;
Breakpoint 18 at 0x400b80
<function, no debug info> __libc_csu_fini;
Breakpoint 19 at 0x400b84
<function, no debug info> _fini;

第3章 各阶段的原理与方法
每阶段40分,phasex.o 20分,分析20分,总分不超过80分
3.1 阶段1的分析
程序运行结果截图:

分析与设计的过程:

直接将main.o进行编译,得到linkbomb,运行之后显示如下截图

可以看到这是一串没有什么特殊意义字符串。我们的目标就是将该字符串的前部替换为我们的学号,最终使屏幕输出我们的学号。
用hexedit打开phase1.o后如下

学号190110812对应的ascii码为:31 39 30 31 31 30 38 31 32
将其替换即可
3.2 阶段2的分析
程序运行结果截图:
分析与设计的过程:
3.3 阶段3的分析
程序运行结果截图:

分析与设计的过程:
使用readelf工具分析phase3.o,得到如下截图

可见最终输出的字符存储在InWlvNHiCR数组中,所以我们的工作是:得到cookie数组,根据cookie数组构造InWlvNhiCR数组,要求按照cookie的索引顺序在InWlvNhiCR中依次填入自己的学号。
用edb打开linkbomb3如下图所示

得到我的cookie数组是zwelvksjr,122,119,101,108,118,107, 115, 106, 114

然后将三个文件链接在一起即可
3.4 阶段4的分析
程序运行结果截图:
分析与设计的过程:
3.5 阶段5的分析
程序运行结果截图:
分析与设计的过程:

第4章 总结
4.1 请总结本次实验的收获
对链接的作用和工作步骤有了更深的理解;
学会使用readelf工具查看elf可重定位目标文件;
学会使用hexedit对 .o文件进行修改
掌握了链接过程中的符号解析和重定位的过程
4.2 请给出对本次实验内容的建议

建议老师讲的详细一点

注:本章为酌情加分项。

参考文献

为完成本次实验你翻阅的书籍与网站等
[1] 林来兴. 空间控制技术[M]. 北京:中国宇航出版社,1992:25-42.
[2] 辛希孟. 信息技术与信息服务国际研讨会论文集:A集[C]. 北京:中国科学出版社,1999.
[3] 赵耀东. 新时代的工业工程师[M/OL]. 台北:天下文化出版社,1998 [1998-09-26]. http://www.ie.nthu.edu.tw/info/ie.newie.htm(Big5).
[4] 谌颖. 空间交会控制理论与方法研究[D]. 哈尔滨:哈尔滨工业大学,1992:8-13.
[5] KANAMORI H. Shaking Without Quaking[J]. Science,1998,279(5359):2063-2064.
[6] CHRISTINE M. Plant Physiology: Plant Biology in the Genome Era[J/OL]. Science,1998,281:331-332[1998-09-23]. http://www.sciencemag.org/cgi/ collection/anatmorp.

哈工大 csapp lab5相关推荐

  1. CSAPP Lab5实验记录 ---- Shell Lab(实验分析 + 完整代码)

    文章目录 Lab 总结博客链接 前引 Lab5 Shell Lab 1.获取相关Lab材料 2.Overview(总览) 3.Explore(实现前的摸索) 4.函数实现 + 实现代码分析 1.eva ...

  2. CSAPP Lab5: Malloc

    本文为USTC SSE CSAPP 2020 Fall实验三的记录,仅供参考 PPT链接在这里:Lab 5.pptx  代码在这里 mm2.c mm3.c 版本一代码如下(无注释  注释请看版本二): ...

  3. 2023春哈工大CSAPP大作业

    计算机系统 大作业 题     目 程序人生-Hello's P2P 专       业 网络空间安全 学   号 2021112406 班   级 2103901 学       生 刘晓赟 指 导 ...

  4. 哈工大CSAPP大作业 2022

    计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算学部 学 号 120L021920 班 级 2003006 学 生 李启明 指 导 教 师 吴锐 计算机科学与技术学院 202 ...

  5. 哈工大csapp计算机系统大作业

    计算机系统 大作业 题     目 程序人生-Hello's P2P 专       业 计算学部 学   号 120L022009 班   级 2003007 学       生 李沛聪 指 导 教 ...

  6. 哈工大CSAPP大作业:程序人生-Hello’s P2P

    ​     计算机系统 大作业 题     目 程序人生-Hello's P2P 专       业 计算学部 学    号 120L021818 班    级 2003006 学       生 秦 ...

  7. 哈工大csapp大作业程序人生

    大作业 题     目 程序人生-Hello's P2P 专       业 计算机科学与技术 学    号 2021111719 班    级 2103101 学       生 杨济荣 指 导 教 ...

  8. 哈工大csapp大作业报告

    计算机系统 大作业 题     目 程序人生-Hello's P2P 专       业 计算学部 学    号 120L022422 班    级 2003008 学       生 曹瑞麒 指 导 ...

  9. 哈工大 csapp大作业 120L021917

    计算机系统 大作业 题     目 程序人生-Hello's P2P 专       业 计算学部 学    号 120L021917 班    级 2003006 学       生 艾浩林 指 导 ...

最新文章

  1. 西数硬盘固件刷新工具_鲁大师Q2季度硬盘排行:三星、西数上榜产品最多
  2. QMouseEvent
  3. DataSet 的 Merge 方法
  4. php 自定义菜单 openid,微信公众平台开发(99) 自定义菜单获取OpenID
  5. java 实现 sql join_Sql 数据库 join 连接
  6. node-webkit学习(1)hello world
  7. 保护 WordPress 安全的10个方法
  8. ES6学习笔记(四):教你轻松搞懂ES6的新增语法
  9. oracle 常见错误
  10. Java 枚举(enum)
  11. android get方法的使用方法,android之HttpPostHttpGet使用方法介绍
  12. Google 包庇 Android 之父还给了 9000 万美元,女工程师们怒了!
  13. 【AtCoder】ARC090
  14. SQL Server 2012 - 数据表的操作
  15. CodeForces - 837F(二分组合思维)
  16. NspAction与JsonAction区别与用法
  17. java计算机毕业设计小区宠物管理系统源码+系统+数据库+lw文档
  18. 电子通信协议之CAN总线协议篇
  19. 群晖 VMM虚拟机安装windows XP
  20. 2022-2028年中国奶茶店行业竞争策略研究及未来前景展望报告

热门文章

  1. Trustednbsp;Wi-Fi和Untrustedamp;nb…
  2. 转: C#的25个基础概念
  3. 自主研发零兵兵棋对抗+推演+决策系统开发功能设计
  4. 真正的赚钱机会来了,你还不懂区块链?
  5. openlayers地图上要素拖动交互
  6. 【电子科学系保研】-- 厦门大学保研之旅
  7. Cool Edit Pro v2.1 消除人声
  8. win10去除右键菜单中的“使用skype共享”
  9. 图书管理demo(课程小作业,较简单)
  10. HTML5前端开发实战02-旅游网页面设计