Если я правильно понимаю,
Они обычно пользуются преимуществами
Дело в том, что эти блоки кучи будут
примерно быть в том же месте каждый
время запуска кучи спрей. выполнение
поток может быть перенаправлен в кучу
распыляет через переполнение буфера или кучу
недостатки переполнения.
Они говорят о такой ситуации:
char buffer[10];
FuncPtr p;
А когда вы читаете в buffer
, защита от переполнения отсутствует, и вы можете записать непосредственно в ячейку памяти для p
. Позже, когда ваш код попытается вызвать p
, он перейдет туда, куда злоумышленник хочет, чтобы он прыгнул, по-видимому, туда, где он внедрил исполняемый код в ваше приложение.
Простое исправление: не используйте статические буферы (предпочитайте классы коллекции std::
) и всегда проверяйте на переполнение.