Предположим, что отладчик (обычный отладчик x86 ring3, такой как olly, IDA, gdb ...) устанавливает контрольную точку программного обеспечения на виртуальный адрес 0x1234.Как отладчик возобновляет работу с точки останова?
это достигается путем замены независимо опкода на 0x1234 до «0xCC» теперь давайте предположим, что процесс debugee запускает эту инструкцию 0xCC и вызывает исключение программного обеспечения и отладчик перехватывающий.
отладчик проверяет содержимое памяти, регистрирует и делает некоторые вещи .. и теперь он хочет возобновить процесс дебюта.
это насколько я знаю. отныне, его мое предположение.
отладчик восстанавливает исходный код операции (который был заменен на 0xCC) debugee, чтобы возобновить выполнение.
отладчик манипулирует EIP КОНТЕКСТА debugee, чтобы указать восстановленную команду .
Отладчик обрабатывает исключение, и теперь debugee возобновляет работу с точки останова.
но отладчик хочет, чтобы точка останова осталась. Как можно отладчику управлять этим?
Хороший вопрос. Я предполагаю, что аппаратное обеспечение отладчика на чипе должно помочь в этом. –