Да. Контекст доступен, ставим флаг, и DBG_CONTINUE.
Это как раз шаг на следующую инструкцию, но для неё нужны привилегии, и она не работает, вроде, на Windows 7
С чего бы вдруг? Можно даже себя отлаживать таким образом. Поставить VEH и вперёд, к победе.
А, нет. Просто с Windows 7 нужно будет снимать защиту с памяти А на Windows XP и так работало
Как защита памяти соотносится с TF? Это для int3 надо менять атрибуты защиты, да и то WriteProcessMemory есть.
https://stackoverflow.com/questions/16271828/is-set-single-step-trap-available-on-win-7
Читай внимательнее. Это программные брейкпоинты на чтение/запись памяти. У страницы (или двух) отбираешь доступ, программа на этом спотыкается, ты проверяешь точный адрес (и обрабатываешь брейк, если совпал). Затем возвращаешь доступ, выставляешь TF, чтобы шагнуть по инструкции, которая ходила в память, потом снова отбираешь доступ, чтобы «брейкпоинт» сработал в следующий раз. Если программа очень часто долбит в разные места одной страницы, такие брейкпоинты очень замедляют отладку, но их может быть сколько угодно, в то время как аппаратных брейкопоинтов может быть только четыре.
Обсуждают сегодня