Неявная функция __strcpy_chk () вызов - PullRequest
1 голос
/ 04 апреля 2010

Я сейчас выполняю тест атаки переполнения стекового буфера на моем собственном ПК (Ubuntu 9.10, gcc-4.4.1) на основе статьи http://www.tenouk.com/Bufferoverflowc/Bufferoverflow4.html. Пока я не достиг цели. Каждый раз, когда возникает ошибка, сопровождаемая некоторой информацией об ошибке.

Я компилирую исходный код и хочу получить дополнительную информацию, используя objdump. Функция __strcpy_chk вызывается в выгруженном коде сборки, и говорится, что «Функция __strcpy_chk () не в исходном стандарте; она только в двоичном стандарте» Является ли этот механизм компилятором, используемым для защиты стека времени выполнения? Чтобы закончить мой тест, как я могу обойти защиту?

Привет.

1 Ответ

3 голосов
/ 04 апреля 2010

Функция пытается проверить, что вы случайно не разбили вещи слишком сильно (т. Е. Перезаписали адрес возврата функции), и это часть реализации strcpy, а не ее спецификация. Это только частичный патч для проблем с strcpy, но он действительно защищает вас от проблем, о которых говорит эта веб-страница, и только с небольшими затратами.

Если вы хотите избежать этого, напишите свою собственную версию strcpy. Наивная реализация, о которой вы «подумаете первым», должна иметь проблему и хорошо подойдет для демонстрации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...