哈工大csapp lab3

2023-11-08

计算机系统实验报告

  • 1 -

实验报告
实 验(三)
题 目 Binary Bomb
二进制炸弹
专 业 计算学部
学 号 190110812
班 级 7
学 生 刘新晨
指 导 教 师 吴锐
实 验 地 点 G707
实 验 日 期 2021.4.12
计算机科学与技术学院
计算机系统实验报告

  • 2 -

目 录

第 1 章 实验基本信息 … - 3 -
1.1 实验目的… - 3 -
1.2 实验环境与工具… - 3 -
1.2.1 硬件环境 … 错误!未定义书签。
1.2.2 软件环境 … 错误!未定义书签。
1.2.3 开发工具 … 错误!未定义书签。
1.3 实验预习… 错误!未定义书签。
第 2 章 实验环境建立 … - 4 -
2.1 UBUNTU 下 CODEBLOCKS 反汇编(10 分) … - 4 -
2.2 UBUNTU 下 EDB 运行环境建立(10 分)… - 4 -
第 3 章 各阶段炸弹破解与分析 … - 6 -
3.1 阶段 1 的破解与分析… - 6 -
3.2 阶段 2 的破解与分析… - 7 -
3.3 阶段 3 的破解与分析… - 9 -
3.4 阶段 4 的破解与分析… - 9 -
3.5 阶段 5 的破解与分析… - 9 -
3.6 阶段 6 的破解与分析… - 9 -
3.7 阶段 7 的破解与分析(隐藏阶段)… - 9 -
第 4 章 总结 … - 10 -
4.1 请总结本次实验的收获… - 10 -
4.2 请给出对本次实验内容的建议… - 10 -
参考文献 … - 11 -

计算机系统实验报告

  • 3 -

第 1 章 实验基本信息
1.1 实验目的
熟练掌握计算机系统的 ISA 指令系统与寻址方式
熟练掌握 Linux 下调试器的反汇编调试跟踪分析机器语言的方法
增强对程序机器级表示、汇编语言、调试器和逆向工程等的理解
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
计算机系统实验报告

  • 4 -
    第 2 章 实验环境建立

2.1 Ubuntu 下 CodeBlocks 反汇编(10 分)
CodeBlocks 运行 hellolinux.c。反汇编查看 printf 函数的实现。
要求:C、ASM、内存(显示 hello 等内容)、堆栈(call printf 前)、寄存器
同时在一个窗口。
图 2-1 Ubuntu 下 CodeBlocks 反汇编截图
2.2 Ubuntu 下 EDB 运行环境建立(10 分)
用 EDB 调试 hellolinux.c 的执行文件,截图,要求同 2.1
计算机系统实验报告

  • 5 -
    图 2-2 Ubuntu 下 EDB 截图
    计算机系统实验报告
  • 6 -

第 3 章 各阶段炸弹破解与分析
每阶段 15 分(密码 10 分,分析 5 分),总分不超过 80 分
3.1 阶段 1 的破解与分析
密码如下:There are rumors on the internets.
破解过程:
首先使用 objdump -d bomb > bomb.txt 获得 bomb 程序的反汇编结果并保存
于文本文件 bomb.txt 中供分析
打开后发现 phase1 中使用 strings_not_equal 判断输入的字符串和%rsi 中的
字符串是否相等,如果相等则令%eax 为 0,否则为 1。
计算机系统实验报告

  • 7 -
    read_line 将用户输入的字符串的返回值转移给%rdi,并且在 phase_1 中与
    0x403150 中储存的密码相比较,所以只需找到 0x403150 中储存的密码即可
    查看地址 0x403150 中的内容得到密码为 There are rumors on the internets.
    3.2 阶段 2 的破解与分析
    密码如下:1 2 4 8 16 32
    计算机系统实验报告
  • 8 -
    破解过程:
    分析 phase_2 得,由函数 read_six_numbers 可猜测会输入六个 int 型的数值。
    首先 cmpl $0x0,-0x30(%rbp)即比较 0 和-0x30(%rbp)且小于 0 时爆炸,故第一
    个数必须大于等于 0
    %ebx 的初始值为 1,然后判断其是否小于等于 5,并将此条件作为循环条件,每次
    循环一次,%ebx 都加 1,到%ebx=5 时跳出循环。
    计算机系统实验报告
  • 9 -
    检验后一个数是否为前一个数的两倍,最终得到答案 1 2 4 8 16 32
    3.3 阶段 3 的破解与分析
    密码如下:
    破解过程:
    首先查看 0x40319e 来判断输入类型
    得出结论,该阶段要输入%d %c %d 的数据类型
    3.4 阶段 4 的破解与分析
    密码如下:
    破解过程:
    3.5 阶段 5 的破解与分析
    密码如下:
    破解过程:
    3.6 阶段 6 的破解与分析
    密码如下:
    破解过程:
    3.7 阶段 7 的破解与分析(隐藏阶段)
    密码如下:
    破解过程:
    计算机系统实验报告
  • 10 -

第 4 章 总结
4.1 请总结本次实验的收获
1.学会了 gdb 的调节和各种命令。
2.对 C 语言下字符串比较、循环、分支(含 switch)、函数调用、递归、指针、
结构、链表等有了更深刻的理解。
3.更加深刻地理解了汇编语言,程序机器级表示以及逆向工程。
4.2 请给出对本次实验内容的建议
希望对 gdb 调试的讲解更加细致一些。
注:本章为酌情加分项。
计算机系统实验报告

  • 11 -

参考文献

为完成本次实验你翻阅的书籍与网站等
[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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哈工大csapp lab3 的相关文章

  • 域名购买以及解析域名到服务器IP----史上最详细小白教程没有之一

    昨天 我师父看了我的云服务器配置的博客 给我提了个意见 我觉得非常好 以后我会在截图的时候标清楚步骤的 希望各位博友 以后可以给我多提意见 通过评论的方式也可以 我也将推出更多高质量的文章 目前目标是排名突破前10万 如果想一同学习的 欢迎
  • python后端学习(十)多继承和MRO顺序、再论静态方法和类方法、property属性及应用、魔法属性、with与“上下文管理器”

    多继承和MRO顺序 1 单独调用父类的方法 coding utf 8 print 多继承使用类名 init 发生的状态 class Parent object def init self name print parent的init开始被调
  • leetcode 周赛——2848. 与车相交的点

    题目所属分类 差分数组知识点 原题链接 给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标 对于任意下标 i nums i starti endi 其中 starti 是第 i 辆车的起点 endi 是第 i 辆车
  • 宽字节注入讲解

    我讨厌现在的自己 一边压抑着自己的情绪 一边装作没事的样子 一到深夜就彻底崩溃了 天亮后还要微笑面对生活 网易云热评 一 原理 1 单字节字符集 所有的字符都使用一个字节来表示 比如 ASCII 编码 0 127 2 多字节字符集 在多字节
  • 区块链技术入门——核心概念与原理

    区块链的前世今生 密码朋克 Cypherpunk 是一个邮件组 里面有许多大牛 比特币的底层技术 点对点网络 时间戳 加密技术 工作量证明 可以应用到其他领域 将这些技术提炼出来 就提出了区块链概念 区块链不是单一的技术 而是一系列技术的集
  • ASP.NET Core快速入门(第5章:认证与授权)--学习笔记

    课程链接 http video jessetalk cn course explore 良心课程 大家一起来学习哈 任务31 课时介绍 1 Cookie based认证与授权 2 Cookie based认证实现 3 Jwt认证与授权介绍
  • TCP: SYN ACK FIN RST PSH URG

    三次握手Three way Handshake 一个虚拟连接的建立是通过三次握手来实现的 1 B gt SYN gt A 假如服务器A和客户机B通讯 当A要和B通信时 B首先向A发一个SYN Synchronize 标记的包 告诉A请求建立
  • 金属学复习【3】 --- 二元合金相图和合金的凝固

    一 合金中的相 1 相图中呈现的内容一定是处于热力学平衡态的 即系统自由能最小态 2 纯铁的改变量只有温度和压力 所以我们用温度和压力来制作纯铁的相图 把溶质融到溶剂中 形成的均匀的 单相的物质就是溶体 以特定比例形成的化合物称为化学计量比
  • Linux下执行wget无效问题

    安装好后的CentOS 7想安装个redis学习下 发现不识别wget命令 wget http xxx tar gz 原因是安装CentOS系统的时候安装的最小配置 默认没有安装wget 只需要yum y install wget即可
  • linux桌面动态,ubuntu 中设置动态壁纸

    为了开发android 功能 ubuntu系统也使用了好久时间 作为一个经常使用的系统 不捣鼓捣鼓就太平淡 根据网上的一些介绍 搞了一个动态壁纸出来 用来定时更换壁纸 首先创建一个文件夹 里面三个文件 其余根据自己喜好放入壁纸文件 第一个文
  • C语言黑科技—指针读写

    PS 本人之前对于指针的了解基本为0 更是没有实际使用过指针 后来在开发中学习到了利用指针在固定地址读取或者写入数据的方法 以及利用指针提取数组的方法 这里简单分享一下 手法可能有些粗陋 如果有大佬有其他方法欢迎留言交流 目录 1 利用指针
  • clang

    一 Clang简介 简单来说 Clang是一个编译器 目前用来编译C C Objective C语言 更进一步来说 Clang只是一个编译器前端 其将上述的C类语言编译成一种 汇编语言 中间语言 接着 通过LLVM Low Level Vi
  • Docker打包镜像的两种方式

    前言 Docker镜像是一个特殊的文件系统 既提供了运行时所需的程序 库和资源 还提供了相应的配置参数 只是不包含动态数据 我们可以将任何我们的软件产品打包成镜像 以供服务器能够用Docker直接快速安装并部署运行 System Linux
  • 学会python可以做什么工作,python能做什么项目

    python能做什么工作 现在互联网发展迅速 众多行业巨头 都已经转投到人工智能领域 而人工智能的首选编程语言就是python 所以学好Python能够从事的工作还是很多的 而且前景非常不错 学完python可以应用于以下领域 Web 和
  • 数组实现线程安全的栈

    package quiz 线程安全的栈实现 固定10容量 扩展容量没有用到 public class StackImplUseArray private Object objs new Object 10 栈元素 private int i
  • linux 下工具

    一 文本比较工具 命令行有 colordiff 图形化的有 meld bcompare 二 记事本 tomboy 工具 快捷键 Bold C B Italic C I Strikeout C S Highlight C H Underlin
  • Hibernate学习笔记 单表映射

    建立实体类 配置好SessionFactory之后 我们就可以开始建立一对一的单表映射了 首先需要建立一个实体类 这里Getter Setter toString equals等方法省略了 我们可以方便的使用IDEA或者Eclipse的生成
  • 【分享】ROM厂商刷机工具合集

    1 MTK刷机 SP Flash Tool下载地址 SP Flash Tool v5 1924 Download SmartPhone Flash Tool MTKClient 下载地址 Releases notmyst33d mtkcli
  • MySQL—存储引擎(下)

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 树高千尺 落叶归根人生不易 人间真情 前言 上一章讲了存储引擎 本章继续 从特点开始 目录 MySQL 1
  • 中国1-0胜新加坡

    TOM体育讯 北京时间8月16日 亚洲杯预选赛战火重新点燃 中国队在本轮比赛中坐镇天津泰达体育场迎战小组赛的又一个对手新加坡队 结果在赵旭日下半场被早早罚下 中国队以少打多的不利局面下 中国队的顽强感动了上苍 也拯救了自己 补时最后一分钟

随机推荐