解决方案
如果我正确理解,
他们通常会从每次运行堆喷雾时大致在同一位置的事实中,他们通常会利用这一事实。执行流可以通过缓冲区溢出或堆溢出缺陷将执行流重定向到堆喷雾。
他们在谈论这样的情况:
char buffer[10];
FuncPtr p;
当您阅读时 buffer
没有溢出保护,您可以直接写入存储位置 p
. 。稍后您的代码试图致电 p
, ,它将跳到攻击者希望它跳跃的位置,大概是他们将可执行代码注入您的应用程序的位置。
简单修复:不要使用静态缓冲区(更喜欢 std::
收集课),始终检查溢出。
不隶属于 StackOverflow