Я перехватываю двоичный файл (aarch64) и хочу переписать инструкции ветвления для перехода по конкретным адресам.Я использую Radare2 для переписывания веток.Но он говорит «не может собрать ...» всякий раз, когда целевой адрес ветвления находится перед текущим адресом инструкции.Также он не может собрать 'b.gt ...'
Даже когда я пытался редактировать инструкцию с тем же кодом операции, используя (wa), он выдает ту же ошибку (не могу собрать), но если я попытался использовать (wx) скопировал шестнадцатеричную инструкцию, тогда она работает!Также работает правильно (используя wa) для других инструкций, таких как (mov)
$ 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