2024Spring> HNU-计算机系统-实验3-Bomblab-导引/答疑

news2024/11/27 4:12:55

前言

BombLab一定要花时间完成哦,对于期末卷面的提升和计算机系统的理解都非常重要。

导引

①文件目录概览

助教下发一个文件包,打开之后是这样的几个文件。

这几个文件解释如下

  • bomb:可执行文件,无法打开,我们主要研究的对象
  • bomb.c文件
  • bomb-quiet:暂时不需要关注
  • README文件
②反汇编

对bomb进行反汇编:在终端中输入以下指令

objdump -d bomb >m.txt

这一步是使用objdump对bomb可执行文件反汇编,并保存在txt文件中。

在这一步之后,文件夹中打开m.txt即可查看汇编代码。

③实验流程-概览

bomb可执行文件会读取你的输入,并与它的内部存储进行匹配。

该可执行文件内部有多段,如果你的输入能够匹配的话,程序就可以继续执行。直到这多段全部完成。这就是最终的成功。否则,如果中间任意一步出现问题,就会爆炸(即结束程序,终端输出bomb)。如下,我输入错误答案1使之引爆。

▲bomb可执行文件大致的执行逻辑可以在bomb.c中看到(bomb.c就是删去了各部分验证函数之后的主函数)

以phase_4为例,bomb读取你的输入,并与内部进行比对,如果正确就继续,否则调用bomb表示该步骤破译失败。

最终在你成功破译所有问题之后,效果大概是这样:

 ④实验流程-破译

以较为简单的phase_1为例:

汇编代码中,有一段这里调用了explode_bomb,而这是导致程序终止执行的原因,想办法让这句汇编代码不被执行。当然比较容易想到的是跟跳转结合起来,不跳转到这里或者跳转到别的地方即可。再注意到这里的<string_not_equal>似乎是某个字符串比较,可以想到bomb从我这里读入的密码是不是与字符串有关,从而继续研究下去……

⑤实验流程-验证

使用./bomb开始执行炸弹文件,然后逐个输入每题的密码,可以看到是否正确的反馈。

如这里反馈“phase 1 defused” 表示第一个通过了。

逐个这样验证下去直到最终结果。

▲如果出现permission denied的情况,使用chmod 777 bomb,改变可执行文件的权限即可。

⑥实验技巧-逐步调试 

使用gdb进行逐步调试,可以提升效率(有时想看如何跳转,有时不想重新开始)

下面开始逐步调试:

gdb -q bomb

若没有gdb,就安装gdb

成功安装后就可以逐步调试

gdb调试是基础,这里不再赘述。

⑦实验技巧-保存答案与快速验证

我不想每次都使用./bomb然后逐个输入答案,这样太烦了。

有没有什么办法能够快速验证我前几步是否正确?

可以将答案写在ans.txt中,一行写一道题目的答案即可。

然后使用./bomb ans.txt来运行,bomb会逐个读入文件中的每一行作为每一题的答案。

★期望

希望你能:

  • (重要)独立完成该实验
  • 熟练掌握汇编代码的阅读能力
  • 总结归纳对于阅读汇编的小技巧,小心得
  • 从该实验中收获乐趣

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1599786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拥抱企业消费新纪元,胜意科技2024代理人大会圆满落幕

因信赖相聚&#xff0c;为共赢而来。近日&#xff0c;由胜意科技主办的“做好生意&#xff0c;拥抱胜意——2024代理人大会”在武汉成功召开&#xff0c;吸引了全国各地百余家TMC生态合作伙伴齐聚一堂&#xff0c;共同探讨数字化浪潮下的差旅管理实践&#xff0c;激发增长新智慧…

突破编程_前端_SVG(使用 svg-pan-zoom 库进行平移与缩放)

1 svg-pan-zoom 概述 svg-pan-zoom 是一个轻量级、高性能且易于使用的 JavaScript 库&#xff0c;专为增强 SVG 图像的浏览体验而设计。它提供了平移和缩放功能&#xff0c;使用户能够无缝探索大型或复杂的 SVG 图形。这个库允许用户对SVG图像进行交互操作&#xff0c;包括缩放…

Transformer的Decoder的输入输出都是什么

目录 1 疑问&#xff1a;Transformer的Decoder的输入输出都是什么 2 推理时Transformer的Decoder的输入输出 2.1 推理过程中的Decoder输入输出 2.2 整体右移一位 3 训练时Decoder的输入 参考文献&#xff1a; 1 疑问&#xff1a;Transformer的Decoder的输入输出都是什么 …

【Redis 神秘大陆】009 案例实践进阶

九、案例实践&进阶方案 9.1 本地缓存组件选型 使用缓存组件时需要重点关注集群方式、集群、缓存命中率。 需要关注集群组建方式、缓存统计&#xff1b;还需要考虑缓存开发语言对缓存的影响&#xff0c;如对于JAVA开发的缓存需要考虑GC的影响&#xff1b;最后还要特别关注…

CubelMX点灯

工程配置 开发板led引脚图 工程io配置 配置PB5 为输出 配置 PE5 为输出 时钟配置 写测试代码 配置工程&#xff0c;下载运行。 参考链接 STM32入门教程-1.点灯_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1dC41147eL/?spm_id_from333.788&vd_sourcee821a225c7b…

机器人交互新纪元:讯飞星火大模型引领升级浪潮

放眼全球&#xff0c;大模型浪潮从前沿话题到规模落地&#xff0c;传统计划和商业模式正在“重构”。依托大模型的持续迭代与快速升级&#xff0c;从文本生成、图像生成乃至视频生成&#xff0c;AI不断改变工作本质&#xff0c;为产业发展注入“超能量”。 当众多行业还在探索大…

NL2SQL进阶系列(5):论文解读业界前沿方案(DIN-SQL、C3-SQL、DAIL-SQL、SQL-PaLM)、新一代数据集BIRD-SQL解读

NL2SQL进阶系列(5)&#xff1a;论文解读业界前沿方案&#xff08;DIN-SQL、C3-SQL、DAIL-SQL&#xff09;、新一代数据集BIRD-SQL解读 NL2SQL基础系列(1)&#xff1a;业界顶尖排行榜、权威测评数据集及LLM大模型&#xff08;Spider vs BIRD&#xff09;全面对比优劣分析[Text2…

随笔-做好卖麻辣烫的准备

前两天突然接到宝哥的微信&#xff0c; 宝哥&#xff1a;有啥项目没有&#xff1f; 我&#xff1a;&#xff1f;啥项目&#xff1f; 宝哥&#xff1a;那个卖奶茶的。 我&#xff1a;什么情况&#xff0c;你要去卖奶茶啊。 宝哥&#xff1a;有这个打算&#xff0c;年前被裁…

CodeForce[1500-2000]——1946D Birthday Gift

codeforce刷题日记 题目大意:一道位运算有关的题&#xff0c;题目大意是给一个长度为n的整形数组&#xff0c;要求将其分成连续的k段&#xff0c;让每段的元素异或后的结果进行或运算&#xff0c;要让这个值<x&#xff0c;求k的最大值。 问题难点在分成k段的依据是什么&…

LeetCode 每日一题 Day 123-136

1379. 找出克隆二叉树中的相同节点 给你两棵二叉树&#xff0c;原始树 original 和克隆树 cloned&#xff0c;以及一个位于原始树 original 中的目标节点 target。 其中&#xff0c;克隆树 cloned 是原始树 original 的一个 副本 。 请找出在树 cloned 中&#xff0c;与 tar…

【k8s】:深入理解 Kubernetes 中的污点(Taints)与容忍度(Tolerations)

【k8s】&#xff1a;深入理解 Kubernetes 中的污点&#xff08;Taints&#xff09;与容忍度&#xff08;Tolerations&#xff09; 1、污点&#xff08;Taints&#xff09;2、容忍度&#xff08;Tolerations&#xff09;3、示例演示-测试污点的具体应用场景3.1 给节点打污点&…

【C++】类和对象③(类的默认成员函数:拷贝构造函数 | 赋值运算符重载)

&#x1f525;个人主页&#xff1a;Forcible Bug Maker &#x1f525;专栏&#xff1a;C 目录 前言 拷贝构造函数 概念 拷贝构造函数的特性及用法 赋值运算符重载 运算符重载 赋值运算符重载 结语 前言 本篇主要内容&#xff1a;类的6个默认成员函数中的拷贝构造函数…

算法练习第17天|104.二叉树的最大深度 、559.N叉树的最大深度

104.二叉树的最大深度 104. 二叉树的最大深度 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/ 什么是二叉树的深度和高度&#xff1f; 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。最大深度…

03_信号和槽

信号和槽 系统的信号和槽自定义信号和槽Lambda表达式 系统的信号和槽 下面我们完成一个小功能&#xff0c;上面我们已经学习了按钮的创建&#xff0c;但是还没有体现出按钮的功能&#xff0c;按钮最大的功能也就是点击后触发一些事情&#xff0c;比如我们点击按钮&#xff0c;…

链表里面头节点存在的目的

头节点存在的目的&#xff1a; 在单链表的使用中&#xff0c;头结点&#xff08;Header Node&#xff09;是一个常用的概念&#xff0c;特别是在进行链表操作时。头结点不是数据域中实际存储的数据节点&#xff0c;而是作为链表操作的辅助节点&#xff0c;它包含对第一个实际数…

二路归并排序的算法设计和复杂度分析(C语言)

目录 实验内容&#xff1a; 实验过程&#xff1a; 1.算法设计 2.程序清单 3.运行结果 4.算法复杂度分析 实验内容&#xff1a; 二路归并排序的算法设计和复杂度分析。 实验过程&#xff1a; 1.算法设计 二路归并排序算法&#xff0c;分为两个阶段&#xff0c;首先对待排…

HADOOP大数据处理技术7-JavaSe

一粒尘埃 在空气中凝结 最后生成磅礴的风 ​ 生活有时会像一场暴风雨&#xff0c;狂风骤雨让人无法呼吸&#xff0c;但即使如此&#xff0c;也请记住&#xff0c;每一次风雨过后都会是一轮明媚的阳光。在黑暗中寻找光明&#xff0c;在困境中寻找希望&#xff0c;因为最终胜利属…

T细胞耗竭

目录 T Cell Exhaustion T 细胞衰竭路径上的细胞和分子路标 研究起源 介绍 T 细胞耗竭的发生路径 耗尽的T细胞亚群的解剖分离和迁移 持续TCR刺激的收益递减 通过共调节受体进行发育微调 细胞因子介导的耗尽T细胞亚群的特异性 T细胞耗竭和表观遗传 T Cell Exhaustion…

最新:阿里云服务器--学生优惠版购买以及配置方法

阿里云学生服务器免费申请&#xff0c;之前是云翼计划学生服务器9元/月&#xff0c;现在是高校计划&#xff0c;学生服务器可以免费申请&#xff0c;先完成学生认证即可免费领取一台云服务器ECS&#xff0c;配置为2核2G、1M带宽、40G系统盘&#xff0c;在云服务器ECS实例过期之…

Linux Docker容器安装和使用(最简洁快速方式)

Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口。本篇讲…