Я занимаюсь разработкой и написанием нового инструмента тестирования перезаписи памяти в Linux, который распознает ошибки из-за перезаписей в динамически выделяемой памяти.
Один хороший способ сделать это - , если пользователь запрашивает x байтов, то выделяет x + r байтов.Использование mprotect
не дает доступа к r байтам, так что если пользовательская программа запускается в этой части, она будет остановлена, генерируя SIGSEGV.
Но проблема в вышеприведенном случае заключается в том, что mprotect
требует отображенной памяти(mmap
), и каждый раз, когда malloc
запрос, отображающий байты x + r, является практически служебной информацией.
Можете ли вы предложить другой способ?Или какой-нибудь фрагмент кода, если вы работали над таким инструментом?
PS: Кто-нибудь может поделиться каким-либо документом дизайна любого такого инструмента с открытым исходным кодом, который он знает или использовал?