Windows平台读写进程内存技术解析
需积分: 1 61 浏览量
更新于2024-09-16
收藏 876B TXT 举报
该代码段涉及的是在Windows操作系统中读取和修改进程中内存内容的方法,主要使用了`GetVersionEx`、`VirtualQueryEx`和`ReadProcessMemory`以及`WriteProcessMemory`等函数。
在Windows编程中,读写进程的内容通常涉及到进程间通信(IPC)或调试技术。这段代码的目的是在一个进程中寻找特定值(`dwValue`),并在找到后将其替换为另一个值(`sss`)。以下是对关键部分的详细解释:
1. `OSVERSIONINFO vi={sizeof(vi)}`: 这是用来获取操作系统版本信息的数据结构。`GetVersionEx`函数会填充这个结构,以便判断运行的操作系统是Windows 9x系列(VER_PLATFORM_WIN32_WINDOWS)还是更高版本。
2. `VirtualQueryEx`函数:这是用于查询指定地址范围的内存信息的API,它返回一个`MEMORY_BASIC_INFORMATION`结构体,包含有关内存区域的信息,如分配类型、保护属性、状态等。
3. 循环遍历从`4*1024*1024`到`2*1024*1024*1024`的内存地址空间:这是为了检查进程中的所有可能内存区域,`dwBase`每次增加`mbi.RegionSize`来移动到下一个内存块。
4. 判断条件`mbi.Type==MEM_PRIVATE&&mbi.AllocationProtect==PAGE_READWRITE`:这里筛选出私有类型(不是共享内存)且具有读写保护的内存块。私有内存是只属于当前进程的内存,而读写保护意味着可以对其进行读写操作。
5. 使用`ReadProcessMemory`函数:读取当前进程中`QueryAddr+t`位置的4个字节数据到`sai_res`,并检查是否等于目标值`dwValue`。
6. 如果找到目标值,使用`WriteProcessMemory`函数:将`sai_res`(原值)替换为`sss`,并在成功时输出“дɹ!”(“成功!”的中文拼音)并设置状态变量`stuas`为1。
这段代码可能用于调试、性能分析或者某些自动化工具,但请注意,直接修改其他进程的内存通常是不安全的,并且在没有权限的情况下可能会导致程序崩溃或不稳定。在实际应用中,应确保有适当的权限,并且了解可能的风险。
133 浏览量
369 浏览量
218 浏览量
2021-06-12 上传
182 浏览量
243 浏览量
122 浏览量
2023-06-11 上传
2023-05-20 上传
whitebush01
- 粉丝: 0
- 资源: 3
最新资源
- study
- 行业文档-设计装置-一种共轴高速永磁同步电机互馈测试平台.zip
- UE4NaveAula:Projeto基地,中殿光环。 虚幻引擎的动态处理程序
- 进销存ERP管理系统高保真原型 - HTML.zip
- bookmarklet-demo
- stm32电子秤.zip
- Draft Wed Oct 17 20:38:43 CST 2018-数据集
- 使用winrt-rs的robmikh / Minesweeper端口。-Rust开发
- 2020TI杯模拟电子系统邀请赛比赛现场u盘内容 RSLK+MMWAVE 资料包
- erp-pro-master.zip
- coursera吴恩达机器学习课程作业自写Python版本+Matlab原版
- 六步学会用MATLAB做空间计量回归详细步骤,如何用matlab做回归分析,matlab
- AssignmentWeek05
- Petabridge.Phobos.Web.InfluxDb:使用InfluxDb启用Phobos的Akka.NET + ASP.NET Core应用程序
- inventory-service
- Microsoft Remote Desktop for Mac 10.4.1