美文网首页IOT-路由器
QEMU+IDA远程调试mips可执行文件

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

作者: 看雪学院 | 来源:发表于2018-09-14 18:27 被阅读0次

前言:

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的内存中,因此不需要手动进行复制:

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

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

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

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

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

    -p:监听端口

    -h:http文件根目录位置

    -c:http配置文件位置

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

弹出如下对话框:

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

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

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

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

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

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

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

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

相关参考

另外关于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可执行文件

    前言: qemu的远程调试非常简单,开启-g参数绑定本地端口即可,只是其中IDA需要进行一定的设置才能调试mips...

  • 调试Android平台C++代码

    一.调试工具: gdb + gdbserver 远程调试 文件形式: ELF 可执行文件 JNI .so 二.gd...

  • qemu+IDA远程调试智能设备

    如果碰到智能设备的程序,我们应该怎样动态逆向分析呢? 一、环境准备 首先,需要搭建嵌入式开发环境。并不一定需要硬件...

  • CentOS7 desktop openstack queens

    引用 neutron通过pycharm调试Pycharm 下远程调试 Neutron 简介 远程代码同步 远程调试...

  • 调试手段

    本地调试 远程调试

  • buildroot构建MIPS64调试环境

    前提 参考文章mips64调试环境搭建[https://ruan777.github.io/2020/08/25/...

  • springboot远程debug

    两种调试 远程调试分为主动连接调试,和被动连接调试: 主动连接调试:服务端配置监控端口,本地IDE连接远程监听端口...

  • GDB调试

    一、让程序可被GDB调试 不是所有可执行文件都可被GDB调试,在编译时需要加-g参数。确定已被编译的可执行文件是否...

  • GDB调试

    一、让程序可被GDB调试 不是所有可执行文件都可被GDB调试,在编译时需要加-g参数。确定已被编译的可执行文件是否...

  • gdb调试工具的简单指令

    在gcc之后加上-g参数,则能够生成可调试的可执行文件 然后,在执行可执行文件的语句之前,加上gdb选项,以调试的...

网友评论

    本文标题:QEMU+IDA远程调试mips可执行文件

    本文链接:https://www.haomeiwen.com/subject/ntbogftx.html