Как часть моего проекта, я должен вставить части кода (так называемые контрольные контрольные суммы) для защиты некоторой функции. Этот процесс должен быть автоматизирован, то есть мне нужно написать скрипт для вставки этих стражей в сборку. У меня есть шаблон охраны со мной, я не уверен, как действовать дальше.Автоматическая установка контрольной контрольной суммы
Как написать сценарий оболочки для вставки кода в файл сборки, сгенерированный из исходного файла в C?
EDIT:
Это бумага, которую я пытаюсь реализовать. cerias.purdue.edu/assets/pdf/bibtex_archive/2001-49.pdf Авторы упомянули, что они модифицировали двоичный файл, чтобы вставить защитные устройства, но это казалось жестким. Итак, я подумал об изменении кода сборки.
Вот шаблон охранник:
guard:
add ebp, -checksum
mov eax, client_addr
for:
cmp eax, client_end
jg end
mov ebx, dword[eax]
add ebp, ebx
add eax, 4
jmp for
end:
где CLIENT_ADDR и client_end отмечают начало и конец кода для защиты соответственно.
Я понимаю, что мое понимание статьи не является полным, и я до сих пор неясно о различных проблемах, но я пытаюсь понять это.
Как я могу предоставить различные функции (для защиты) в качестве ввода в shellscript?
- Я могу назвать имя функции как строку.
- Я могу указать начальный и конечный адрес функций (найденных с помощью gdb).
Но после вставки контрольной суммы адреса изменились, поэтому я думаю, что дать название было бы лучшей идеей. Это так?
Я новичок в SO, и поэтому вам еще нужно много узнать о правильных способах публикации вопроса. Но спасибо за помощь и руководство.
Если _checksum guard_ вы хотите защитить функцию от переполнения стека, тогда это обычно называют _stack canary_. Пример реализации (для C) [здесь] (http://security.stackexchange.com/questions/37547/how-to-implement-canaries-to-prevent-buffer-overflows). –
Вы описали задачу, вы не задали вопрос. Вам нужно вернуться к тем, кто дал вам эту задачу. И бросить ему вызов, так как заявил, что это та функция, которая * может звучать разумно для управленческих ушей. Это не. Спросить «что вы имеете в виду» - это ваша работа, а не наша. –
Вы имеете в виду gcc-вставки, когда используете '-fstack-protector-strong'? Это просто пишет и читает контрольное значение; он ничего не проверяет. Что именно вы проверяете/CRCing/hashing? –