Мне было интересно, для демонстрационных целей информационной безопасности и тому подобного, можно ли создать пещеру кода вручную в программировании на C?
Википедия утверждает:
A code cave is a series of null bytes in a process's memory
Я пробовал это:
char *cave = malloc(10000);
register int i;
for(i=0;i<999;i++){
cave[i]='\0';
}
И EDB показывает, что это все байты NULL, но cave_miner (последняя версия от GutHUB), похоже, не находит пещеру, когда я пытаюсь получить длину 10000 или даже 100 байтов. Мой GCC как-то его удаляет? При компиляции я не получаю никаких результатов от GCC. Я использую GCC версии 8.2.0 (Debian).
Спасибо заранее за вашу помощь. Опять же, я просто хотел бы продемонстрировать атаку внедрения кода в пещеры без использования чужого двоичного кода, даже если это открытый исходный код. ~ кп





Cave_miner -> Поиск пещеры кода в двоичные файлы (т.е. файлы elf, файлы obj и т. д.)
Представленный вами код выделит 10000 байт cave в баран. В частности, в куча.
Вот почему его не нашли.
Спасибо. Итак, когда загрузчик помещает двоичный файл в ОЗУ перед выполнением, эти нулевые байты присутствуют. Но Cave_Miner смотрит только на статический двоичный файл, а не динамически. Это то, что вы имели ввиду?