一、实验目的
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程序。