Вопрос № 167722: 1) Запутался в сегментах, селекторах, дескрипторах... Как вычислить ФИЗИЧЕСКИЙ адрес какой-нибудь переменной (кода) в защищённом режиме в плоской модели, в страничной? 2) См. приложение. Находит ли этот код реальный адрес IDT и обработчика прерыва...
Вопрос № 167.722
1) Запутался в сегментах, селекторах, дескрипторах... Как вычислить ФИЗИЧЕСКИЙ адрес какой-нибудь переменной (кода) в защищённом режиме в плоской модели, в страничной? 2) См. приложение. Находит ли этот код реальный адрес IDT и обработчика прерывания № 32? Если нет, то подскажите, пожалуйста, как вычислить его физический адресс. Написано на FASM'e. 3) Ну, и вытекает из п.1 и 2, как подменить обработчик прерывания?
Спасибо всем откликнувшимся!
Приложение:
Отправлен: 19.05.2009, 13:48
Вопрос задал: Staper (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Staper! 2) Код надо подправить:
Код:
sidt [idt] mov eax,idt mov eax,[eax+2] ;line address for IDT table lea ecx,[eax+32*8] ;line address for int0 handler ;получим в dx:eax селектор:смещение 32 прерывания mov dx,[ecx+2] ;селектор (биты 31-16 младшего
dword-а шлюза) mov ax,[ecx+6] ;старший word смещения (биты 31-16 старшего dword-а шлюза) shl eax, 16 mov ax,[ecx] ;младший word смещения(биты 15-0 младшего dword-а шлюза)
3) Подменить проще простого: пишем в нужное место новые селектор:смещение 1) Для получения старого обработчика прерывания вполне достаточно приведенного кода На мой взгяд, углубляться в разные там таблицы страниц для получения физического адреса нужды нет. PS Для нагл
ядности привожу структуру шлюза прерывания и даю ссылочку для дополнительной информации
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Профессионал) Украина, Кировоград ICQ: 234137952 ---- Ответ отправлен: 21.05.2009, 13:58
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 249593 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.