MIPS逆向(一)

静态分析工具可以使用ghidra和IDA Pro,并且支持反编译。

动态调试使用qemu+gdb进行调试。

动态调试

1.环境搭建

安装gdb-multiarch和qemu:

sudo apt-get install qemu 
sudo apt-get install qemu-user-static
sudo apt-get install qemu-system
sudo apt-get install gdb-multiarch

 QEMU的使用可以查看官方文档https://www.qemu.org/docs/master/user/main.html#features。

2.调试

使用gdb-multiarch进行调试过程:

一端执行"chroot . ./qemu-mips-static -g 1234 ./usr/bin/httpd",将程序运行起来,-g 1234的意思表示为监听端口1234,用于远程调试。

另一端使用"gdb-multiarch ./usr/bin/httpd",启动调试。

之后,我们需要设置CPU架构、大小端以及远程调试端口,如下:

set architecture mips #mips32大端,小端是mipsel
target remote :1234
set endian little #如果前面报错再执行该命令,可能是大小端问题报错。小端little,大端big

基于qemu-system调试

使用qemu-system虚拟出一个虚拟机,然后将目标程序及相关目录和文件拷贝进去。在虚拟机中执行目标程序并调试。

qemu-system-mips -M malta -kernel Tools/vmlinux-3.2.0-4-4kc-malta -hda /home/lzl/Desktop/FirmAE/images/4.tar.gz -append "root=/dev/sda1 console=tty0" -net nic, -net tap,ifname=tap0,script=no,downscript=no -nographic

 试着跑了一下报错,没细看了。具体可以参考SkYe231师傅的文章https://www.mrskye.cn/archives/6130b222/#qemu-%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%A1%A5%E6%8E%A5%E7%BD%91%E7%BB%9C。

对于要下载 qemu 的镜像文件和内核文件,在https://people.debian.org/~aurel32/qemu/下载。

使用ida进行调试过程:

在虚拟机中也可以使用命令"qemu-mipsel -g 1234 -L /home/buildroot-2020.02.7/output/target/ ./httpd"将程序运行起来,-L参数是指定动态库路径。然后,在ida中选择attach中的remote gdb debugger进行连接,要修改debug options -> set specific optionsz -> Processer中的架构为MIPS。IDA Pro 7.7用得挺舒服的。

使用FirmAE+gdbserver调试:

使用FirmAE虚拟出环境,-d提供的调试在无法正常通过调试的情况下,可以手动到/firmadye目录去执行gdbserver。

 同样在环境外执行"gdb-multiarch ./httpd"。

在gdb-中执行:target remote 192.168.0.1:666,其他命令不变。

 

参考:

https://oneda1sy.gitee.io/2021/03/10/MIPS-Pwn-tools/

https://www.yk2er0.fun/2021/01/22/env/#mips-mipsel%E6%9E%B6%E6%9E%84

https://www.mrskye.cn/archives/6130b222/

posted @ 2020-10-15 22:54  An2i  阅读(757)  评论(0编辑  收藏  举报