Ознакомьтесь со следующим сообщением в блоге:
Отображение подключений ASP.NET SignalR к реальным пользователям приложений
Вкратце, вы бы добавили идентификаторы подключения для пользователя в метод OnConnected
и удалите это соединение по методу OnDisconnected
. Имейте в виду, что пользователь приложения может иметь несколько подключений. Таким образом, вы должны иметь отношения один ко многим между вашим пользователем и идентификаторами соединений. Приведенный выше пост подробно объясняет это примером.
Вам необходимо использовать WriteProcessMemory для записи точки останова (на x86, код операции 0xCC) по адресу. На x86, когда отлаживаемая программа достигает этой точки в коде, 0xCC генерирует исключение int 3. Это подхватывается вашим отладчиком, WaitForDebugEvent вернет DEBUG_EVENT с установленным EXCEPTION_DEBUG_EVENT.
Затем вам нужно исправить этот адрес обратно до исходного кода, прежде чем продолжить. Если вы хотите снова сломаться, вам нужно сделать один шаг, а затем повторно исправить код операции точки останова. Для пошагового выполнения вам необходимо установить флаг пошагового выполнения в EFlag в контексте потока.
DebugBreakProcess используется для создания удаленного прерывания отлаживаемого процесса - его нельзя использовать для прерывания в произвольной точке в код.
Майкл прав - также, если вы хотите взломать произвольный процесс в отладчике после того, как вы подключились (то есть, если пользователь внезапно нажимает «Взломать процесс»), стандартный способ - создать удаленный поток, подпрограмма которого выдает int3.