Изменить значение регистра во время выполнения программы?

Видел, как с помощью gdb, ставят брекпоинт, меняют значение регистра, продолжают выполнение, результат изменился. То есть так можно любую программу изменить? Какие есть хорошие дисассемблеры?


Ответы (1 шт):

Автор решения: KoVadim

После перезапуска программы все регистры теряются. Так что скорее всего программа сохранила свой результат где в файл/реестр, а потом прочитала.

Так работать можно практически с любой программой. Некоторые программы могут просто активно сопротивляться (например, так делал раньше скайп и делают многие игры).

gdb вполне хорошая штука, если научится пользоваться. Для начала прочитать что то вида статьи с хабра.

Из дизассемблеров можно отметить классику - IDA - сейчас есть бесплатные версии, OllyDbg - старая классика и под линукс есть radare2 - очень интересная разработка, хотя и требует (как и любой дизассемблер) много знаний.

→ Ссылка