公司动态

DMALibrary完全指南:14项核心功能解析与DMA内存读写库快速上手

📅 2026/8/25 18:08:18
DMALibrary完全指南:14项核心功能解析与DMA内存读写库快速上手
DMALibrary完全指南14项核心功能解析与DMA内存读写库快速上手【免费下载链接】DMALibrarySimple but extensive library for DMA users, made for gamehacking项目地址: https://gitcode.com/gh_mirrors/dm/DMALibraryDMALibrary 是一个简单但功能丰富的 DMA 内存读写库Simple but extensive library for DMA users专为游戏内存研究game hacking场景打造。它基于 C 编写封装了签名扫描、内存读写、物理内存转储、CR3 修复、键盘读取、代码洞查找等14 项核心功能代码干净且注释完善是 DMA 用户快速搭建内存操作项目的理想起点。什么是 DMA 内存读写库DMADirect Memory Access直接内存访问允许外部设备通过 FPGA 硬件直接从内存读取数据而不经过 CPU 和常规内核路径。对 DMA 用户而言最核心的需求就是读取目标进程内存读 PID、基址、游戏数据向目标进程写入数据改值、注入批量高效传输散列读写Scatter I/ODMALibrary 就是把这些底层操作封装成易用的 C 类让你少踩 FPGA 驱动、MemProcFS / LeechCore 的坑。DMALibrary 的 14 项核心功能全解析以下 14 项功能全部来自官方 README 的项目能力清单1️⃣ 签名扫描Sig Scanning在指定地址范围内扫描字节签名如48 ? ? ?定位目标指令。对应 Memory.h 中的FindSignature接口支持跨 PID 读取。2️⃣ 内存读取Read Memory支持模板化读取一行代码即可把远端int、uint64_t等类型读入本地变量也可指定任意 PID 读取其他进程。3️⃣ 内存写入Write Memory与读取对称模板化写入任意值到目标地址同样支持按 PID 指定进程。4️⃣ 散列读取Scatter Read一次提交多个地址的读取请求批量执行大幅减少单次 DMA 传输开销——高频读取场景如连发多个偏移链的首选。5️⃣ 散列写入Scatter Write与散列读取配套的批量写入能力示例中演示了提交请求 → 执行 → 关闭句柄的完整流程。6️⃣ 物理内存转储Dumping Physical Memory把系统当前的物理内存页映射转储到%temp%目录下的文件供后续 DMA 直接加载Init的memMap参数即控制此行为。7️⃣ 进程内存转储Dumping MemoryDumpMemory可从合法 PE 头地址出发把指定模块内存完整转储到磁盘文件方便离线分析。8️⃣ CR3 修复Fix CR3针对 EAC 等反作弊导致的 CR3 异常遍历系统中所有 DTB寻找未被 PID 占用的候选表并逐一验证恢复正确的进程页表。⚠️ 此功能额外依赖symsrv.dll、dbghelp.dll和 info.db。9️⃣ 目标机键盘读取Keyboard通过内核路径读取目标机器的按键状态IsKeyDown实现远端热键——示例程序就演示了等待远端按 A 键再继续的逻辑。 获取 PID 与基址PID Base Address提供GetPidFromName、GetPidListFromName、GetBaseDaddy模块基址、GetBaseSize模块大小等常用接口免去手动枚举进程。1️⃣1️⃣ 代码洞查找Code Cave Finder在目标进程中自动查找足够大且具备读/写/执行权限的空闲内存区域为注入做准备。1️⃣2️⃣ 函数调用器Function Caller配合代码洞实现call_function挂钩远端函数并调用你指定的函数是远程调用内核/进程函数能力的实用封装。1️⃣3️⃣ 系统调用内核函数Syscalling源码中保留了模板化的SysCall实现思路通过修改系统调用桩的跳转字节实现远端系统调用展示了完整的保存-覆写-还原流程。1️⃣4️⃣ 实用工具集Utilities包括获取导入表地址GetImportTableAddress、导出表地址GetExportTableAddress、模块列表GetModuleList、PEBGetProcessPeb等覆盖 PE 结构常用查询。快速上手三步跑通 DMA 内存读写第一步准备运行依赖程序要求以下 DLL 位于根目录从你的 DMA 供应商处获取文件用途FTD3XX.dllFPGA 设备通信leechcore.dll物理内存读取vmm.dllMemProcFS 虚拟内存管理symsrv.dll/dbghelp.dll/ info.db仅 FixCR3 需要同时 libs/ 目录下需提供leechcore.lib和vmm.lib项目出于安全考虑未附带预编译库可自行编译。第二步初始化 DMA示例程序 Example.cpp 展示了标准初始化方式#include DMALibrary/Memory/Memory.h int main() { // 初始化 DMA锁定目标进程 explorer.exe if (!mem.Init(explorer.exe, true, true)) { std::cout Failed to initialize DMA std::endl; return 1; }Init三个参数依次为目标进程名、是否转储内存映射、是否开启调试输出。第三步读取与写入// 获取进程基址 uintptr_t base mem.GetBaseDaddy(explorer.exe); // 一行读取 一行写入模板化 API std::cout mem.Readint(base 0x66) std::endl; mem.Writeint(base 0x66, 0x69); // 散列批量读取提交请求 → 执行 → 清理句柄 auto handle mem.CreateScatterHandle(); mem.AddScatterReadRequest(handle, base 0x66, value, sizeof(value)); mem.ExecuteReadScatter(handle); mem.CloseScatterHandle(handle); // 别忘了关闭避免内存泄漏完整示例请查看 Example/Example.cpp它一口气演示了键盘热键、FixCR3、普通读写和散列读写四大场景。项目结构一览 ️路径说明DMALibrary/Memory/Memory.h核心类DMA 读写/签名扫描/CR3 修复等入口DMALibrary/Memory/Memory.cpp初始化、内存映射转储等实现约 800 行DMALibrary/Memory/InputManager.h键盘读取c_keys 类DMALibrary/Memory/Registry.h注册表远程查询DMALibrary/Memory/Shellcode.h代码洞查找与函数调用c_shellcode 类DMALibrary/nt/structs.hWindows 内核结构体定义DMALibrary/libs/LeechCore / MemProcFS 头文件Example/Example.cpp可直接编译运行的完整示例常见问题 FAQQ1编译时找不到 leechcore.lib / vmm.lib项目故意未附带预编译库需从 MemProcFS / LeechCore 上游自行编译后放入 libs/ 目录。Q2FixCR3 报错或失败确认根目录存在symsrv.dll、dbghelp.dll和 info.db三者缺一不可。Q3DMA 初始化失败检查FTD3XX.dll、leechcore.dll、vmm.dll是否在程序根目录以及 FPGA 设备连接是否正常。Q4散列读取的结果是旧值必须先调用ExecuteReadScatter执行请求后才能读到最新值顺序不能反。写在最后DMALibrary 以最精简的代码量覆盖了 DMA 内存读写库的完整功能面从初始化、进程定位、读写、批量传输到 CR3 修复和远端注入辅助14 项功能一应俱全。MIT 开源协议意味着你可以自由修改和二次开发。建议从 Example/Example.cpp 跑通第一个 DMA 读取开始再逐项解锁签名扫描与散列读写是学习 DMA 内存操作的极佳教程项目。【免费下载链接】DMALibrarySimple but extensive library for DMA users, made for gamehacking项目地址: https://gitcode.com/gh_mirrors/dm/DMALibrary创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考