ARM 上的断点

逆向工程 手臂 断点
2021-07-01 00:38:55

最近我读到 ARM 上的断点是通过使用BKPT指令或使用定义为无效的指令来强制执行的

  1. gdb 使用哪种方法?
  2. 您知道 ARM 代码的任何在线汇编程序吗?(例如:我想汇编BKPT指令并查看与之对应的字节,但我手头没有 qemu/SoC 芯片)。你用什么?
1个回答

1) 这取决于您是处于 THUMB 模式还是 ARM 模式,因为它们具有不同的操作码集。这个 stackoverflow 问题可能是相关的。

2a) 我不知道任何适用于 ARM 的在线汇编程序,但对于单个指令,我发现这张表很方便。

2b) 如果您想组装更大的代码块,获得工作 ARM 汇编器的最简单方法可能是安装 Android NDK,它具有适用于各种处理器的工具链,包括 x86、arm 和 mips。当我使用 Ubuntu 时,我的 arm 汇编程序是 $ndk-root/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-as; 在 Windows 上,我假设 .exe 文件应该位于类似的位置。我对这个问题的回答展示了如何使用 arm-as 和 arm-objdump 快速获取十六进制字节。