Хобрук: Ваш путь к мастерству в программировании

Оставьте разрывы 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) передаются пользователю. Причина в том, что это ловит утверждения и тому подобное.

27.03.2015
  • Итак, в резюме: я застрял и ничего не могу сделать? любой способ игнорировать int3 на VS? 28.03.2015
  • Новые материалы

    От AlphaGo до самоуправляемых автомобилей: понимание основ обучения с подкреплением
    Руководство для начинающих по RL! Готовы ли вы исследовать передовые технологии искусственного интеллекта? Откройте для себя захватывающий мир обучения с подкреплением ! От ошеломляющей победы..

    Как сделать все элементы равными из списка в минимальных операциях в Python, используя math.ceil()
    Сегодня мы узнаем, как найти минимальные операции, необходимые для того, чтобы сделать все элементы из списка равными, используя Python в качестве языка программирования. Я использую PyCharm в..

    Создание пользовательских событий в React Native
    Обновление: это решение больше не работает, поскольку React Native не включает стандартную библиотеку Node. Однако есть автономные модули, в которых реализован API EventEmitter. Рассмотрите..

    За кулисами метода JavaScript Array.filter()
    Array.filter() — это встроенный в JavaScript метод, который создает новый массив со всеми элементами исходного массива, прошедшими определенный тест. Метод не изменяет исходный массив...

    Прогресс с моделью скрытой диффузии, часть 3 (машинное обучение)
    Выровняйте свои латентные данные: синтез видео высокого разрешения с моделями скрытой диффузии (arXiv) Автор: Андреас Блаттманн , Робин Ромбах , Хуан Линг , Тим Докхорн , Сын Ук Ким ,..

    Totaljs Flow: триггерные компоненты
    Total.js — это мощная и универсальная среда веб-приложений, которая предоставляет разработчикам ряд инструментов для оптимизации процесса разработки. Total.js Flow — самый популярный..

    Сквозное машинное обучение BigQuery
    Используйте Google Cloud BigQuery для участия в конкурсе Kaggle Я покажу вам, как прогнозировать выживших после катастрофы Титаника, используя только BigQuery и API Kaggle . С тех пор, как я..