3.bomb.c文件解析 #include<stdio.h>#include<stdlib.h>#include"support.h"#include"phases.h"/** Note to self: Remember to erase this file so my victims will have no* idea what is going on, and so they will all blow up in a* spectaculary fiendish explosion. -- Dr. Evil*/FILE*infi...
可以看出是第二行传入一个地址给%esi, 然后调用函数callq 401338 <strings_not_equal>调用函数,之后对返回值(在%eax中)进行测试,如果是0,则跳过callq 40143a <explode_bomb>爆炸函数,所以我们的目标是让strings_not_equal函数返回0,猜测我们需要输入的字符串应该与地址$0x402400有关 打开gdb调试 gdb bomb 设置断...
default: explode_bomb(); key=0; } if(b!=key){ explode_bomb(); } } 故第三关的答案有8组,分别是0 207、1 311、2 707、3 256、4 389、5 206、6 682、7 327 第三关主要考察了一个switch选择结构,将switch的分支跳转地址存储在数据段,然后通过一个动态的值来控制实际程序执行过程中的跳转。 Pha...
我们输入两个数字,这里跳转就能通过了。然后发现第一个数字不能大于7,我们随意填了个0,重新调试再试试,然后发现jmp到了57,走下去会发现%eax就是第二个数的答案,所以此题答案为0 0xcf。 其实这道题最简单的解法就是输入两个数,跟着单步调试走,你很容易就能确定两个数字的内容,但是其实你再多看两眼,就会发现其实...
显然这里是调用字符串比较函数比较我们输入的字符串和存放在0x402400地址的字符串是否相等,紧接着调用test指令,如果eax为0也就是两个字符串相等就跳转到函数结尾,否则调用explode_bomb函数,这个就是引爆炸弹的函数。到这里答案也就出来了,我们需要输入的就是存放在0x402400处的字符串。接下来用gdb开始调试...
完成CSAPP实验中的"bomb lab"(上)后,我们来逐步解析各个阶段的挑战。首先,确保使用Debian 9.4非虚拟机环境,GDB调试工具必不可少,Windows用户可能需借助WSL或自行安装GDB。实验核心是通过调试bomb.c文件,解密六个阶段的密码。在Phase_1中,主要任务是找到输入字符串与特定字符串的匹配。通过反汇编...
Bomb Lab 来自《深入理解计算机系统》(CSAPP)一书的第三章的配套实验,该实验的目的是通过反汇编可执行程序,来反推出程序执行内容,进而能够正确破解”密码“,解除“炸弹”。 本实验共有6个 phase,对于每个 phase,你需要输入一段字符串,然后让代码中 explode_bomb函数不执行,这样就不会 boom !
实验二—BombLab 实验材料 一个能够运行的Linux或者Unix系统 官网的实习手册 实验规则 实验共有6个关卡,分别是phase_1到phase_6,对于每一个关卡,...
maduiersnfotvbyl”,通过ASCII码低位得到特定字符。phase_6分解为6部分分析,最终输入数字(4, 3, 2, 1, 6, 5)解除炸弹。隐藏关卡secret_phase通过在特定答案后添加“DrEvil”解锁,最终输入数字22解除。总结,通过逆向分析和逻辑推断,成功“拆除”所有炸弹,包括隐藏关卡,完成挑战。
cmu-csapp-lab2-bomb解题过程 这个题的本质是让通过gdb和objdump的工具的使用,以及对汇编代码的理解找到程序在栈中已存在的数据或者汇编代码本身的代码逻辑。从而根据固有信息确定输入,使得炸弹得以解除。这个实验有6道关卡和一道隐藏关卡。由于时间原因,我并没有想方法找出隐藏关,只是把固有的6道关卡做完了。下面说一...