Непонятное использование JMP FAR - PullRequest
0 голосов
/ 16 мая 2011

В книге Руткиты: подрыв ядра Windows Глава 5: Исправление во время выполнения Страница 120-125 (Грег Хоглунд, Джеймс Батлер, 2006)

онговорит, что JMP FAR 0x08:0xAAAAAAAA перейдет к 0xAAAAAAAA

, но Вики говорит 0x08:0xAAAAAAAA = (0x08 * 0x10) + 0xAAAAAAAA

что правда.

1 Ответ

5 голосов
/ 16 мая 2011

В защищенном режиме значения селектора (сегментная часть адреса в вашем примере) не используют вычисление «сдвиг на 4».Вместо этого значение используется в качестве индекса в таблице локальных или глобальных дескрипторов, а также используется базовый адрес из таблицы.

Похоже, что связанный код создан для Windows.В Windows используется простая плоская модель памяти, в которой большинство селекторов отображают все адресное пространство 4BG с основанием 0. Поэтому селектор 8 будет отображаться в 0, и переход будет (пытаться) перейти к адресу 0xAAAAAAAA.

Я не уверен, какой смысл использовать дальний прыжок, я думаю, что нормальный прыжок (без перезагрузки селектора) будет работать так же хорошо.

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