为什么无法从具有 PAGE_GUARD 保护的块中读取数据?

2024-02-27

我使用 ReadProcessMemory 函数从地址空间读取数据。我尝试读取所有具有 MEM_PRIVATE 类型的块。但是当该块具有 PAGE_GUARD 保护时,我收到错误(函数返回 0),为什么?

谢谢大家。


具有 PAGE_GUARD 保护的页面保证不可访问。对它的任何访问都会产生页面错误,并反射回来进入拥有该页面的进程作为 STATUS_GUARD_PAGE_VIOLATION 异常。此功能在 Windows 中被大量使用,用于检测此站点所指定的状况并从中恢复。

线程堆栈的最后两页是保护页。当程序递归地崩溃、消耗所有堆栈空间并触发异常时,操作系统会重新映射这些页面,使它们可用作紧急堆栈空间,并重新引发 STATUS_STACK_OVERFLOW 异常。这使得程序可以处理心脏病发作。通常的结果是一条简短的消息和程序终止。

触发页面防护异常是一次性的事情,一旦触发,就不再有防护了。显然是非常非常重要的是只有进程中的代码才会触发它。不存在这样的情况:你探查另一个进程的地址空间并引发异常,它永远不会有好的结果。除了进程之外,不知道发生了什么,因此永远无法正确响应异常,它也消除了安全舱口。如果你戳了堆栈保护页面之一,那么你会立即终止程序。

现在应该很明显了,您被故意限制使用 ReadProcessMemory() 访问这些页面。当你这样做的时候,不可能有什么好事发生。返回值告诉您“这里没有什么可看的,继续前进”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么无法从具有 PAGE_GUARD 保护的块中读取数据? 的相关文章

  • 如何将敏感数据从视图传递到控制器

    为了构造一个包含大量信息的实体 我需要执行一系列表单提交 每次我从控制器返回视图时 我都需要传递一些有关尚未建立的实体的 id 现在 我将这些信息注入隐藏字段 并在发回服务器时继续构建实体 这样的场景持续了好几次 我对这种传递敏感信息的方式
  • Django Python - LDAP 身份验证

    我目前正在研究 Django Python 我的目标是从 Ldap 目录对用户进行身份验证 我确实有 python 代码来访问 ldap 目录并检索信息 Code import ldap try l ldap open ldap forum
  • 如何直接将一个mapper-reducer的输出发送到另一个mapper-reducer而不将输出保存到hdfs中

    问题最终解决检查底部的我的解决方案 最近 我尝试运行 Mahout in Action 的第 6 章 列表 6 1 6 4 中的推荐示例 但我遇到了一个问题 我用谷歌搜索但找不到解决方案 问题是 我有一对映射器减速器 public fina
  • jQuery() 与 jQuery.parseHtml() 空格语法错误

    我有一行 javascript 导致 jQuery 中出现语法错误 document find Container replaceWith data find Content 代码本身如果相当无害的话 它所做的只是从 ajax 调用获取响应
  • 获取一个 jar 及其源代码和 javadoc

    随着以下内容在ivy xml
  • 为什么我使用某些 git 命令后终端变得无响应?

    我经常 真的每次 使用该命令后git log我的终端对进一步的输入没有响应 这是在 OSX 上 是否有一个我不知道的命令将使终端再次激活 而不是仅仅退出终端并重新开始 您正在使用一个无需滚动即可显示日志的程序 很可能less 可以通过按q
  • gulp-uglify 不会保留文件顺序

    当我使用吞咽丑化 https github com terinjokes gulp uglify为了缩小 Javascript 文件 顺序变得混乱 可以说我让这个任务按预期工作 var gulp require gulp var renam
  • Swing:如何创建事件并将其分派给组件?

    我需要将一些事件发送到 Swing 中的组件 因此它的处理方式就像任何用户生成的标准 Swing 事件一样 基本上 类似于宏记录器 然后是 JEditorPane 的执行器 但我需要对生成的事件有更多的控制 所以 假设我有一个编辑 我想 捕
  • 如何在 django 表单声明中设置标签的 css 类?

    我正在使用 django uniform 并使用一些统一的功能 我正在寻找一种直接从表单声明添加 css 类的方法 对于独立小部件 作为奖励 这里是我的可重复使用的只读自制混合片段 from django import forms def
  • 如何在Java中添加两个“卡”的值?

    我正在开发一个项目来模拟二十一点游戏中的第一笔交易 到目前为止 程序创建了两张随机等级 ACE 到 KING 和随机花色的牌 我正在努力创建一个切换表或 if else 梯形图 将两张卡的附加值分配为可变分数 下面的代码从概念上代表了我想要
  • 如何使用 __m128i 执行元素左移?

    我发现 SSE 移位指令只能在所有元素上移位相同的量 mm sll epi32 mm slli epi32 这些会移动所有元素 但移动量相同 http software intel com sites products documentat
  • 无法将类型“X”的值转换为预期参数类型“X”

    Xcode 8 和 Swift 3 今天让我非常难过 请看一下并告诉我您是否遇到过类似的问题以及是否可以解决它 我一直在尝试不同的解决方案 其中 Cmd Shift K Cmd Shift Option K 删除派生数据 更改使用的结构 它
  • 根据对象内的值将对象数组分成两部分

    我一直在尝试 并努力 弄清楚如何根据键值对拆分对象数组 长话短说 我有一个火车正在停靠的车站列表 需要将之前的停靠点和未来的停靠点分开 我正在使用的数据如下所示 station code SOC station name Southend
  • 将环境变量传递给子shell CMD

    我的系统有问题gitlab ci yml在 Windows 上 我发射phpunit与环境变量 所以 我有一个像这样的变量 PHPUNIT SOURCE PATH cgi bin php exe PHPUNIT PATH 之前声明了一些变量
  • 与桌面浏览器相比,移动浏览器有多强大? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • E/libEGL: validate_display:99 错误 3008 (EGL_BAD_DISPLAY) API 24 或更高版本

    当我使用 API 为 24 或更高版本的设备时 我收到此错误 E libEGL validate display 99 错误 3008 EGL BAD DISPLAY XML 代码 activity main xml
  • 从 Oracle 获取包方法和参数

    我正在寻找 Oracle 查询来获取 Oracle 包 过程的所有参数 我知道有一个视图或表可以提供此功能 但我似乎不记得它是什么 注意 我并不是要从 user objects 获取包列表 而是要获取包 中每个过程的数据类型和参数名称 Th
  • 恢复 nuget 包时出现无法找到 nuget 本地源错误,本地源不存在

    我得到了 Visual Studio 2017 解决方案 当我打开它时 它失败并出现以下错误 Error occurred while restoring NuGet packages The local source network lo
  • ReactJS 无效校验和

    尝试使用 ReactJS 和 Node js 进行服务器端渲染时 我不断收到以下错误 React attempted to use reuse markup in a container but the checksum was inval
  • 只有创建视图层次结构的原始线程才能触摸其视图。在安卓上[重复]

    这个问题在这里已经有答案了 我只是一个初学者 所以请原谅我问一个可能愚蠢的问题 我不明白只有创建视图层次结构的原始线程才能触摸其视图的含义 请有人告诉我为什么会发生此错误以及如何解决此问题 ThankYou 这是我的班级 public cl

随机推荐