Как осуществить jmp на нужный мне адрес. Потом перевести в байткод
Интересует такой вопрос. Мне нужно совершить jmp из адреса FFFFC20AD0F8FFA0 в FFFFF80121214CE0. Как я понимаю надо рассчитать смещение и использовать jmp far, но информации об том как это сделать я не нашел. Хотелось бы узнать именно порядок действий jmp в нужный адрес -> машинный код.
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Для адресов с такой большой разницей (0x35f650284d40, больше двойного слова) сделать относительный прыжок не получится:

Но можно сделать переход по абсолютному адресу в регистре:
use64
; org 0xFFFFC20AD0F8FFA0 ; Т.к. прыжок по абсолютному адресу, начальный адрес указывать не обязательно
mov rax, 0xFFFFF80121214CE0
jmp rax
fasm компилирует в такой набор байт (в шестнадцатеричном виде):
48 B8 E0 4C 21 21 01 F8 FF FF FF E0