Запись очень простого отладчика

Ознакомьтесь со следующим сообщением в блоге:

Отображение подключений ASP.NET SignalR к реальным пользователям приложений

Вкратце, вы бы добавили идентификаторы подключения для пользователя в метод OnConnected и удалите это соединение по методу OnDisconnected. Имейте в виду, что пользователь приложения может иметь несколько подключений. Таким образом, вы должны иметь отношения один ко многим между вашим пользователем и идентификаторами соединений. Приведенный выше пост подробно объясняет это примером.

6
задан ldog 11 June 2009 в 22:11
поделиться

2 ответа

Вам необходимо использовать WriteProcessMemory для записи точки останова (на x86, код операции 0xCC) по адресу. На x86, когда отлаживаемая программа достигает этой точки в коде, 0xCC генерирует исключение int 3. Это подхватывается вашим отладчиком, WaitForDebugEvent вернет DEBUG_EVENT с установленным EXCEPTION_DEBUG_EVENT.

Затем вам нужно исправить этот адрес обратно до исходного кода, прежде чем продолжить. Если вы хотите снова сломаться, вам нужно сделать один шаг, а затем повторно исправить код операции точки останова. Для пошагового выполнения вам необходимо установить флаг пошагового выполнения в EFlag в контексте потока.

DebugBreakProcess используется для создания удаленного прерывания отлаживаемого процесса - его нельзя использовать для прерывания в произвольной точке в код.

12
ответ дан 8 December 2019 в 18:40
поделиться

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

1
ответ дан 8 December 2019 в 18:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: