码迷,mamicode.com
首页 > 系统相关 > 详细

如何在linux主机上运行/调试 arm/mips架构的binary

时间:2018-04-10 20:06:24      阅读:1005      评论:0      收藏:0      [点我收藏+]

标签:lin   use   gdb   arc   inux   stack   with   文件   系统   

如何在linux主机上运行/调试 arm/mips架构的binary

原文链接M4x@10.0.0.55
本文中用于展示的binary分别来自Jarvis OJ上pwn的add,typo两道题

写这篇教程的主要目的是因为最近想搞其他系统架构的pwn,因此第一步就是搭建环境了,网上搜索了一波,发现很多教程都是需要树莓派,芯片等硬件,然后自己编译gdb,后来实践的过程中发现可以很简单地使用qemu实现运行和调试异架构binary,因此在这里分享一下我的方法。

主机信息:

以一台新装的deepin虚拟机(基于debian)为例,详细信息如下:

技术分享图片

预备环境安装:

  • 安装git,gdb和gdb-multiarch,同时安装binfmt用来识别文件类型
$ sudo apt-get update
$ sudo apt-get install git gdb gdb-multiarch
$ sudo apt-get install "binfmt*"
  • 安装gdb的插件pwndbg(或者gef等支持多架构的插件)
$ git clone https://github.com/pwndbg/pwndbg
$ cd pwndbg
$ ./setup.sh

装好之后如图:

技术分享图片

  • 安装pwntools,不必要,但绝对是写exp的神器

bash $ sudo pip install pwntools

安装qemu:

$ sudo apt-get install qemu-user

通过qemu模拟arm/mips环境,进而进行调试

安装共享库:

此时已经可以运行静态链接的arm/mips binary了,如下图:

技术分享图片

但还不能运行动态链接的binary,如下图:

技术分享图片

这就需要我们安装对应架构的共享库,可以通过如下命令搜索:

$ apt-cache search "libc6" | grep ARCH

技术分享图片

我们只需安装类似libc6-ARCH-cross形式的即可

运行:

静态链接的binary直接运行即可,会自动调用对应架构的qemu;

动态链接的bianry需要用对应的qemu同时指定共享库路径,如下图32位的动态链接mips binary

技术分享图片

使用-L指定共享库:

$ qemu-mipsel -L /usr/mipsel-linux-gnu/ ./add

技术分享图片

调试:

可以使用qemu的-g指定端口

$ qemu-mipsel -g 1234 -L /usr/mipsel-linux-gnu/ ./add

然后使用gdb-multiarch进行调试,先指定架构,然后使用remote功能

pwndbg> set architecture mips
pwndbg> target remote localhost:1234

技术分享图片

这样我们就能进行调试了

技术分享图片

效果图:

技术分享图片

技术分享图片

more:

同样,如果想要运行或者调试其他架构的binary,只需安装其他架构的qemu和共享库即可

reference:

https://docs.pwntools.com/en/stable/qemu.html

https://reverseengineering.stackexchange.com/questions/8829/cross-debugging-for-arm-mips-elf-with-qemu-toolchain

如何在linux主机上运行/调试 arm/mips架构的binary

标签:lin   use   gdb   arc   inux   stack   with   文件   系统   

原文地址:https://www.cnblogs.com/WangAoBo/p/debug-arm-mips-on-linux.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!