我们有一个应用程序,其中堆的某些部分作为汇编指令执行/用于测试目的 - 我们将程序下载到 PLC,但允许用户在下载到 PLC 之前通过执行代码来模拟运行其应用程序。之前我们总是从存储指令的堆中执行这些程序,这工作得很好,但现在我们已经转换到 VS2012,现在看来关闭 DEP 并不那么容易。我想知道是否有可能以某种方式关闭 DEP,无论什么GetProcessDEPPolicy
返回或者是否有其他技术可以在不涉及 DEP 的情况下从堆执行汇编指令?
您不想禁用 DEP;您想要修改您的应用程序以使其在其中运行。
Per http://msdn.microsoft.com/en-us/library/windows/desktop/aa366553%28v=vs.85%29.aspx 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.
遵循这些简单的指示,您的代码就可以与 DEP 共存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)