Точки останова (BreakPoints)

bool setSBP(int addr);

Установка программного BP (замена инструкции по адресу на int 3)

Параметры
  • passException:

    • Пропустить исключение (SHIFT+F7)

Возвращаемое значение

Функция возвращает true если удалось установить точку останова.

Пример
setSBP(r.eip);

bool setHBP(int addr, int size, int type);

Установка аппаратного BP

Параметры
  • addr:

    • Адрес на который устанавливается BP, должен быть кратен размеру BP.

  • size:

    • Размер отслеживаемой области. Может принимать значения:

      • BYTE(один байт)

      • WORD(один байт)

      • DWORD(двойное слово)

  • type:

    • Тип точки останова. Может принимать значения:

      • ON_ACCESS(чтение-запись-исполнение)

      • ON_WRITE(запись)

      • ON_EXEC(исполнение)

Note
Максимальное количество одновременно установленных аппаратных BP равно четырем.
Возвращаемое значение

Функция возвращает true если удалось установить точку останова, и false в случае ошибки

Пример
setHBP(r.eip,BYTE,ON_EXEC);

bool setMBP(int addr, int size, int type);

Установка Memory BP

Параметры
  • addr:

    • Базовый адрес BP.

  • size:

    • Размер

  • type:

    • Тип точки останова. Может принимать значения:

      • ON_ACCESS(чтение-запись-исполнение)

      • ON_WRITE(запись)

Note
Memory BP всего один. Данное ограничение связано с архитектурой отладчика.
Возвращаемое значение

Функция возвращает true если удалось установить точку останова, и false в случае ошибки

Пример
setMBP(0x401000,1024,ON_WRITE);

void delSBP(int addr);

Удаление программного BP

Параметры
  • addr:

    • Адрес на который будет установлен брейкпоинт.

Note
C параметром DEL_ALL удаляет все установленные BP.
Пример
setSBP(r.eip);
delSBP(r.eip);

void delHBP(int id);

Удаление Hardware BP

Параметры
  • id:

    • Индекс удаляемого брейкпоинта, должен лежать в диапазоне от 1 до 4.

Note
с параметром DEL_ALL удаляет все hbp
Пример
setHBP(r.eip,BYTE,ON_EXEC);
deleteHBP(DEL_ALL);

bool delMBP();

удаление Memory BP

Возвращаемое значение

Функция возвращает true если удалось установить точку останова, и false в случае ошибки

Пример
delMBP();