Можно ли прочитать содержимое переменной с помощью GDB? - PullRequest
0 голосов
/ 23 декабря 2011

Возможно ли это без файла file.out и исходного кода, но только с двоичным кодом?Возможно ли, зная имя переменной, найти и прочитать во время выполнения значение?

1 Ответ

1 голос
/ 23 декабря 2011

Возможно ли, зная имя переменной, найти и прочитать во время выполнения значение

Это зависит.

Если переменная является глобальной, идвоичный файл не удаляется, поэтому вы должны иметь возможность проверить его значение с помощью простого

x/gx &var
print var

Последний может распечатать переменную, как если бы она была типа int (если двоичный файл не имеет отладочной информации), что может быть не тем, что вы ищете.

Если переменная локальная (автоматическая), вы можете распечатать ее только в рамках процедуры, в которой она объявлена ​​(очевидно).

Если двоичный файл имеет отладочную информацию, тогда простой print var в правильном контексте должен работать.

Если двоичный файл не имеет, вам придется выяснить адрес переменной в памяти (обычнос фиксированным смещением от указателя стека регистра указателя кадра), и проверьте этот адрес.Вы часто можете многое понять о данной подпрограмме, разобрав ее.

Обновление:

Если я уберу двоичный файл, труднее будет выполнить обратный инжиниринг?

Конечно: чем меньше информации вы предоставляете злоумышленнику, тем труднее вы делаете его работу.

Но вы также делаете своей работой тяжелее: когда ваш бинарный файл не работаетчасто ваш конечный пользователь будет знать больше о своей системе, чем вы.Часто он загружает ваш бинарный файл в GDB и сообщает вам, где именно ваша ошибка.С удаленным исполняемым файлом он, скорее всего, не сможет этого сделать, так что вы будете угадывать взад и вперед, и после недели попыток потеряете этого клиента.

И ничего Вы можете сделать так, чтобы достаточно решительный и достаточно опытный хакер с корневым доступом к своей системе и аппаратному обеспечению не смог пересмотреть вашу программу.

В конце концов, по моему опыту, методы обхода обхода обычно намного болеебеда, чем они стоят.

...