readprocessmemory error 299[通俗易懂]

readprocessmemory error 299[通俗易懂]Itrytoreadallcommitedpagesofaprocess(Win7-64).Onmostpagesitworksbutitfailsforafewpages.Icannotexplainwhy.Hereismytestprogramme(compiledx32,testedinWin7-64):#inclu

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

I try to read all commited pages of a process (Win7-64). On most pages it works but it fails for a few pages. I cannot explain why. Here is my test programme (compiled x32, tested in Win7-64):

#include <windows.h> void main() { 
    HANDLE hProc = OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION,FALSE,GetCurrentProcessId()); SYSTEM_INFO si; ZeroMemory(&si,sizeof(SYSTEM_INFO)); GetSystemInfo(&si); char* buf = new char[si.dwPageSize]; for (unsigned i = 0; i < 0x7fff0; i++) { 
    void* baseOffs = (void*) (i * si.dwPageSize); MEMORY_BASIC_INFORMATION mbi; ZeroMemory(&mbi,sizeof(MEMORY_BASIC_INFORMATION)); if (VirtualQueryEx(hProc, baseOffs, &mbi, sizeof(MEMORY_BASIC_INFORMATION)) == 0) { 
    MessageBox(NULL, TEXT("VirtualQueryEx failed"),TEXT(""),MB_OK); } if (mbi.State == MEM_COMMIT) { 
    SIZE_T numByteWritten = 0; if(ReadProcessMemory(hProc, baseOffs,buf,si.dwPageSize,&numByteWritten) == FALSE) OutputDebugString(TEXT("bad\n")); //GetLastError()==ERROR_PARTIALLY_READ; numByteWritten == 0; else OutputDebugString(TEXT("good\n")); } } delete[] buf; }

I tired to look into the MEMORY_BASIC_INFORMATION for the failing pages but I didn’t find anything strange there. Also the number of failing pages varies from run to run (in average about 5). WHat prevents me from reading these pages? Do I need to adjust some privilges in the process token?

A little bit of debugging and somethings interesting is identified: all pages that fail have protection bit PAGE_GUARD set (see MSDN doc). As I interpret the docs, it is by design that you cannot read these pages with ReadProcessMemory.

if(ReadProcessMemory(hProc, baseOffs,buf,si.dwPageSize,&numByteWritten) == FALSE) { 
     assert(mbi.Protect & 0x100); OutputDebugString(TEXT("bad\n")); //GetLastError()==ERROR_PARTIALLY_READ; numByteWritten == 0;  } else { 
     assert(!(mbi.Protect & 0x100)); OutputDebugString(TEXT("good\n")); }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185978.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月4日 下午5:16
下一篇 2022年10月4日 下午5:36


相关推荐

  • webservice技术的预言

    webservice技术的预言选自 javaee 技术体系中的 webservice 技术前言 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 最近在笔者的公司负责维护原来的基础业务平台 项目中用到的技术是 webservice 以后也接触过 webservice 技术 但是用的不是很多

    2026年3月19日
    2
  • AD域环境搭建超详细

    AD域环境搭建超详细AD 域环境搭建 1 2 工具环境介绍 WindowsServe 的配置文章太长分两篇写了工具 Vmware Windows10 环境介绍 WindowsServe 域名服务器 ceshi com 账号 Administrato pcuser 两个账号 密码 wang IP 地址 192 168 10 100Win7Sp1 账号 userone 密码 Wang IP 地址 192 168 10 101 两者为仅主机模式 192 168

    2026年3月19日
    1
  • pycharm配置vue的问题

    pycharm配置vue的问题我在为 pycharm 配置 vue 编译环境时遇到 EditConfigur 界面如下 这里 Name 可以随便起 package json 填写项目的 package json 地址 Command 默认为 run 其中 Scripts 在填写时遇到了问题 我参考的网址上注明要写 server 相当于使用 npmrunserver 启动项目 但是我在编译时会报错 后来发现应该填写的是 dev 即相当于使用命令 npmrundev 启动项目 原来这里填写的 server 还是 dev 是与项目在 pack

    2026年3月17日
    2
  • rs232c高电平脉冲对应的ttl逻辑是(单片机串口是什么电平)

    目录一、串口协议和RS-232标准1、串口协议2、RS-232标准一、串口协议和RS-232标准1、串口协议串口通讯(SerialCommunication)是一种设备间非常常用的串行通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。通讯协议,我们以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。2、RS-232标准…

    2022年4月17日
    57
  • Idea激活码最新教程2024.2.5版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2024.2.5版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2024 2 5 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2024 2 5 成功激活

    2025年5月31日
    8
  • 深入理解加密、解密、数字签名(签名证书、加密证书)的组成和数字证书

    深入理解加密、解密、数字签名(签名证书、加密证书)的组成和数字证书深入理解加密 解密 数字签名和数字证书 nbsp nbsp 随着电子商务的迅速发展 信息安全已成为焦点问题之一 尤其是网上支付和网络银行对信息安全的要求显得更为突出 为了能在因特网上开展安全的电子商务活动 公开密钥基础设施 PKI PublicKeyInf 逐步在国内外得到广泛应用 我们是否真的需要 PKI PKI 究竟有什么用 下面通过一个案例一步步地来剖析这个问题

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号