ARM和Thumb模式下的断点总结

脱壳或者调试SO的时候,需要在恰当的时机让进程停下来,以便于附加调试器到该进程上。被无视的壳虐待之后,总结出以下几种断点的方法。

死循环

ARM Mode

ARM Mode下每条指令长度为4个字节,对应跳转自身的Opcode是FE FF FF EA,对应的助记符是:

LOAD:000033B8 FE FF FF EA                 B               loc_33B8

Thumb Mode

Thumb Mode下每条指令长度为2个字节,对应跳转自身的Opcode是FE E7,对应的助记符是:

.text:80407770 FE E7                       B       loc_80407770

断点

来自Github,代码片段:

/** The ARM BKPT instruction opcode */
#define ARM_BKPT_OPCODE ((uint32_t)0xE1200070)
/** The Thumb BKPT instruction opcode */
#define THUMB_BKPT_OPCODE ((uint16_t)0xBE00)

ARM和Thumb模式下的断点总结》有一个想法

发表评论