900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 深入理解操作系统实验——bomb lab(phase_1)

深入理解操作系统实验——bomb lab(phase_1)

时间:2023-09-27 15:56:03

相关推荐

深入理解操作系统实验——bomb lab(phase_1)

实验内容及操作步骤:

一、实验基本内容:

二进制炸弹是作为一个目标代码文件,运行时会提示用户输入6个不同的字符串,如果其中任何一个不正确,炸弹就会爆炸,打印出一条错误信息。我们需要通过反汇编和逆向工程来确定是哪六个字符串,以此来破解炸弹的密码。六个密码分别存在与phase_1、phase_2、phase_3、phase_4、phase_5和phase_6中,需要对给出的可执行文件bomb进行反汇编,得到反汇编代码后再进行破译,最好是得到其对应的c语言代码。

二、实验操作:

将文件夹bomb08010208放到linux虚拟机中,然后在该文件夹下打开终端:

然后通过objdump -d bomb >bomb.asm获得相应的asm文件

再在终端中输入gdb -tui -q bomb对bomb可执行文件进行调试,在调试界面输入layout asm打开asm汇编语言文件,然后开始破解

1、对phase_1破解:

可以得到phase_1的汇编语言代码,开始破译

sub $0x1c,%espmovl $0x804a244,0x4(%esp)mov 0x20(%esp),%eaxmov %eax,(%esp)call 0x8049064 <strings_not_equal>test %eax,%eaxje0x8048b70 <phase_1+32>call 0x8049176 <explode_bomb>add $0x1c,%espret

分析后得到:第一个密码函数是要我们输入一个字符串,然后和文件中的字符串进行比较(调用strings_not_equal函数),如果相等则不会引爆炸弹(je指令),如果不相等则会进行引爆。只需要查找0x4(%esp)位置的数值就可以得到正确的密码,正确的密码为:Houses will begat jobs, jobs will begat houses.

具体操作为:在phase_1处放置一个节点,然后单步运行到执行strings_not_equal函数之前,然后通过x/s指令单独查看0x(%esp)和0x20(%esp)处的数据值。

对应的编程语言代码为:

string a=”Houses will begat jobs, jobs will begat houses.”;string b=”0”;cin>>b;if(a!=b)explode_bomb;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。