Точки останова (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();