ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   запись значения в регистр (https://forum.antichat.xyz/showthread.php?t=1537324)

Lance_Sterling 07.06.2025 19:44

Мне нужно записать значение 0x10E00 в инструкцию MOV W0, #imm, чтобы увеличить размер структуры

Но 0x10E00 — это больше чем 16 бит, и поэтому не помещается в одну инструкцию MOVZ без сдвига.

Чтобы корректно записать его в W0, нужно две инструкции (MOVZ и MOVK), то есть 8 байт кода

Но если я запишу 8 байт, я затру следующую инструкцию, которая нужна для создания пула

Что делать в такой ситуации?

https://forum.antichat.xyz/attachments/28612638/

DarkPhantom 07.06.2025 20:01

Цитата:

Сообщение от Lance_Sterling

Мне нужно записать значение 0x10E00 в инструкцию MOV W0, #imm, чтобы увеличить размер структуры
Но 0x10E00 — это больше чем 16 бит, и поэтому не помещается в одну инструкцию MOVZ без сдвига.
Чтобы корректно записать его в W0, нужно две инструкции (MOVZ и MOVK), то есть 8 байт кода
Но если я запишу 8 байт, я затру следующую инструкцию, которая нужна для создания пула

Что делать в такой ситуации?

Попробуй использовать adrp для загрузки базового адреса , а затем add , что бы добавить нужное смещение .

Цитата:

Сообщение от DarkPhantom

Попробуй использовать adrp для загрузки базового адреса , а затем add , что бы добавить нужное смещение .

Ну это единственное, что пришло в голову

Lance_Sterling 07.06.2025 20:04

Цитата:

Сообщение от DarkPhantom

Попробуй использовать adrp для загрузки базового адреса , а затем add , что бы добавить нужное смещение .

Ну это единственное, что пришло в голову

все равно ведь используем две инструкции, получается 8 байт, а мне надо 4

moreveal 07.06.2025 22:25

я сам с арм64 не сталкивался, но обычно в рантайме патчат, ставя джамп хук тот же - копируешь ориг инструкции в заранее выделенное место, добавляешь туда еще свою инструкцию, и прыгаешь обратно, тем самым ничего не затирая

Lance_Sterling 07.06.2025 23:29

Цитата:

Сообщение от moreveal

я сам с арм64 не сталкивался, но обычно в рантайме патчат, ставя джамп хук тот же - копируешь ориг инструкции в заранее выделенное место, добавляешь туда еще свою инструкцию, и прыгаешь обратно, тем самым ничего не затирая

дай пример jmp хука на arm64, если есть, с копированием ориг инструкций (как в kthook)


Время: 08:21