Я разрабатываю отладчик (Win32 c ++), который присоединяется к процессу и устанавливает в нем точку останова, заменяя первый байт определенной команды на 0xCC, а затем обрабатывая событие отладчика. Для очистки BP я уменьшаю EIP и восстанавливаю байт 0xCC с оригиналом.
Как мне реализовать повторяющийся BP, то есть несколько раз останавливать выполнение программы по определенной команде, пока не будет выполнено какое-либо условие?
Я попытался установить BP для следующей команды во время обработки первого попадания, очистить текущий BP, затем подождать, пока не будет достигнут нижний BP, и сбросить BP выше него, но это кажется очень неуклюжим. Есть ли лучший способ сделать это?
Также необходимо очищать кэш процессора каждый раз, когда я устанавливаю или очищаю БП (в настоящее время я делаю это)?
Задача ещё не решена.
Других решений пока нет …