Оставьте INT3-прерывания обработчику исключений приложения в visual studio

Я на самом деле разрабатываю DLL, которая вводится в процесс. Эта DLL устанавливает несколько разрывов INT3 вокруг кода исполняемого файла, который называется много. Обработчик исключений моей DLL перехватывает эти INT3 для изменения нескольких значений регистра и тому подобного, затем возобновляет процесс, чтобы продолжить работу.

Проблема в том, что когда мне нужно отладить DLL (запуская приложение в пределах Visual Studio), все эти INT3 обрабатываются Visual Studio. Есть ли способ сказать Visual Studio, чтобы передать эти исключения в обработчик исключений приложения (DLL)?

Важные заметки:

  • Я не могу отключить эти INT3, потому что фактический код DLL происходит, когда эти исключения происходят (на обработчике).
  • Исполняемый файл компилируется. У меня нет исходного кода.

Спасибо

1 ответ

INT3 - это команда прерывания отладки, поэтому ваша DLL является отладчиком. Вы только что обнаружили радость отладки отладчика.

И нет, Windows не знает, кто добавил INT3, вас или Visual Studio. Таким образом, он доставляет все прерывания в Visual Studio. Visual Studio отслеживает, но все непредвиденные точки останова (т.е. не установленные самой Visual Studio) передаются пользователю. Причина в том, что это ловит утверждения и тому подобное.

Другие вопросы по тегам