《深入理解计算机系统》实验二Bomb Lab

2023-11-16

前言

《深入理解计算机系统》实验二Bomb Lab的下载和官网文档的机翻请看
《深入理解计算机系统》实验二Bomb Lab下载和官方文档机翻

用的调试工具是gdb,用到的指令如下

指令 作用
break 打断点
disassemble 查看汇编语言
run 重新开始运行文件
list 查看源代码
info registers 所有寄存器的值
p $rsp 查看寄存器rsp的值,其他寄存器同
next 单步调试(逐过程,函数直接执行),简写n
step 单步调试(逐语句:跳入自定义函数内部执行),简写s
continue 继续运行,简写c
info breakpoints 查看当前设置的所有断点
x/a 地址,x/s 地址。x/3a 查看地址的十六进制,查看地址的字符形式。3表示输出3个单位

第一炸

根据bomb.c的内容判断出第一个炸弹的函数是phase_1。
在这里插入图片描述
反编译bomb
在这里插入图片描述
找到main()随便看看
在这里插入图片描述
第一个参数通过寄存器%rdi传递
找到关键函数phase_1的信息
在这里插入图片描述
发现有个strings_not_equal函数根据它的名字意思是判断字符串相不相等,上面有个"mov $0x402400,%esi"指令,而寄存器%esi表示第二个参数,第一个参数%rdi是我们输入的字符串,那就应该是判断输入的字符串和寄存器%esi的值相不相等。
用gdb调试bomb
在这里插入图片描述
在phase_1函数打上断点,运行程序,随便输入一个字符串
在这里插入图片描述
到phase_1函数中查看一下0x402400地址中的值
在这里插入图片描述
这个就是我们需要相等的值。
找到ASCII找到0x7220726564726f42对应的字符
在这里插入图片描述
在这里插入图片描述
小端机器所以即

42 6f 72 64 65 72 20 72
B  o  r  d  e  r      r

Border r

直觉告诉我这答案不太对,感觉少了点啥。
试一下,炸了。
在这里插入图片描述
看到文档的
在这里插入图片描述
就试了一下
在这里插入图片描述
划了一下,居然给我看见了
在这里插入图片描述
看来就是这个字符串没错了

Border relations with Canada have never been better.

在这里插入图片描述
第一阶段拆除完毕。
后面发现在这里不应该查看十六进制
在这里插入图片描述
可以直接查看字符
在这里插入图片描述

第二炸

写第二炸之前我们先把第一炸的答案放入一个txt文件中
在这里插入图片描述
按照下面的方式运行就可以直接进入第二炸,不用在输一遍第一炸的答案
在这里插入图片描述
后同。

反汇编bomb找到phase_2函数
在这里插入图片描述
看到跳转去了read_six_numbers函数,看其意是输入六个数字。
在反编译bomb里找到read_six_numbers函数,看到这么多lea而且获取的地址间隔没有那么有规律,有点懵
在这里插入图片描述
查一下
在这里插入图片描述
地址的值。果然是输入六个数字,还是整数
在这里插入图片描述
反过来看phase_2函数,用gdb来调试看清楚点,看输入完六个字符后进行了什么操作。
在这里插入图片描述
把它大概用语言描述出来,还是有点懵

if(%rsp的值==1){
  %rbx=0x4(%rsp)	
  %rbp=0x18(%rsp)	

  do{
    %eax=-0x4(rbx)	
    %eax+=%eax		
    if(%eax==%rbx){	
      %rbx+=4		
    }
  }while(%rbp!=%rbx)
  
  //%rbp==%rbx通关

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

《深入理解计算机系统》实验二Bomb Lab 的相关文章

  • Linux系统的安装(在VM虚拟机上安装CentOS 7)

    工具准备 物理计算机一台 配置要求 操作系统 win10 64位 大家基本上都是 硬盘可用容量 20G以上 内存容量 4G以上 虚拟机安装包 VMware workstation full 12 5 下载链接 点我下载 提取码 9gha C
  • 计算机领域中随处可见的抽象

    想要管理多种具体的东西 那么需要遵守每种东西的规范 如果想要提供一种通用模式来对这些具体的东西统一管理 需要使用一种古老的技术 抽象 抽象是将多种具体的东西 管理时需要遵守的规范 的共同点抽取出来 放入到更高一层的抽象层 在抽象层不定义或少
  • unix环境高级编程——文件IO

    本期主题 unix环境高级编程 文件IO 文件IO 0 引言 1 文件描述符 2 IO编程中常用的API接口 1 open函数 2 close函数 3 read函数 4 write函数 5 lseek函数 3 函数sync fsync和fd
  • 掉电无法启动数据库问题解决

    由于突然掉电 造成客户在windows平台上10 2 0 1数据库无法驱动 以下是具体解决步骤 一 定位故障问题 1 启动数据库 查看错误 SQL gt startup ora 01113 file 1 needs media recove
  • Linux网络安全-Zabbix入门(一)

    一 基本概念 1 监控目的 运行情况 提前发现问题 2 监控资源类别 公开 tcp udp 端口 私有 cpu 磁盘 监控一切需要监控的东西 只要能够想到 能够用命令实现的都能用来监控 如果想远程管理服务器就有远程管理卡 比如Dell id
  • JSON.stringify()

    JSON stringify 将一个JavaScript值 对象或者数组 转换为一个 JSON字符串 如果指定了replacer是一个函数 则可以选择性的替换值 或者如果指定了replacer是一个数组 可选择性的仅包含数组指定的属性 语法
  • Linux 磁盘与文件系统管理(鸟哥私房菜)

    本文来自 http vbird dic ksu edu tw linux basic 0230filesystem php 第八章 Linux 磁盘与文件系统管理 系统管理员很重要的任务之一就是管理好自己的磁盘文件系统 每个分割槽不可太大也
  • office2013 excel 打开时提示excel词典xllex.dll文件丢失或损坏

    今天打开Excel时 发现报错 xllex dll文件丢失或损坏 我用的是office2013 网上找了好多都是2007的dll文件 导入不了 于是乎重装office 问题解决 但还是把xllex dll烤出来做个备份吧 参考下面步骤即可
  • Windows 添加永久静态路由

    route add p 10 10 0 0 mask 255 255 0 0 10 10 6 1 p 参数 p 即 persistent 的意思 p 表示将路由表项永久加入系统注册表
  • Linux系统编程:多线程交替打印ABC

    引言 分享关于线程的一道测试题 因为网上基本都是Java的解决方法 决定自己写一篇来记录一下线程的学习 问题描述 编写一个至少具有三个线程的程序 称之为线程 A B 和 C 其中线程 A 输出字符 A 线程 B 输出字符 B 线程 C 输出
  • 安装黑苹果双系统专辑贴(持续更新...)

    最近终于开始研究黑苹果 然后浏览了几篇文章贴收集一下 以便需要时随时阅览 和同学们互相学习 零基础篇 1 https blog csdn net a792396951 article details 80230946 2 https zhu
  • 操作系统笔记六(文件管理)

    1 文件逻辑结构 1 1逻辑结构的文件类型 分类 有结构文件 例如 PNG文件 无结构文件 1 2顺序文件 1 3索引文件 2 辅存的存储空间分配 2 1分配方式 连续分配 直接分配连续的存储空间 链接分配 隐式链接 在盘块内指定下一个盘块
  • Linux系统如何看目录属于哪个磁盘分区

    Linux是先有目录 再有磁盘分区 df h 目录 例如 没有挂载磁盘的目录 显示在系统盘 root iZ2ze57v3n0zma46zqiq8nZ sh 1 5 5 df h alidata Filesystem Size Used Av
  • Ubuntu9.04太多乱码(中文不能正常显示)

    最近在使用Ubuntu9 04的过程中 发现有好多地方都出现乱码 其实是中文不能正常显示 现在把我所遇到的所有乱码问题集中一下 方便以后查阅参考 一 Flash乱码 在终端输入 sudo gedit etc fonts conf d 49
  • 内存管理——分页分段

    一 分页存储管理 1 页面与页框 1 页面 将一个进程的逻辑地址空间分成若干个大小相等的片 称为页面或页 并为各页加以编号 2 页框 相应于页面 把内存空间分成和页面相同大小的若干个存储块 称为 物理 块或页框 frame 3 页内碎片 在
  • java IO、NIO、AIO详解

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 IO流 同步 阻塞 二 NIO 同步 非阻塞 三 NIO2 异步 非阻塞 正文 回到顶部 概述 在我们学习Java的IO流之前 我们都要了解几个关键词 同步与异步 sy
  • 如何快速构建CMBD系统-glpi

    脚本后续更新及迭代将由kkitDeploy项目代替 https github com luckman666 kkitdeploy server 请大家持续关注kkitDeploy 一 CMBD系统构建步骤 起初 开发这套CMBD系统是为了帮
  • C#实现FTP文件夹下载功能【转载】

    网上有很多FTP单个文件下载的方法 前段时间需要用到一个FTP文件夹下载的功能 于是找了下网上的相关资料结合MSDN实现了一段FTP文件夹下载的代码 实现的思路主要是通过遍历获得文件夹下的所有文件 当然 文件夹下可能仍然存在文件夹 这样就需
  • Linux(12):磁盘配额(Quota)与进阶文件系统管理

    磁盘配额 Quota 的应用与实作 Quota 的一般用途 针对 www server 例如 每个人的网页空间的容量限制 针对 mail server 例如 每个人的邮件空间限制 针对 file server 例如 每个人最大的可用网络硬盘
  • 【操作系统xv6】学习记录4-一级页表与二级页表

    占位

随机推荐

  • 使用请求队列实验

    关于块设备架构就讲解这些 接下来我们使用开发板上的 RAM 模拟一段块设备 也就是ramdisk 然后编写块设备驱动 首先是传统的使用请求队列的时候 也就是针对机械硬盘的时候如何编写驱动 先分段分析一下驱动代码 1 重要的数据结构及宏定义
  • 简单好用的小控件------自定义checkbox

    1 首先在drawable文件夹中添加drawable文件checkbox style xml html view plain copy
  • Centos7关闭防火墙时遇到的错误Failed to start firewalld.service: Unit not found. Unit firewalld.service could no

    Centos7关闭防火墙 今天在centos上想要关闭防火墙 查了一些博客 执行命令 systemctl status firewalld service 时报错Unit firewalld service could not be fou
  • 常见缺少msvcp140.dll问题及解决方法,分享多种方法帮你解决

    在日常使用电脑的过程中 我们可能会遇到各种问题 比如电脑提示msvcp140 dll文件丢失 这个问题通常是由于某些程序或游戏需要这个dll文件来正常运行 但是由于某种原因 这个文件被误删或者损坏了 那么 如何解决这个问题呢 本文将为您提供
  • 队列算法的原理和实现,及其企业级应用

    目录 一 队列的原理 二 队列的算法实现 队列的算法实现1 使用数组 队列的算法实现2 使用链表 三 队列的企业级应用案例 一 线程池中的任务队列 二 循环队列 三 优先队列 四 动态顺序队列 五 高并发 WEB 服务器队列的应用 一 队列
  • 华为硬件工程师社招机考题库_华为硬件工程师笔试题

    有效地扩展放大器的通频带 改善放大器的线性和非线性失真 6 放大电路的频率补偿的目的是什么 有哪些方法 仕兰微电子 频率补偿目的就是减小时钟和相位差 使输入输出频率同步 很多放大电路里都会用到锁相环频率补偿电路 7 频率响应 如 怎么才算是
  • python中数据的初始化

    1 普通数据的初始化 在函数以外的地方初始化数据 若数据是不同名 但初始值一样 则可以这样写 a b c d 0 2 函数参数区域的数据初始化 可以在形参的范围内去初始化各个不同名字的参数 def f value 0 reverse Fal
  • 安防音视频(rtsp,onvif,gb28181)的HTML5(H5)解决方案(直播,回放,PTZ)

    背景 单位需要在基于H5的管理软件中接入安防音视频 直接在H5上实现不容易 只能选择第三方开发包 本文对klporxy使用做个简单记录 开发包的获取 开发包为共享软件 2路视频是免费的 需要的可以点击下载 或者邮件联系5614280 qq
  • Ubuntu 如何切换到root账户

    root账号问题ubuntu默认禁用了root账号 所以当年试图使用su root命令切换到root用户时 尽管你已经输入了正确的密码 终端依旧会提示你密码错误 你需要执行以下命令解除root账号的锁定1 打开终端 Dash搜索termin
  • 面对AI,要(能)当“杜兰特”吗?

    大家好 我是老三 先说一下这篇文章没什么干货 就是一篇随笔 今天闲来无事 在掘金上刷到一篇文章 GPT 4都来了 我们还需要刷算法题和背八股文吗 https juejin cn post 7211120847787098171 文章还行 但
  • 为什么技术开发者应该读一读《浪潮之巅》

    上周已经阅读完吴军老师的著作 浪潮之巅 第二版 迄今仍然激情澎湃 这本著作以平和直白的笔触介绍了硅谷IT企业们的发展史 看像微软 谷歌 苹果等优秀的IT企业们 从白手起家 到发展壮大成为今天的巨头 再看太阳微系统公司 雅虎公司从创造辉煌 到
  • 关于Eclipse如何改成中文的方法

    从官网下载的Eclipse是英文版的 对于我这种新手来说要上手比较困难 所以需要改成中文版的 咱们首先进入Eclipse语言包的网址 如下图所示进行操作 如图所示 找到对应的版本进入 找到标题为Language Chinese Simpli
  • 常用的正则表达式集锦

    常用的正则表达式集锦 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 4
  • 【FreeRTOS学习计划】 第九节 支持时间片

    FreeRTOS 与隔壁的 RT Thread 和 C OS 一样 都支持时间片的功能 所谓时间片就是同一个优先级下可以有多个任务 每个任务轮流地享有相同的 CPU 时间 享有 CPU 的时间我们叫时间片 在 RTOS 中 最小的时间单位为
  • 随笔:vscode-latex中文配置

    vscode用的久了 感觉确实比texstudio好用 question 1 vscode latex中文配置 vscode安装LaTeX Workshop Extension 默认latexmk就已经可以满足写英文paper的要求了 因为
  • 【STM32】基于STM32F407实现串口通信

    目录 一 通用同步异步收发器 USART 1 USART 简介 2 USART 功能说明 3 USART框图 二 基于HAL库实现串口通信 1 工程创建 2 HAL库UART函数库介绍 3 USART接收与发送 三 总结 四 参考 一 通用
  • vSphere 7.0+Replication 8.3安装配置

    esxi嵌套后建立的VM无法与其它未嵌套的VM通讯 需要更改物理ESXi的网络配置 接受混杂模式 接受mac变更等三个选项 更改kernel网络的配置 勾选vsphere replication 否则配置VM的复制策略时会报错 请验证源主机
  • 嘘!市面上短视频(douyin)“去水印”的工具原来是这样实现的

    现在视频号非常火热 之前在做抖音和快手的人就直接把之前的视频直接搬运过来了 但是从抖音app下载的视频都是带官方水印的 这个是怎么去掉的 哦 不对 他们应该都有保留原视频的吧 但是还有很多人是直接搬运别人的视频的 那他们是怎么去水印的呢 其
  • Cytoscape安装后无法打开

    Cytoscape是一款图形化显示网络并进行分析和编辑的软件 从官网下载了最新的版本 3 7 2 由于Cytoscape需要Java环境才能运行 如果你的电脑还没有Java环境 在安装时最新的3 7 2版本会自动下载并安装Java好环境 自
  • 《深入理解计算机系统》实验二Bomb Lab

    前言 深入理解计算机系统 实验二Bomb Lab的下载和官网文档的机翻请看 深入理解计算机系统 实验二Bomb Lab下载和官方文档机翻 用的调试工具是gdb 用到的指令如下 指令 作用 break 打断点 disassemble 查看汇编
Powered by Hwhale