計算機系統基礎——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程式。