计算机系统基础(bomb实验报告)

这篇实验报告详述了在Linux环境下,使用arm-gdb工具解析二进制炸弹(Bomb)程序的过程。通过分析ARM汇编语言,解密6个phase的输入字符串,涉及的知识包括调试器使用、shell命令、递归算法和循环算法。报告还分享了环境配置、IP设置、GDB调试和隐藏关卡的解决策略。
摘要由CSDN通过智能技术生成

山东大学 计算机系统基础实验报告

bomblab

一、实验目的

1) 理解arm汇编语言,学会使用调试器。
2) 熟悉安卓开发板的使用和环境配置;
3)熟悉并掌握在linux系统下的shell命令使用。

二、实验环境

linux系统,终端,arm-gdb工具,安卓开发板

三、小组成员及任务分配

四、实验原理

二进制炸弹是作为一个目标代码文件提供给我们的程序,程序运行中有6个关卡(6个phase),运行时,它提示用户输入6个不同的字符串。如果其中任何一个不正确,炸弹就会“爆炸”:打印出一条错误信息。我们首先要在linux下配置好arm-gdb环境并且得到反汇编问卷,然后通过反汇编和逆向工程来确定是哪六个字符串,从而解除他们各自炸弹的雷管。

五、知识储备

在实验过程中我们运用了课上对于ARM部分指令的知识,例如读写指令ldr和str,跳转指令b和bl的区别,以及比较指令cmp等,还有条件域的实践应用。并且为了完成实验我们自学了关于在Linux环境下运用gdb设置断点进行调试,并且了解了更多的ARM指令和与之相关的寄存器和堆栈的使用。在拆炸弹似过程中我也运用到了相关的数学知识,主要是递归的算法和循环算法。

六、实验内容与步骤

步骤一:环境配置

在进行环境配置时,我们按照指导书进行了Linux下的环境配置和gdb安装包的解压安装。在此阶段我们学习了在Linux终端用命令行进行新建,打开,检验文件夹,以及保存文档中的内容。主要运用了sudo来执行一些root命令,cd用来打开或退出文件夹,tar命令进行文件的备份。主要命令行如下:
tar -jxvf gdb-7.10.tar.bz2 解压gdb安装包
sudo gedit ~/.bashrc 修改环境变量
在进行PC与目标板的连接时,先分别获取IP地址,然后在目标板上运行PC中的bomb程序,在PC上运用arm-gdb进行程序的调试。主要运用了调试工具adb,ifconfig配置网络设备来设置IP,gdbserver来让PC可以对目标板进行远程调试。主要命令行如下:
adb push bomb /data/local 将bomb程序push到目标板上
ifconfig eth0 192.168.0.100 设置目标板IP
ifconfig eth1 192.168.0.101 设置PC的IP
gdbserver 192.168.0.101:2345 bombg (ip 为 pc 机机 ip)在目标板上可以运行bomb程序。
步骤二:六个phase的解决
首先是找到main函数,发现它调用了从phase1到phase6这六个函数。这应该就是每一关需要看懂的函数了。

实验三:

开头还是栈的开辟,往下看,首先特别明显注意到sscanf函数,推测应该是一个类似C中的一个函数,然后想要知道将要返回的参数,发现
“84ec: e59f1198 ldr r1, [pc, #408] ; 868c

8890:e50b0048 str  r0, [fp, #-72]  ; 0x48
 8894:e59f3260 ldr  r3, [pc, #608] ; 8afc <phase_6+0x278>
 8898:e50b3010 str r3, [fp, #-16]
 889c:e24b3028 sub r3, fp, #40    ; 0x28
 88a0:e51b0048 ldr r0, [fp, #-72]  ; 0x48”

储存和取值的代码,推测应该是个链表结构,.word中存的应该是链

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值