ARM和Thumb模式下的断点总结
脱壳或者调试SO的时候,需要在恰当的时机让进程停下来,以便于附加调试器到该进程上。被无视的壳虐待之后,总结出以下几种断点的方法。
1. 死循环
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
2. 断点
来自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)
网友评论