异构Pwn调试工具
虎符杯给我看傻了,pwn是两道aarch64和两道区块链
感觉异构pwn的环境还是有必要搭建一下
静态的话比较方便,arm架构直接就能分析,mips的话IDA装了插件也可以直接F5
主要还是linux里用来的动态调试的插件
环境给我装吐了
Premise
本文假定阅读者已经安装好了pwn所需的基本的工具(pwntools等)
qemu
Qemu是一个开源的托管虚拟机,通过纯软件来实现虚拟化模拟器,几乎可以模拟任何硬件设备。比如:Qemu可以模拟出一个ARM系统中的:CPU、内存、IO设备等,然后在这个模拟层之上,可以跑一台ARM虚拟机,这个ARM虚拟机认为自己在和硬件进行打交道,但实际上这些硬件都是Qemu模拟出来的。
我们做大创的时候应该也会用到
install
1 | $ sudo apt-get update |
可以输入qemu-Tab
Tab
gdb -multiarch
gdb插件,使其能够支持多种架构
install
1 | $ sudo apt-get update |
Binutils
GNU binutils 是一个二进制工具集。主要包括:
ld:gnu链接器;
as:gnu汇编器。
当然还有其他一些东西,但我们主要是需要汇编器来生成shellcode
install
根据题目架构下载所需binutils
1 | $ apt-get install binutils-$ARCH-linux-gnu |
$ARCH 是你的架构,目前仅支持
1 | binutils-aarch64-linux-gnu |
Usage
安装好之后就可以直接运行静态链接的程序了
但是要运行动态连接的还不行
首先要安装对应架构的共享库
1 | $ apt-cache search "libc6" | grep arm |
这里搜索你所需的架构就行,可以换成mips等
我们只需安装libc6-arm-cross这种就够了
然后指定共享库就可以运行了
1 | $ qemu-aarch64 -L /usr/aarch64-linux-gnu ./apollo |
qemu-[arch] -L [share-lib] [pwn]这种格式
Debug
可以使用qemu的-g指定端口
1 | $ qemu-aarch64 -g 1234 -L /usr/aarch64-linux-gnu ./apollo |
然后使用gdb-multiarch进行调试,先指定架构,然后使用remote功能
在另外一个终端(上一个你也用不了)打开gdb -multiarch
1 | $ gdb-multiarch ./apollo -q |
然后连接到端口进行远程调试
1 | gdb-peda$ set architecture aarch64 |