Как интерпретировать «jmp dword ptr [rel $ 00005e52]»? - PullRequest
2 голосов
/ 04 октября 2011

Я пытаюсь отследить код сборки на платформе Win64:

Когда инструкция выполняется на:

0000000000402590 FF25525E0000     jmp dword ptr [rel $00005e52]

После перехода она перейдет по адресу:

00000000006B3F90 56               push rsi

Как инструкция jmp получает адрес для перехода?Что означает [rel $ 00005e52]?

1 Ответ

5 голосов
/ 04 октября 2011

Этот конкретный jmp (указанный в документации как «FF / 4 jmp r / m64») использует так называемую RIP-относительную адресацию (байт ModR / M = 0x25: mod = 00b, reg / opcode = 100b, r/ m = 101b; это означает disp32 в 32-битном режиме, но RIP + disp32 в 64-битном режиме).

Считывает адрес перехода (64-битный) из 0x402590 + 6 (адрес следующей инструкцииэто jmp) + 0x5E52, то есть от 0x4083E8.Память в 0x4083E8 (8 байт) должна быть равна 0x6B3F90.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...