Заменить регистр отладки? - PullRequest
1 голос
/ 06 июня 2011

Я читал несколько старых статей об отладке, и одна из них упоминала регистры отладки. Чтение еще немного об этих регистрах и что они могут сделать, заставило меня невероятно хотеть повеселиться с ними. Однако когда я попытался найти дополнительную информацию о том, как на самом деле их использовать, я обнаружил, что к ним можно получить доступ только с кольца 0 в окнах.

Я думал, что это конец, так как я не собираюсь писать драйвер ядра, чтобы просто поиграть с несколькими регистрами. Но потом я подумал об инструменте редактирования памяти, с которым я играл раньше. Он называется чит-движком, и одна из различных опций программы заключалась в том, чтобы указать, что нужно разбить инструкции / данные, которые выполнялись / выполнялись / читались. Это точно так же, как регистры отладки. Так что мне было интересно: есть ли замена / замена регистров отладки в Windows? Так как я уверен, что программа (чит-движок) не использует драйвер ядра для установки этих значений.

1 Ответ

2 голосов
/ 06 июня 2011

Это совсем не так, вы можете косвенно установить регистр отладки HW из ring3 (это делает ollydbg), для этого вам нужно использовать SetThreadContext под windows ( пример ).

если вы все еще хотите заменить регистры HW, вы можете использовать INT3 для точек разрыва кода и одношаговое отслеживание для проверки, изменилась ли переменная (крайне неэффективно).

хорошая ссылка на GDB и его источник: http://developer.apple.com/library/mac/#documentation/DeveloperTools/gdb/gdbint/gdbint_3.html

...