脱壳或者调试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)
赞