ContinueDebugEvent приводит к сбою в моем отладчике, но не в x64dbg - PullRequest
0 голосов
/ 29 августа 2018

Я сделал небольшое приложение для отладки, специально предназначенное для изменения защищенного исполняемого файла, при использовании приложения я могу выполнить отладку, приостановив процесс, затем вызвав DebugActiveProcessStop, подключив к процессу x64dbg и возобновив его.

Цель, которую я отлаживаю, выполняет контрольную сумму для себя в 488 встроенных местах, с помощью моего приложения для отладки я делаю все точки останова с помощью поиска по шаблону байтов, когда при достижении точки останова я намерен установить аппаратную точку останова после команды контрольной суммы и затем отмените все мои модификации памяти. Когда достигается аппаратная точка останова, я читаю некоторые соответствующие регистры, сохраняю их в файле и патче, контрольная сумма которого всегда проходит без выполнения вычислений контрольной суммы при следующем вызове.

Приходит проблема: когда я вызываю ContinueDebugEvent из моего отладчика, чтобы добраться до аппаратной точки останова, цель всегда падает после нескольких шагов с нарушением доступа (c0000005). Во время тестирования я обнаружил, что если я приостановлю процесс вместо вызова ContinueDebugEvent, а затем передам отладку x64dbg и разрешу ей ContinueDebugEvent, то цель будет работать нормально. Я отладил x64dbg с x64dbg, чтобы посмотреть, что он делает по-другому, и вызываемый им вызов имеет параметры, идентичные моим вызовам ContinueDebugEvent, только processId, threadID и 10002 (DBG_CONTINUE)

Кто-нибудь знает, как / почему цель аварийно завершает работу, когда оба наших отладчика выполняют один и тот же вызов функции?

...