Как рассчитать адрес, куда вставить динамическую точку останова - PullRequest
0 голосов
/ 10 января 2019

Я буду использовать Visual Studio для C / C ++ в качестве фреймворка, потому что это тот отладчик, который меня больше всего интересует.

Когда я устанавливаю точку останова в коде, она становится «немедленно» активной, даже если код уже запущен. Насколько я понимаю, это делается с помощью Read / WriteProcessMemory. Чего я не понимаю, так это как получить точный адрес памяти, в который вы записываете инструкцию int 3.

Для статических точек останова это легко, потому что тогда компилятор может по существу проанализировать точку останова вместе с исходным кодом и вставить инструкцию int 3 как естественную часть кода gen. Но с динамическими точками останова я не вижу, как можно сопоставить точку останова на произвольной строке исходного кода с правильным адресом исполняемого файла во время его работы. Как вы рассчитываете это?

...