Предел IDTR более 256 - PullRequest
       8

Предел IDTR более 256

0 голосов
/ 22 июня 2011

Я занимался хакерством для Windows и столкнулся с фактом, когда я делал SIDT.Когда я прочитал SIDT, я обнаружил, что значение предела IDT составляет 0xFFF (u4096).

Я был очень удивлен, узнав об этом.У меня сложилось впечатление, что максимальное количество дескрипторов равно 256. Тогда почему предел IDTR равен 0xFFF?

Моя система I7 работает под управлением Win 7 в 64-битной версии.

Спасибо.

1 Ответ

5 голосов
/ 22 июня 2011

Два факта:

  • Предел - это самый высокий юридический адрес в таблице, а не самый высокий номер прерывания.
  • Запись IDT занимает 8 байтов в x86-32.В x86-64 он удваивается (до 16 байтов) для обработки больших адресов.

256 * 16 = 4096. Байты начинаются со смещения 0 и заканчиваются на 4095.

(кстати, 0xFFF равно 4095, а не 4096.)

...