QEMU+IDA远程调试mips可执行文件

QEMU+IDA远程调试mips可执行文件_第1张图片

前言:

qemu的远程调试非常简单,开启-g参数绑定本地端口即可,只是其中IDA需要进行一定的设置才能调试mips架构的二进制文件,并暂停进程进行调试。(关于Linux中如何运行IDA以及搭建buildroot的环境,网上教程比较多,也可以找我交流。)


QEMU的使用模式:

使用模式用于运行单个可执行文件,由于部分可执行文件运行时需要结合运行库,因此需要结合chroot指令,将运行时的root路径修改为【目标可执行文件】的文件系统的root目录。

另外在使用qemu仿真可执行文件时,qemu需要依赖部分宿主机的系统库文件,我这里采用的方式比较简单粗暴,直接将宿主机的某些库文件复制到目标文件系统中chroot后的绝对路径,然后才能正常运行,步骤如下:

cd squashfs/  进入需要仿真的可执行文件根目录下

cp $(which qemu-mips) ./    将qemu对应架构的使用模式可执行文件复制到当前文件夹下便于执行,具体需要复制的架构可以使用readelf -h file查看目标可执行文件得出。

ldd qemu-mips    查看qemu-mips执行需要的依赖,如下图,其中第一行的linux-vdso.so.1文件驻留于linux的内存中,因此不需要手动进行复制:

QEMU+IDA远程调试mips可执行文件_第2张图片

直接用简单粗暴的脚本把依赖复制到对应的位置上:

gedit move.sh    编写脚本将依赖复制到目标可执行文件的文件系统中的对应位置,move.sh内容如下:

QEMU+IDA远程调试mips可执行文件_第3张图片

就可以正常使用chroot+qemu使用模式的组合了。

使用chroot命令,结合之前的qemu-mips环境随便运行一个固件内的可执行文件:

上面为uhttpd服务传入的参数分别表示:

    -p:监听端口

    -h:http文件根目录位置

    -c:http配置文件位置

可以看到这次uhttpd服务并没有直接被执行,而是等待我们去链接并调试。在另一边打开IDA,并选择Debugger中的Attach,下面选择Remote gdb debugger:

QEMU+IDA远程调试mips可执行文件_第4张图片

弹出如下对话框:

QEMU+IDA远程调试mips可执行文件_第5张图片

在hostname中填入运行待调试可执行程序的主机IP、Port中填入之前-g参数附加的端口号。将设置完毕后的配置保存为默认网络设置。

由于这里调试的是mips架构的可执行文件,所以需要点击上图中的Debug options进行高级设置,首先勾选Events中的Suspend on debugging start,意为在调试开始时暂停进程:

QEMU+IDA远程调试mips可执行文件_第6张图片

接下来就是重点了,需要指定目标进程的架构,在上图中右下角Set  specific options中选择mips:

QEMU+IDA远程调试mips可执行文件_第7张图片

选择了mips架构后需要选择是大端序还是小端序,这些信息使用readelf -h file就能查看到,我这里采用的例子是大端序的文件。

设置完毕后,如果前面的配置都是正确的,会弹出如下对话框:

QEMU+IDA远程调试mips可执行文件_第8张图片

选择attach一个目标主机端口上正在运行的线程,选择第一个即可,结果如下:

QEMU+IDA远程调试mips可执行文件_第9张图片

提示已经成功attach到了该进程上,现在就可以浏览和调试该可执行程序的运行过程以及内存情况了。如下图所示:

QEMU+IDA远程调试mips可执行文件_第10张图片

到这里动态调试就设置成功,各位二进制大佬就可以各显神通了。


相关参考

另外关于mips的反编译工具retdec的使用,其实在retdec的github readme里面介绍了,github地址如下:

https://github.com/avast-tl/retdec

编译过程在 build-and-installation 小节下面,使用时运行下面的命令即可:

$RETDEC_INSTALL_DIR/bin/retdec-decompiler.sh test.exe

或者参考这篇帖子:https://bbs.pediy.com/thread-227079.htm


之前还发现了一款可以在源码中检出危险函数调用的工具flawfinder。

官网:https://www.dwheeler.com/flawfinder/

debian下载方式 sudo apt-get install flawfinder


欢迎各位指点交流。



原文作者:伤字号

原文链接:https://bbs.pediy.com/thread-246192.htm

转载请注明:转自看雪论坛


看雪阅读推荐:

1、[分享]一张表格看懂:市面上最为常见的 Android 安装包(APK)五代加固技术发展历程及优缺点比较!

2、[原创]Xposed第三课(微信篇) 防止好友消息撤回

3、[翻译]绕过 ASLR + NX 第一部分

4、[原创]Computer.Systems.A.Programmer.s.Perspective.2nd.个人笔记版

5、[翻译]腾达AC15路由器上的远程代码(CVE-2018-5767)执行演练

你可能感兴趣的:(QEMU+IDA远程调试mips可执行文件)