Win32 Debug ApI I
В этом туториале вы изучите, какие примитивные отладочные средства предлагает разработчику Win32. Вы узнаете, как отладить процесс, когда вы закончите читать этот туториал.
Скачайте пример здесь.
Теория:
Win32 имеет несколько функций AрI, которые позволяют программисту использовать некоторые возможности отладчика. Они называются Win32 Debug ApI. С помощью ни вы можете:
- Загрузить программу и подсоединиться к запущенной программе для отладки
- Получить низкоуровневую информацию о программе, которую вы отлаживаете, например, ID процесса, адрес входной точки, image base и так далее.
- Быть уведомленным о событиях, связанных с отладкой, например, когда процесс запускается/заканчивает выполнение
- Изменять отлаживаемый процесс/ветвь
Короче говоря, с помощью этих AрI вы можете написать простой отладчик. Так как это объемный предмет, я поделю его на несколько частей: этот туториал будет первой частью. Я объясню основные концепции, касающиеся Win32 Debug ApI, здесь.
Этапы использования Win32 Debug ApI следующие:
- Создаем или присоединяемся к запущенному процессу. Это первый шаг. Так как ваша программа будет вести себя как отладчик, вам потребуется программа, которую вы будете отлаживать. Вы можете сделать следующее:
- Создать специальный процесс для отладки с помощью Createprocess. Чтобы создать процесс для отладки, вы можете указать флаг DEBUG_рROCWSS. Этот флаг говорит Windows, что мы хотим отлаживать процесс. Windows будет посылать уведомления о важных событиях отладочных событиях, которые происходят в отлаживаемом процессе. Он будет немедленно заморожен, пока ваша программа не выполнит то, что должна. Если отлаживаемый процесс создаст дочерние процессы, Windows также будет посылать уведомления о происходящих в них отладочных событиях. Обычно это нежелательно, поэтому это можно отключить, указав кроме флага DEBUG_рROCESS флаг DEBUG_ONLY_THIS_pROCESS.
- Вы можете подсоединиться к уже выполняющемуся процессу с помощью функции DebugActiveprocess.
Ждем отладочные события. Когда вы создаете отлаживаемый процесс или присоединяетесь к нему, он замораживается, пока ваша программа не вызовет WaitForDebufEvent. Эта функция работает также, как и другие функции WaitForXXX, то есть она блокирует вызывающий тред, пока не произойдет ожидаемое событие. В данном случае она ожидает отладочных событий, которые должны посылаться Windows. Давайте посмотрим ее определение:
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий