arm架构的pwn题详解
概述
ARM架构过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于移动通讯领域,符合其主要设计目标为低耗电的特性。因此我们常用的手机、平板等移动设备都是采用ARM体系架构的,因此CTF中不可避免也会出现ARM架构的pwn题。不过这种题目涉及的知识点都不会像x86体系架构那么深和细。
环境搭建
使用QEMU
QEMU
借用官网的原话,QEMU is a generic and open source machine emulator and virtualizer.
,qemu是一个通用的、开源的机器仿真器和虚拟机。因此我们可以在linux操作系统中安装它,然后用它来调试其它架构平台的程序。如何安装见下面代码所示:
# 最好先update一下
sudo apt update
sudo apt install qemu
在安装qemu后,对于静态链接的arm程序就已经可以直接运行了,使用命令qemu-arm prog
运行32位的arm程序,其中prog指代程序名。但对于动态链接的程序还是无法正常运行,此时需要安装对应架构的动态链接库才行。
如下面的命令和截图所示,这里以运行64位动态链接的arm程序为例,键入命令后发现有如下截图的libc版本返回,我们安装debug版本的,即sudo apt install libc6-dbg-arm64-cross
。
sudo apt search "libc6" | grep arm
安装完后,在/usr
目录下会出现aarch64-linux-gnu
这个文件夹,该文件夹即对应刚安装好的arm64位libc库,之后我们使用下面的命令指定arm程序的动态链接器,即可运行程序。
qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./prog
这里补充一下关于架构的一些知识以及介绍下qemu对应的一些命令。qemu-arm
指的是arm32架构的,用这个命令来运行32位的arm程序,而qemu-a