我不知道为什么以下代码遇到BAD_INSTRUCTION
错误,任何人?关于代码注入(armv7 asm)的EXC_BAD_INSTRUCTION
mov r4, r0
movw r0, #0xc70 ; injected code start here
movt r0, #0x8bb3
movw r3, #0x576
ldr r1, [r7]
movs r5, #0x1a
add r5, pc ; next instruction will jump over 9 instructions
bx r5 ; injected code end here
ldr r1, [r0]
ldr r0, [r2]
blx 0x26e11c
movw r1, #0x6442
movt r1, #0x18
add r1, pc
ldr r1, [r1]
blx 0x26e11c
mov r3, r1
movw r1, #0x66a4 ; r1 has not been loaded
movt r1, #0x15 ; with new value. Why?
mov r2, r0
add r1, pc ; This instruction isn't getting called
mov r0, r4 ; EXC_BAD_INSTRUCTION here
blx __sprintf
为什么不单步执行调试器中的代码并查看实际发生了什么? –
@PaulR我做过了,因为您可以在每条指令上看到我的评论。在'bx r5'之后,一切看起来都对我好。但是接下来的2个movw和movt并没有设置为r1,之后这个过程感觉到了'EXC_BAD_INSTRUCTION'。 – RyanB
您确定值“0x1a”吗?如果你偏离了+/- 1字节,我可以看到调试器对你在代码中的位置感到困惑(所以它看起来像你正在追踪你期望的代码),但是因为你不会执行你认为你的指示...只是一个想法。 –