通过 DMA 设备(含 VMware 等)对 目标物理内存空间 进行 搜索、散列读、标量读写,接口名均以 Dma 前缀区分于 内存 的用户态逻辑读写。需 硬件/驱动/高级版 支持,误用可致系统不稳定。
| 接口 | 差异 |
|---|
DmaAddDevice | 添加 VMware 类设备(参数见详情页)。 |
DmaAddDeviceEx | 扩展 添加(自定义设备类型/路径等)。 |
DmaRemoveDevice | 移除设备句柄。 |
| 接口 | 用途 |
|---|
DmaGetPidFromName、DmaGetPidList | 解析 进程(名称→PID、枚举)。 |
DmaGetProcessInfo | 进程基本信息。 |
DmaGetModuleBase、DmaGetModuleSize、DmaGetProcAddress | 模块基址/大小/导出,与内存模块语义类似但走 DMA 路径。 |
| 类型 | 接口 | 与内存模块对应 |
|---|
| 二进制 | DmaFindData / DmaFindDataEx | 类似 FindData(Ex) |
| 整数 | DmaFindInt / DmaFindIntEx | 类似 FindInt(Ex) |
| 浮点 | DmaFindFloat / DmaFindFloatEx | … |
| 双精度 | DmaFindDouble / DmaFindDoubleEx | … |
| 字符串 | DmaFindString / DmaFindStringEx | … |
差异:Ex 通常多 范围、对齐、多结果 等参数;底层通过 DMA 读 实现。
| 步骤 | 接口 |
|---|
| 创建 | DmaScatterCreate |
| 准备地址 | DmaScatterPrepare |
| 执行 | DmaScatterExecute |
| 取结果 | DmaScatterRead |
| 清理 | DmaScatterClear |
| 关闭 | DmaScatterClose |
与单次 DmaRead* 差异:批量不连续地址 时减少往返,CPU/带宽 更优;需按顺序调用。
| 命名规律 | 含义 |
|---|
DmaReadData / DmaReadDataAddr | 读一块数据;Addr 变体显式物理/设备地址(以详情页为准)。 |
DmaReadDataToBin / DmaReadDataAddrToBin | 读到 本地缓冲,需配对释放(见内存模块 FreeMemoryPtr 等说明)。 |
DmaReadInt / DmaReadIntAddr | 标量;Addr 同理。 |
DmaWrite* | 写入对称命名。 |
| 场景 | 优先 |
|---|
| 有目标进程句柄、用户态可读 | 内存 |
| 需 DMA 硬件、虚拟机物理内存 | DMA |
- 地址是 物理 还是 转换后 以 详情页与设备类型 为准。
- 写入 风险极高,先在副本环境验证。