ReadProcessMemory

从特定进程的内存里读取数据。被读取的整个位置应该是可读的否则操作会失败。

BOOL WINAPI ReadProcessMemory(

__in    HANDLE hProcess ,

__in    LPCVOID lpBaseAddress ,

__out  LPVOID lpBuffer ,

__in    SIZE_T nSize ,

__out  SIZE_T* lpNumberOfBytesRead 

);

参数:

hProcess:目标进程的句柄。这个句柄必须有 PROCESS_VM_READ 标记。

lpBaseAddress:一个指向目标进程需要读取数据的首地址的指针。在读取数据之前,系统将会确认需读取的所有数据是否可读,如果不可读那么函数执行失败。

lpBuffer:指向要接收读取到的数据的缓冲区。

nSize:读取的数据大小,单位为Bytes。

lpNumberOfBytesRead:指向一个变量,用于放置传送数据的大小。如果为NULL,该参数被忽略。

返回值:

成功:非零。

失败:零。

得到更多错误信息,使用 GetLastError 函数。

如果读到了不可读的内存,该函数会失败。

附注:

该函数从指定的进程读取内存数据到当前进程的内存。任何标记为 PROCESS_VM_READ 的句柄都能使用该函数。Typically but not always, the process with address space that is being written to is being debugged.(在很典型的情况下,可被写内存的进程是处于调试状态的。)

要求:

头文件:在Winbase.h里声明;包括Windows.h。

库:Kernel32.lib

动态链接库:Kernel32.dll

ReadProcessMemory()相关推荐

  1. ReadProcessMemory函数的分析

    ReadProcessMemory函数用于读取其他进程的数据.我们知道自远古时代结束后,user模式下的进程都有自己的地址空间,进程与进程间互不干扰,这叫私有财产神圣不可侵犯.但windows里还真就 ...

  2. 如何使用ReadProcessMemory读取多重指针

    1.多重指针通常是指多个指针的嵌套,每个指针里存放的是其他指针的地址,简单点说就是在一个变量中存入了一个数,而这个数正好是一个变量的地址,通过这个地址就可以去操作那个变量 2.注意事项:使用ReadP ...

  3. ReadProcessMemory Types of actual and formal var parameters must be identical

    转自:https://www.cnblogs.com/cb168/p/5884673.html delphi XE Berlin ReadProcessMemory WriteProcessMemor ...

  4. ReadProcessMemory函数的用法

    函数功能描述:该函数用来读取指定进程的空间的数据,此空间必须是可以访问的,否则读取操作会失败! 函数原型 BOOL ReadProcessMemory(    HANDLE hProcess,   / ...

  5. HOOK api readprocessmemory and writeprocessmemory

    编译环境:delphi 2010+windows 7 u ,用途读取其他程序中readprocessmemory和writeprocessmemory的参数,但不知读取偏移即a+($b),b是怎么读的 ...

  6. FindWindow ,GetWindowThreadProcessId , OpenProcess 和ReadProcessMemory

    文章目录 FindWindow 函数功能: 函数声明: 第一个参数 第二个参数 返回值 注意: GetWindowThreadProcessId 函数功能 函数声明 第一个参数: 第二个参数: 返回值 ...

  7. WinAPI-函数OpenProcess/ReadProcessMemory/WriteProcessMemory

    OpenProcess函数声明如下,失败则返回NULL(0,也就是false) #include <Windows.h> HANDLE OpenProcess ( DWORD desire ...

  8. ReadProcessMemory与WriteProcessMemory用例分析

    首先介绍一个函数VirtualProtectEx,它用来改变一个进程的虚拟地址中特定页里的某一区域的保护属性,这句话有些咬嘴,直接从MSDN中翻译过来的,简单来说就是改变某一进程中虚拟地址的保护属性, ...

  9. [检测过检测] 重写 ReadProcessMemory 、WriteProcessMemory

    一.本文大纲 系统调用的两种方式:中断门和快速调用 _KUSER_SHARED_DATA 结构 使用 cpuid 指令判断当前CPU是否支持快速调用 3环进0环需要更改的4个寄存器 以 ReadPro ...

最新文章

  1. tensorflow.unstack() 与 tensorflow.stack()
  2. asyncio 回调
  3. python 线程同步_Python并发编程-线程同步(线程安全)
  4. Leetcode--122. 买卖股票的最佳时机Ⅱ
  5. 【ElasticSearch】es 面试题 视频 笔记
  6. 解决win7光驱驱动找不到的问题
  7. 你是如何离编程越来越远的?
  8. Python入门--流程控制语句break
  9. python方法_详细解读Python中的__init__()方法
  10. qq空间代码查询_Mysql千万级大数据查询优化经验,一点课堂(多岸学院)
  11. Linux的磁盘系统和文件系统显示的文件大小为什么不一样(du指令和ls指令的区别)...
  12. moodle安装过程中可能出现的问题
  13. 晶体管电路设计 上 铃木雅臣 学习体会
  14. php后门 佛像,给千年佛像做了个CT,结果好吓人
  15. 程序员一年多少行_程序员版的倚天屠龙,看完泪奔!
  16. 啊,原来申请数字证书这么简单
  17. 2285列车时刻表_火车票查询j2285时刻表
  18. android平板ps,移动端和平板上的Photoshop Touch(支持iOS和Android)
  19. delphi 两行代码实现合并多张图片生成mp4视频
  20. “对不起,我们公司只招35岁以上的...”

热门文章

  1. 带宽与码元的关系_带宽、速率和码元宽度问题
  2. INFLUXDB-influxDB一些查询语法你必须知道
  3. LNK1120: 一个无法解析的外部命令
  4. mysql连接查询和in的效率取舍
  5. iOS开发小记:初次接入环信SDK3.0时遇到的问题及解决办法汇总
  6. UC/OS和UCLinux比较
  7. 【科创人南京行】西祠胡同创始人“响马”刘琥:一生寻找精神绿林,减区块链也许是正确方向...
  8. 火遍网络的KPI异常检测到底什么梗?
  9. 写 字 楼 通 信系统工程技术售后维护
  10. idea智能提示设置和修改提示快捷键