mips程序调试环境折腾

0x00 : 起因

比赛遇到了,帮学弟折腾调试环境,中间踩坑无数,但是最后还是解决了,就记录下。

0x01 : 最初尝试

最初尝试在Linux虚拟机里,qemu + gdbserver的搞事情,但是,依赖问题太闹心了,各种交叉编译的蛋疼事情。

所以就放弃了。

0x02 : docker专治环境搭建

后来想了想,我为啥不用docker神器,肯定有人和我一样不想弄交叉编译环境,所以肯定搞了这样的镜像~

Google搜索一大堆之后:

  1. multiarch-docker

  2. cross

这两个还不错,我选择了第一个来使用。

0x03 : 使用过程

1. 获取所需镜像
1
docker pull skysider/multiarch-docker
2. 启动
1
2
3
4
5
6
7
8
$ docker run -it \
--rm \
-h baby_mips \
--name baby_mips \
-v $(pwd):/ctf/work \
-P \
--cap-add=SYS_PTRACE \
skysider/multiarch-docker
3. 复制文件
1
$ docker cp ~/Downloads/baby_mips.dms 207187a8a24d:/tmp/
4. 调试

这里需要开两个bash,在启动容器的时候已经有一个bahs了,

1
docker ps -a 

看看当前这个容器的id,然后:

1
docker exec -it id /bin/bash

得到两个bash,一个运行程序,一个gdb窗口。

运行程序:

1
qemu-mipsel -g 2333 ./demo

gdb调试端口是2333

gdb窗口:

1
gdb-multiarch ./demo

然后gdb里

1
target remote localhost:2333

gdb里好像不用set arch了,pwngdb插件自动识别了好像 囧

5. have fun

Enjoy your debug journey~