1,背景
因爲參加公司的路由器逆向培訓,首先需要的就是環境的配置準備工作,本文主要介紹的是交叉編譯環境配置和交叉編譯gdb
2,配置交叉編輯環境build root
這裏僅僅是簡單的配置過程,如果需要進一步研究,請移步:https://buildroot.org/docs.html
安裝依賴包,否則會報錯:
apt-get install gcc build-essential bison flex gettext tcl sharutils libncurses-dev zlib1g-dev exuberant-ctags g++ texinfo patch vim libtool bc
2.1 下載buildroot 解壓
tar xvf buildroot-2016.08-rc2.tar
2.2 編譯(提醒:要最大化terminal,否則會分辨率問題會報錯)
因爲:要逆向的路由器爲大端系統,並且爲mips固件,因此編譯使用的是mips32,如下,查看固件中的文件格式
因此使用:
make menuconfig
保持往來良好最後執行:
make
第一次編譯會非常慢,請慢慢喝茶等待,因爲要更新並下載新的版本,
一個小時後,差不多完成
或者提前使用這個命令下載所有源代碼備用:
make source
編譯完成界面如下:
生成的文件爲上述文件夾
但是,我們需要的交叉編譯鏈在這個目錄下:
2.3 將生成的交叉編譯工具,設置爲環境變量(根據自己的sh修改):
vi ~/.zshrc
export PATH=$PATH::/root/routerpwn/tools/buildroot-2016.08-rc2/output/host/usr/bin/
source ~/.zshrc
3,配置交叉編譯GDB&GDBserver
3.1 下載gdb源碼
http://www.gnu.org/software/gdb/download/
下載gz或者是xz的包,這裏下載的是gdb7.11.tar.xz 最新版本
3.2 編譯mips版本的gdb和gdbserver
解壓:
tar xvf gdb-7.11.tar.xz
配置:
./configure --target=mips-linux --host=mips-linux --program-prefix=mips-linux CC=/root/routerpwn/tools/buildroot-2016.08-rc2/output/host/usr/bin/mips-linux-gcc
編譯(爲了移植方便,使用靜態編譯的方法,CXX是因爲依賴g++的原因):
make CFLAGS="-g -O2 -static" CXXFLAGS="-g -O2 -static"
大約一刻鐘左右,編譯完成:
注意上文中紅色部分爲gdbserver的目錄
4,減小gdb 和gdbserver的體積
因爲:路由的空間有限,gdb和gdbserver的空間太大,無法上傳,需要降低gdb和gdbserver的體積
使用strip命令減小gdb和gdbserver的體積
同理將gdbserver 減小
cd gdbserver
mips-linux-strip gdbserver | ls -alh gdbserver
如此完成了簡單的環境配置工作
已經3點多了,改天完成binwalk和qemu的博客(咖啡果然要少喝,還是神經太敏感)