-1

我发现很难弄清楚为什么我们需要 DEP!

Microsoft 声明了有关 DEP 的信息:

DEP 的主要好处是有助于防止从数据页执行代码。

通常,代码不会从默认堆和栈中执行。硬件强制 DEP 检测从这些位置运行的代码,并在执行时引发异常。

软件强制 DEP 可以帮助防止恶意代码利用 Windows 中的异常处理机制

那是什么意思?

你能给我一个简单的非代码示例吗!

4

1 回答 1

4

假设我是攻击者,我发现了一个漏洞,它(仅)允许我在您的应用程序中设置 EIP(程序计数器)。利用这一点的经典方法是编写一个小代码存根(“shellcode”)并将其作为一些参数发送到您的应用程序(例如,它可能被放入银行应用程序的“名字”字段中)。您的应用程序会将其存储在堆栈(或堆)缓冲区中,然后我可以设置 EIP - 使用我发现的漏洞 - 指向此缓冲区的开头。瞧,我的代码存根被执行了,你的盒子被 pwned 了 :)

使用 DEP,CPU 知道拒绝执行此数据的尝试,并且您会更安全一些。

在实践中它比这更复杂,但这就是它的要点。那有意义吗?

于 2012-06-27T22:54:38.600 回答