Skip to content

DMA 模块总览 - Overview

本分类做什么

通过 DMA 设备(含 VMware 等)对 目标物理内存空间 进行 搜索、散列读、标量读写,接口名均以 Dma 前缀区分于 内存 的用户态逻辑读写。需 硬件/驱动/高级版 支持,误用可致系统不稳定。


一、设备管理

接口差异
DmaAddDevice添加 VMware 类设备(参数见详情页)。
DmaAddDeviceEx扩展 添加(自定义设备类型/路径等)。
DmaRemoveDevice移除设备句柄。

二、进程与模块

接口用途
DmaGetPidFromNameDmaGetPidList解析 进程(名称→PID、枚举)。
DmaGetProcessInfo进程基本信息。
DmaGetModuleBaseDmaGetModuleSizeDmaGetProcAddress模块基址/大小/导出,与内存模块语义类似但走 DMA 路径。

三、搜索:DmaFind*Ex

类型接口与内存模块对应
二进制DmaFindData / DmaFindDataEx类似 FindData(Ex)
整数DmaFindInt / DmaFindIntEx类似 FindInt(Ex)
浮点DmaFindFloat / DmaFindFloatEx
双精度DmaFindDouble / DmaFindDoubleEx
字符串DmaFindString / DmaFindStringEx

差异Ex 通常多 范围、对齐、多结果 等参数;底层通过 DMA 读 实现。


四、散列读(Scatter)

步骤接口
创建DmaScatterCreate
准备地址DmaScatterPrepare
执行DmaScatterExecute
取结果DmaScatterRead
清理DmaScatterClear
关闭DmaScatterClose

与单次 DmaRead* 差异批量不连续地址 时减少往返,CPU/带宽 更优;需按顺序调用。


五、读写:DmaRead* / DmaWrite*

命名规律含义
DmaReadData / DmaReadDataAddr读一块数据;Addr 变体显式物理/设备地址(以详情页为准)。
DmaReadDataToBin / DmaReadDataAddrToBin读到 本地缓冲,需配对释放(见内存模块 FreeMemoryPtr 等说明)。
DmaReadInt / DmaReadIntAddr标量;Addr 同理。
DmaWrite*写入对称命名。

六、与内存模块选型

场景优先
有目标进程句柄、用户态可读内存
DMA 硬件、虚拟机物理内存DMA

七、注意

  • 地址是 物理 还是 转换后详情页与设备类型 为准。
  • 写入 风险极高,先在副本环境验证。