ReadProcessMemory()

C语言学习day22:ReadProcessMemory函数/游戏内存数据读取工具开发 ReadProcessMemory函数是 Windows API 中的一个函数,用于从目标进程的虚拟内存空间中读取数据。这个函数非常有用,尤其是在进行内存分析、调试、或某些类型的逆向工程时。 阅读详情

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

【VC版】如何获取其他进程中ListView控件中的内容 关键代码 HANDLE hProcess; LVITEM *pointer; HWND hwnd,hListview; int headerhwnd; //listview控件的列头句柄 int rows,cols; //listview控件中的行列数 DWORD ProcessID = NULL; DWORD ThreadID = NULL; hwnd = (HWND):: 阅读详情

相关推荐

面试复习题--RN面试

考察点:热更新方案的深度理解,选型能力,实战落地经验。答题思路主流热更新方案对比。

hqiangtai的博客 672

ReadProcessMemory执行过程的全面分析(用户态和内核态)

ReadProcessMemory函数用于读取其他进程的数据。我们知道自远古时代结束后,user模式下的进程都有自己的地址空间,进程与进程间互不干扰,这叫私有财产神圣不可侵犯。但windows里还真就提供了那么一个机制,让你可以合法的获取别人的私有财产,这就是ReadProcessMemory和WriteProcessMemory。为什么一个进程居然可以访问另一个进程的地址空间呢?因为独立的只是低2G的用户态空间,高2G的内核态空间是所有进程共享的。一段执行中的线程进入内核态后,它可以拿到别人的cr3寄存器

zz_strive_2012的专栏 2761

SARscape的DInSAR全流程-以西安市隋大兴唐长安城遗址为例

通过DInSAR对西安市隋大兴唐长安城遗址开展的年度周期性监测,发现成因是地质内部构造断裂带活动所导致的地面产生物理空间上的形变,而地面的沉降与抬升是直接影响城市发展与文化遗产保护最为常见的缓变型不可逆地质灾害。西安市地处汾渭断陷盆地中部,受临潼-长安断裂带影响,导致区域内构造活动较为强烈。由于早年西安市地表水资源匮乏,从上世纪50年代末开始大量开采地下水资源以满足城市人口不断扩张的需求,从而导致地下承压含水层水位急速下降,形成多个局部沉降中心(八里村、西工大、电子城等)。

2301_77687129的博客 5763

ReadProcessMemory

转:http://www.vckbase.com/vckbase/function/viewfunc.asp?id=148函数功能描述:该函数用来读取指定进程的空间的数据,此空间必须是可以访问的,否则读取操作会失败!函数原型 BOOL ReadProcessMemory(  HANDLE hProcess,  // 目标进程句柄  LPCVOID lpBaseAddress,         

zhangmiaoping23的专栏 1343

通过ReadProcessMemory读取进程内存

修改一个程序的过程如下:1、获得进程的句柄 2、以一定的权限打开进程 3、调用ReadProcessMemory读取内存,WriteProcessMemory修改内存,这也是内存补丁的实现过程。下面贴出的是调用ReadProcessMemory的例程 #include<windows.h> #include<tlhelp32.h> BOOLCALLBACKEnum...

zz_strive_2012的专栏 9162

[检测&过检测] 重写 ReadProcessMemory 、WriteProcessMemory

一、本文大纲 系统调用的两种方式:中断门和快速调用 _KUSER_SHARED_DATA 结构 使用 cpuid 指令判断当前CPU是否支持快速调用 3环进0环需要更改的4个寄存器 以 ReadProcessMemory 为例说明系统调用全过程 重写 ReadProcessMemory 和 WriteProcessMemory int 0x2e 和 sysenter 都做了什么工作? 二、中断门和快速调用 以我的理解,系统调用,即从调用操作系统提供的3环API开始,到进0环,再到返回结果到3环的全过程

LYSM 3250

ReadProcessMemory()函数存在溢出漏洞

ReadProcessMemory()函数存在溢出漏洞。。。

tianyaguoke的专栏 1015

A log about Reading the memroy of Other Process in C++/WIN API--ReadProcessMemory()

Memory, is a complex module in Programing, especially on Windows. This time, I use cpp with win windows api{ VirtualQueryEx(); //Get the available memory page(block) ReadProcess...

weixin_30510153的博客 132

vb.net中读取其它进程内存的问题

问题描述 在vb.net下用ReadProcessMemory总是读不了内存的内容。似乎是普遍存在的一个问题,不知道大家有什么好的方法,ReadProcessMemory要怎么调用和声明,或用其它的方法了读取其它进程的内存。 解决方案 ReadProcessMemory这样声明。把lpBaseAddress声明为 ByVal: Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal

George的博客 571

C# Readprocessmemory用法

函数功能:该函数从指定的进程中读入内存信息,被读取的区域必须具有访问权限。 函数原型:BOOL ReadProcessMemory(HANDLE hProcess,LPCVOID lpBaseAddress,LPVOID lpBuffer,DWORD nSize,LPDWORD lpNumberOfBytesRead); 参数: hProcess:进程句柄

dangdaa的专栏 6497

使用内存读写函数实现进程间通信

使用内存读写函数实现进程间通信      自定义消息和内存读写函数(ReadProcessMemory()和WriteProcessMemory())相结合,利用他们各自的长处进行通信。    自定义消息通信只能传递一个长整型数值,而内存读写函数却需要一个内存读写地址,并且缺少一个传递数据指针的方法。    这样他们正好可以“合作”来进行大批量的数据传递工作。 发送端的工作:

l460602540的专栏 2325

Windows环境进程间通信(二):共享内存方式

转自:http://www.zxbc.cn/html/20090609/71620.html 共享内存方式是通过内存来传递数据,必须在内存中申请一定的空间。 可以调用GlobalAlloc()或者VirtualAllocEx()来实现内存空间分配,使用内存读写函数;ReadProcessMemory()和WriteProcessMemory()来读写进程的内存。 要使接收程序获得发送程序的内

白永辉的专栏 3239

如何得到其它进程的启动命令行参数 (转)

 如何得到其它进程的启动命令行参数 ILSY:这个程序可以得到其他进程的命令行参数。// procmdline.cpp (Windows NT/2000)//// This example shows how to get the command line for almost any process// on the system for Windows NT/2000// //// (c)19

Foxmail★Blog 4896

windows下 程序里和cmd中获取/查看进程的参数的方法,打开进程

最近在写一个进程管理的程序,

System Architect 1万+

向其他程序的ListView控件发送LVM_GETITEMTEXT

向其他程序的ListView控件发送LVM_GETITEMTEXT作者:赵春生 下载本文源代码一:问题的由来与解决方法:   首先给大家介绍一个我编写的小程序——CallFI(Call FileInfo),他与2K/XP中的taskmgr.exe(Windows TaskManager)程序配合使用。他能获取指定进程的路径并依此调用FileInfo(文件类型分析工具)程序...

weixin_33874713的博客 1098

获取其他程序的信息(VC实现)

介绍         最近正试着从其他程序的listview控件中获取信息,因为需要传递一个指针以便存放取得的字符串,但Windows使用的是虚拟内存指针是不允许跨进程访问的。         Windows是这样通过虚拟内存来管理分配给所有应用程序的内存的:它让程序认为自己拥有2GB的内存空间可用,它也通过保护来避免程序互相占用内存.这样当一个程序有问题时,不会影响到其他程序。

开发 1899

Readprocessmemory用法

函数功能:该函数从指定的进程中读入内存信息,被读取的区域必须具有访问权限。 函数原型:BOOL ReadProcessMemory(HANDLE hProcess,LPCVOID lpBaseAddress,LPVOID lpBuffer,DWORD nSize,LPDWORD lpNumberOfBytesRead); 参数:hProcess:进程句柄 lpBaseA

若水 3万+

ReadProcessMemory跨页读的封装

前言读进程内存只能一次读一页以内或读页的倍数. 没有试验读页的倍数字节. 试验了读页不对齐的情况. 如果不分多次读(读小于页边界的字节数 + 读整页字节数), ReadProcessMemory会失败.代码预览BOOL CProcessHelper::ReadProcessMemoryEx( HANDLE hProcess, LPCVOID lpBaseAddr

博客标题不能为空 1062

ReadProcessMemory/C++的探索

ReadProcessMemory 函数msdn说明: BOOL WINAPI ReadProcessMemory( _In_   HANDLE hProcess, _In_   LPCVOID lpBaseAddress, _Out_  LPVOID lpBuffer, _In_   SIZE_T nSize, _Out_  SIZE_T *lpNumberOfByte

1万+
上一篇: HeapCreate()
下一篇: VirtualProtect()
windroid
博客等级 码龄12年 28粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值