我正在连接一个二进制文件(aarch64),我想重写分支指令以分支到特定地址。我正在使用 Radare2 重写分支。但是只要分支的目标地址在当前指令地址之前,它就会说“无法汇编...”。它也不能组装'b.gt ...'
即使我尝试使用 (wa) 编辑具有相同操作码的指令,它也会给出相同的错误(无法汇编),但如果我尝试使用 (wx) 复制十六进制指令,那么它可以工作!.对于其他指令,如 (mov),它也可以正常工作(使用 wa)
$ r2 -A -w -b64 dummy
...
0x0040064c f3ffff17 b 0x400618
...
;-- branch:
0x00400588 e007bfa9 stp x0, x1, [sp, -0x10]!
...
[0x0040064c]> wa bl 0x400588
Cannot assemble 'bl 0x400588' at line 3
[0x0040064c]> wa b 0x400618
Cannot assemble 'b 0x400618' at line 3
[0x0040064c]> wx f3ffff17
[0x0040064c]> wa bl loc.branch
Cannot assemble 'bl loc.branch' at line 3
The instruction at 0x0040064c should be
bl 0x00400588