MIPS交叉编译调试环境搭建

终于全部考完放假了,有时间来学习mips了第一步肯定还是要把环境搭建好,这部分主要参考了cyberangel师傅的

安装QEMU

我们要去学习mips架构,去逆向分析固件需要用到qemu,Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备。

1
2
sudo apt install qemu
sudo apt install qemu-system qemu-user-static binfmt-support

安装mips&arm依赖库

1
2
3
4
5
6
7
sudo apt-get install gcc-mips-linux-gnu
sudo apt-get install gcc-mipsel-linux-gnu
sudo apt-get install gcc-mips64-linux-gnuabi64
sudo apt-get install gcc-mips64el-linux-gnuabi64

#arm依赖
sudo apt install libncurses5-dev gcc-arm-linux-gnueabi build-essential synaptic gcc-aarch64-linux-gnu

安装多架构gdb调试依赖

1
sudo apt install gdb-multiarch

测试编译环境

与x86相同,mips也存在大小端序和32 64位

32位小端序:

1
mipsel-linux-gnu-gcc -g test.c -o test_little_32

32位大端序:

1
mips-linux-gnu-gcc -g test.c -o test_big_32

64位小端序:

1
mips64el-linux-gnuabi64-gcc  -g test.c -o test_little_64

64位大端序:

1
mips64-linux-gnuabi64-gcc  -g test.c -o test_big_64

接着qemu模拟固件:

1
2
qemu-mipsel-static -L /usr/mipsel-linux-gnu/ ./test_little_32  #32位小端序
qemu-mips64el-static -L /usr/mips64el-linux-gnuabi64/ ./test_little_64 #64位小端序

GDB调试:

先打开一个终端启动qemu-mips

1
2
3
4
5
6
7
qemu-mipsel-static -L /usr/mipsel-linux-gnu/ -g 12345 ./test_little_32 # 12345为连接端口可任意设置

#接着用另一个终端连接
gdb-multiarch ./test_little_32
set architecture mips #将架构设置成mips
b main #设置断点
target remote :12345 #连接调试

1