用途:面向非 Android 的 ARM 逆向,包括嵌入式裸机/固件(Cortex-M0/M3/M4/M7、Cortex-A)、Thumb/ARM 指令集切换、AAPCS 调用约定识别、M 系向量表入口定位、位置相关代码重定位,以及 MMIO 外设寄存器交叉分析。不适用于 Android .so、通用 AArch64 Linux 用户态程序、RISC-V/x86 等其他架构,也不替代固件解包、文件系统分析或整体启动仿真。
主要能力:确认架构与字节序(file、readelf -h、readelf -A,e_flags 0x400/0x200 区分硬/软浮点 ABI);定位 Cortex-M 向量表(0x0 起,第 1 项初始 MSP、第 2 项 Reset handler,地址 LSB 必须为 1,VTOR 可重定位);区分 AArch32 与 AArch64 异常模型(AArch64 用 VBAR_EL1/EL2/EL3,非固定 8 项表);处理 Thumb 奇地址、bx/blx 状态切换、BL 距离上限与 veneer;修正链接基址与加载地址差异;识别 AAPCS32/AAPCS64 寄存器约定与 HFABI;标注 MMIO 寄存器区并按 datasheet 还原语义。
使用方式:工具包括 Ghidra/IDA、binutils、binwalk、qemu-arm/qemu-aarch64、gdb-multiarch;裸机 Cortex-M 用 qemu-system-arm -machine mps2-an385 或 Unicorn,真机走 OpenOCD + gdb。动态执行默认沙箱与网络隔离。按顺序执行并归档每步结果。
限制:需核对处理器变体与端序,Armv6-M 并非只有 16 位编码;softfp 仍发射 VFP 指令但参数走整数寄存器;LR 双用途可能导致调用图断裂;具体外设基址随器件而异,须查 SoC datasheet。部分安装渠道与版本细节资料未完整提供。