我不知道爲什麼以下代碼遇到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字節,我可以看到調試器對你在代碼中的位置感到困惑(所以它看起來像你正在追蹤你期望的代碼),但是因爲你不會執行你認爲你的指示...只是一個想法。 –