Люди подскажите как сделать чтобы срабатывал брекпоинт на каждой команде... это нужно для того чтобы проверять по условию, память например... Когдато давно я такую фишку видел... Сейчас нефига найти не смог :-( Возможно там и bp был а чегото другое, точно не помню... но главное что оно работало!
Была такая штука. Называлась breakpoint on memory range. Но это только в айсе под маздай. Под NT такого нет.
Тем, что можно было на айс переложить проверку условия. Три года назад хотел статью писАть по точкам прерываний. Вот кусочек черновика. ---------------------------------------------------------------------- --- Пример отлова точки выполнения определенной инструкции Notepad.exe (оконная процедура) Код (Text): 0187:00401C74 55 PUSH EBP 0187:00401C75 8BEC MOV EBP,ESP 0187:00401C77 56 PUSH ESI 0187:00401C78 8B750C MOV ESI,[EBP+0C] 0187:00401C7B 83FE05 CMP ESI,05 0187:00401C7E 7714 JA 00401C94 0187:00401C80 0F8406010000 JZ 00401D8C 0187:00401C86 83FE02 CMP ESI,02 0187:00401C89 0F84F0000000 JZ 00401D7F 0187:00401C8F E983000000 JMP 00401D17 0187:00401C94 83FE10 CMP ESI,10 0187:00401C97 7723 JA 00401CBC 0187:00401C99 0F84A1010000 JZ 00401E40 0187:00401C9F 83FE06 CMP ESI,06 0187:00401CA2 0F8422010000 JZ 00401DCA 0187:00401CA8 83FE07 CMP ESI,07 0187:00401CAB 0F8452010000 JZ 00401E03 0187:00401CB1 83FE08 CMP ESI,08 0187:00401CB4 0F846E010000 JZ 00401E28 0187:00401CBA EB5B JMP 00401D17 0187:00401CBC 83FE1A CMP ESI,1A 0187:00401CBF 7711 JA 00401CD2 0187:00401CC1 0F84E5030000 JZ 004020AC 0187:00401CC7 83FE11 CMP ESI,11 0187:00401CCA 0F84D0010000 JZ 00401EA0 0187:00401CD0 EB45 JMP 00401D17 0187:00401CD2 83FE1C CMP ESI,1C 0187:00401CD5 0F8407020000 JZ 00401EE2 Допустим надо прерваться при выполнении команды JA XXXXXXXX (опкод 77??) Ставим bpr на диапазон внутри которого надо искать JA: Код (Text): bpr 00401C74 00401CD0 r if byte(*EIP)==77 Прервемся по адресам: Код (Text): 0187:00401C7E 7714 JA 00401C94 0187:00401C97 7723 JA 00401CBC 0187:00401CBF 7711 JA 00401CD2 ---------------------------------------------------------------------- ---
Под NT такого нет. IceExt - полезная штука. Там была робкая попытка что-то такое смастрячить. Никогда, правда, не пользовался
Команда T (или F8) - отладчик будет вставлять INT3 после каждой команды с заходами в процедуры Ты определись чего тебе надобно - для проверки содержимого памяти на условия есть BPM. Если ты имеешь ввиду BPR (не знаю как Four-F это почувствовал ), то как совершенно правильно подсказывает Volodya: !bpr - команда из IceExt, установка бряка (на исполнение, чтение или запись) на диапазон памяти, размером кратным 1000h байт. Не поддерживает все опции команд по установке брейкпоинтов (как то - IF и DO), поэтому то что описал Four-F не прокатит
"Если ты имеешь ввиду BPR (не знаю как Four-F это почувствовал " Вобщето именно это я и имел ввиду :^) И точно для этих целей и думал использовать... Очень жалко что убрали эту функцию... Интересно по какой причине :-\ Вроде нечто подобное есть в OllyDbg, вот как-раз смотрю... какаято она правда неудобная... Большое спасибо за ответы...