Строим отладчик Ms-Rem (Ms-Rem@yandex.ru) Хакер, номер #083, стр. 083-112-8 [обход ограничения] Я думаю, ты уже заметил одно неприятное ограничение брекпоинтов устанавливаемых с помощью отладочных регистров - нельзя отслеживать чтение/запись участка памяти размером более четырех байт. Оказывается, существует метод, позволяющий обойти это ограничение. Если тебе известны принципы работы процессора в защищенном режиме со страничной адресацией, то для тебя не будет секретом, что память делится на страницы и в каждой странице могут быть назначены свои атрибуты доступа. Если запрашиваемый доступ к странице не совпадает с установленными атрибутами, то генерируется исключение общей защиты (имеющее номер 0E). Метод установки брекпоинтов по доступу к большим областям памяти заключается в установке на нужные страницы атрибутов доступа PAGE_NOACCESS, запрещающих обращения к этой странице, и в обработке возникающих при этом исключений. Любая команда, обращающаяся к обозначенной области памяти, будет вызывать исключение, его будет ловить отладчик, обрабатывать, после чего восстанавливать старые атрибуты доступа, и продолжать исполнение кода. Этот метод используется в IceExt (плагине SoftICE'а) в команде bpr. |