ARM pwn 环境搭建和使用

1.下载gdb-multiarch

sudo apt-get install gdb-multiarch

2.下载qemu模拟器

qemu是一款可执行硬件虚拟化的虚拟机,与他类似的还有Bochs、PearPC,
但qemu具有高速(配合KVM)、跨平台的特性
qemu主要有两种运行模式:qemu-user 和 qemu-system

但是这里我们只用下载qemu-user就行了:

sudo apt update
sudo apt install qemu
sudo apt-get install qemu-user  
sudo apt-get install qemu-user-binfmt  
sudo apt-get install "binfmt*"

到这里了,我们就能直接运行静态链接arm的程序了,拿的typo试试:

3.对于动态链接的文件

##搜索libc
sudo apt search "libc6" | grep arm

##安装libc
sudo apt install libc6-dbg-arm64-cross

在其中寻找所需的架构对应的库,比如arm32用的是这个:

 apt install libc6-armel-cross

安装完后,在/usr目录下会出现arm-linux-gnueabi这个文件夹,该文件夹即对应刚安装好的arm32位libc库.

对应的64位如下:

apt install libc6-dbg-arm64-cross

安装完后,在/usr目录下会出现aarch64-linux-gnu这个文件夹,该文件夹即对应刚安装好的arm64位libc库:

之后我们使用下面的命令指定arm程序的动态链接器,即可运行程序:

64位:

qemu-aarch64 -g 12345 -L /usr/aarch64-linux-gnu/ xxx
-g 代表为程序运行分配的进程端口号,一般用于gdb调试时开启,不填时系统自动分配
-L 代表动态链接库的文件夹地址,静态链接程序可以不需要
xxx 代表要运行的arm文件地址

32位:

qemu-arm  -g 12345 -L /usr/arm-linux-gnueabi xxx

gdb调试

之前我们已经安装完了gdb-multiarch,现在来试试怎么调试程序。

  1. 首先开一个终端,使用qemu启动arm程序,并且分配一个端口:
qemu-aarch64 -g 12345 -L /usr/aarch64-linux-gnu/ xxx
  1. 另外一个终端,打开gdb-multiarch
 sudo gdb-multiarch # 打开gdb-multiarch

pwndbg> set architecture aarch64 # 设置64位arm的环境
The target architecture is assumed to be aarch64
pwndbg> target remote localhost:12345 # 注意这里的端口要和你的一样

例子:调试32位的静态程序

  • 启动程序:静态链接的程序就不需要-L制定动态链接库了。

  • 打开gdb-multiarch

如果是想在exp中调试

在pwntools中,我们可以使用如下代码来动态调试程序:

p = process(["qemu-aarch64", "-g", "12345","-L","/usr/aarch64-linux-gnu/", "xxx"])
# 32arm只需要替换指令为qemu-arm,并更换对应的动态链接库
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值