wzwz5200/Hyper_rw
GitHub: wzwz5200/Hyper_rw
基于Hypervisor的Windows虚拟机内存内省框架,提供进程结构定位与跨版本符号解析能力。
Stars: 54 | Forks: 15
# Hyper_rw
本文档介绍了 **GuestMemory** 虚拟内存访问类,基于 [noahware/hyper-reV](https://github.com/noahware/hyper-reV),以及四个用于定位目标进程 CR3、EPROCESS、PEB 和模块基址的内核实用函数。
### dbghelp.dll 和 symsrv.dll 用于在运行时下载和解析符号 (PDB),确保跨不同 Windows 版本的兼容性。
[中文](README.zh.md)
## 1. 核心实用函数
这些函数依赖 `PsActiveProcessHead` 从内核侧定位关键进程结构。
### GetProcessCr3
**参数**: `target_pid`, `ps_active_process_head`
**返回值**: CR3 (DirectoryTableBase)
遍历 ActiveProcessLinks 并根据 PID 返回该进程的页表基址。
### FindProcessEProcessBase
**参数**: 同上
**返回值**: EPROCESS 内核虚拟地址
适用于访问 Token、HandleTable 等字段。
### FindPebByCr3_Raw
**参数**: `target_cr3`, `ps_active_process_head`
**返回值**: PEB 用户模式虚拟地址
通过 CR3 反向查找 EPROCESS,然后读取 Peb 字段;不依赖 PID。
### GetModuleBase_Raw
**参数**: `target_cr3`, `peb_address`, `module_name`
**返回值**: DllBase
遍历 PEB Ldr 模块列表以查找目标 DLL。
## 2. GuestMemory
GuestMemory 封装了 VA→PA 转换和跨页处理,是从用户模式访问目标进程虚拟内存的主要接口。
### 构造
```
GuestMemory mem(target_cr3); // 绑定页表
```
### 2. ReadValue / WriteValue
```
int hp = 0;
mem.ReadValue(0x7FF70010, hp);
```
### 3. 调用流程概述
获取 PsActiveProcessHead
获取目标 CR3
初始化 GuestMemory
查找 PEB
查找目标 DLL
使用 GuestMemory 读写目标地址
# BSD 2-Clause 许可证(要求明确署名)
版权所有 (c) [2025], [wz5200]
保留所有权利。
在满足以下条件的前提下,允许以源代码和二进制形式进行重新分发和使用,无论是否经过修改:
1. **源代码重新分发必须在分发时保留上述版权声明、此条件列表以及下述免责声明。**
2. **二进制重新分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表以及下述免责声明。**
3. **所有重新分发必须在本软件的任何公开或私下使用中明确注明原作者 ([wz5200])。**
标签:0day挖掘, C++, CR3, EPROCESS, GuestMemory, Hypervisor, JARM, PDB符号解析, PEB, Windows内核, 内存分析, 内存自省, 内存遍历, 内核安全, 反作弊, 数据擦除, 游戏安全, 物理内存访问, 白帽子, 系统底层, 虚拟内存读写, 虚拟化, 进程枚举, 高性能