深入理解操作系统实验——bomb lab(作弊方法1)

2023-11-01 04:20

本文主要是介绍深入理解操作系统实验——bomb lab(作弊方法1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、作弊方法1:
实际上这个实验有一个更加有趣的作弊方法,下面是对作弊方法的讲解:
这道题只是给了一个可执行程序,看上去并没有什么可以作弊的情况,非常的安全,我们没有办法通过修改c语言源代码或者汇编语言代码达到直接修改代码的目的,但实际上,我们可以通过hexedit语句对可执行程序进行直接的修改,这样就不用管你的代码是什么,你的密码是什么,你的算法是什么,我直接从函数头跳转到函数尾部,跳过整个函数,这样不管是什么密码都可以通过,下面是具体的操作:
首先还是将整个bomb可执行文件反汇编为汇编语言文件,这样至少我是可以看懂的,才能进行下面的操作。
对于第一个炸弹,通过汇编发现他的汇编代码如上所示,而很明显我们可以修改那个跳转指令,他是74,即je跳转指令,表示只有当相等的时候才能通过,那么我们只要修改为EB,即jmp跳转指令,表示无条件跳转,这样不管我第一个代码输入什么,都可以通过。
在这里插入图片描述
在这里插入图片描述
对于第二个炸弹,通过汇编发现他的汇编代码如上所示,同样我们还是从跳转指令下手,这里有两个跳转,都是74,je跳转,表示只有当相等的时候才能通过,那么我们也同样的修改为EB,jmp无条件跳转指令,这样只要我们输入的数据满足六个元素,不管输入什么都可以通过。
在这里插入图片描述
修改后的汇编代码为:
在这里插入图片描述
对于第三个炸弹,通过汇编发现他的汇编代码如上所示。这个有点复杂,因为第三个炸弹是一个switch选择语句,那么我还是只修改一种情况,我选择了第一个数据为0的时候的数据。首先修改switch的跳转语句为无条件跳转,实际上这个可改可不改,然后修改跳转指令,使不管第二个和第三个是什么都会发生跳转,这样密码就被修改为了“0 无限制 无限制”
在这里插入图片描述
修改后的汇编代码为:
在这里插入图片描述
对于第四个炸弹,通过汇编发现他的汇编代码如上所示。第四个比较麻烦,第一点在于这里递归调用了一个函数,另一点是这里还是隐藏炸弹的入口点。首先发现有五个跳转指令,将第三个74,je相等跳转指令修改为EB,jmp无条件跳转指令,就会直接跳转到原来的比较指令,将原本的75jne不相等跳转指令修改为74,je相等跳转指令,将不会发生跳转来引爆炸弹,然后将最后一个的74,je相等跳转指令修改为EB,75无条件跳转指令,这样输入两个无限制的数据都可以解决。
在这里插入图片描述
在这里插入图片描述
对于第五个炸弹,通过汇编发现他的汇编代码如上所示。这里要输入一个六字符的字符串,所以只要先把第一个判断是否六字符的74,je相等跳转指令修改为EB,jmp无条件跳转指令,然后将75,jne不相等跳转指令修改为74,je相等跳转指令这样就可以避开引爆指令,然后在将最后的一个74,je相等跳转指令修改改为EB,jmp无条件跳转指令,这样就可以跳过整个函数,只要输入任意的字符串就可以。
在这里插入图片描述
在这里插入图片描述
对于第六个炸弹,通过汇编发现他的汇编代码如上所示。这里发现源代码非常的复杂,所以这里仅仅通过修改跳转的方式是很难得,但只要修改跳转地址就可以。这里首先将原本的76 05修改为EB 5A无条件跳转到0x8048eba位置,然后再将0x8048eba位置的EB D6修改为EB 49无条件跳转到函数尾部结束。这样只要输入六个数据就可以通过函数。
在这里插入图片描述
在这里插入图片描述
对于隐藏炸弹,通过汇编发现他的汇编代码如上所示。首先要修改他的入口方式,可以看到他的入口是一个简单的74,je相等跳转指令,只要修改为eb,jmp无条件跳转指令就可以直接进入。然后将秘密炸弹处的76,jbe跳转指令修改为EB,jmp无条件跳转指令,再将74,je相等跳转指令修改为EB,jmp无条件跳转指令,这样不管输入什么,都可以通过函数,最终在第四个位置末尾输入任何一个数据就可以进入秘密炸弹,输入任何都可以通过秘密炸弹。
在这里插入图片描述
在这里插入图片描述
最终结果如图所示:
在这里插入图片描述

这篇关于深入理解操作系统实验——bomb lab(作弊方法1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/320442

相关文章

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

webm怎么转换成mp4?这几种方法超多人在用!

webm怎么转换成mp4?WebM作为一种新兴的视频编码格式,近年来逐渐进入大众视野,其背后承载着诸多优势,但同时也伴随着不容忽视的局限性,首要挑战在于其兼容性边界,尽管WebM已广泛适应于众多网站与软件平台,但在特定应用环境或老旧设备上,其兼容难题依旧凸显,为用户体验带来不便,再者,WebM格式的非普适性也体现在编辑流程上,由于它并非行业内的通用标准,编辑过程中可能会遭遇格式不兼容的障碍,导致操

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝