如何禁用DEP

And*_*rsK 3 c++ dep winapi

我们有一个应用程序,其中堆的某些部分作为汇编指令/用于测试目的执行 - 我们将程序下载到PLC,但允许用户通过在下载到PLC之前执行其代码来模拟运行其应用程序.在我们总是从存储指令的堆中执行这些程序之前,这个工作正常但我们现在已经转换为VS2012了,现在看来关闭DEP并不是那么容易.我想知道是否有可能关闭DEP而不管GetProcessDEPPolicy返回什么,或者是否有其他技术从堆执行汇编指令而不涉及DEP?

j__*_*__m 6

您不想禁用DEP; 您想要修改您的应用程序以在其中工作.

每个http://msdn.microsoft.com/en-us/library/windows/desktop/aa366553%28v=vs.85%29.aspx

If your application must run code from a memory page, it must allocate and set the proper
virtual memory protection attributes. The allocated memory must be marked PAGE_EXECUTE,
PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, or PAGE_EXECUTE_WRITECOPY when allocating memory.
Run Code Online (Sandbox Code Playgroud)

遵循这些简单的指示,您的代码可以与DEP共存.