【问题标题】:Getting "execute" permission for an area of memory获得内存区域的“执行”权限
【发布时间】:2010-07-15 01:15:37
【问题描述】:

我正在使用 C++,并希望获得在内存区域上执行的权限。有没有办法我可以做到这一点?现在当我尝试执行它时,我得到一个访问冲突错误。

【问题讨论】:

  • 平台?操作系统?你是如何尝试执行数据的?
  • Windows 7 家庭高级版 64 位。我想到了一种执行动态汇编的巧妙方法: typedef void(funcptr)(); / 将 1 移入 ebx 并返回 / char funcbody[8] = {'\xbb', '\x01', '\x00', '\x00', '\x00', '\xc3 '};无效 tmp = funcbody; funcptr f = (funcptr)tmp; F();但我遇到了内存访问冲突。

标签: c++ memory


【解决方案1】:

在 Windows 上,函数是 VirtualProtect,您需要传入 PAGE_EXECUTE_READWRITE 以获得执行权限。

默认情况下,Windows 不允许使用内存。它叫做Data Execute Prevention (DEP)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多