拓冰建站拓冰建站
首页 / 资讯中心 / 正文

DMALibrary Memory类API参考手册:核心接口参数与返回值完整清单

DMALibrary Memory类API参考手册核心接口参数与返回值完整清单【免费下载链接】DMALibrarySimple but extensive library for DMA users, made for gamehacking项目地址: https://gitcode.com/gh_mirrors/dm/DMALibraryDMALibrary 是一款面向 DMA直接内存访问用户的开发库核心Memory类封装了 DMA 内存读写、签名扫描、Scatter 批量读写等全部基础操作。本文为 DMALibrary Memory 类 API 参考手册完整梳理每个接口的参数与返回值帮助新手快速上手 DMA 内存读写开发。 适合人群刚接触 DMA 开发、想快速掌握 Memory 类接口用法的开发者。认识 DMALibraryMemory 类能做什么DMALibrary 将vmm.dll、FTD3XX.dll、leechcore.dll三个底层库封装成易用的 C 接口开箱即用的能力包括⚡ 签名扫描Sig Scanning⚡ 内存读写Read / Write⚡ Scatter 批量读写⚡ 物理内存地图转储Dump Memory Map⚡ 模块内存转储Dumping Memory⚡ EAC 的 CR3 修复Fix CR3⚡ 目标机键盘状态读取⚡ PID、基础地址、模块列表等实用工具Memory 类的定义位于DMALibrary/Memory/Memory.h并提供了全局单例mem所有接口都通过它直接调用。快速上手3 步完成 DMA 初始化 使用任何接口前先完成这三步第 1 步准备依赖文件把vmm.dll、FTD3XX.dll、leechcore.dll由 DMA 设备供应商提供放到程序根目录。若使用 CR3 修复功能还需symsrv.dll、dbghelp.dll与info.db项目内提供了DMALibrary/info.db与Example/info.db。第 2 步调用 Init 初始化bool Init(std::string process_name, bool memMap true, bool debug false)参数说明process_name目标进程名如 explorer.exememMap为 true 时先转储物理内存地图到临时目录提升 DMA 读取速度debug为 true 时输出底层调试日志返回值true成功 /false失败常见原因设备未连接、进程不存在。Init 内部会自动完成 PID 获取、CR3 修复、基础地址与大小获取示例见Example/Example.cpp。第 3 步获取模块基础地址开始读写内存核心接口清单一初始化与进程信息接口参数返回值说明Init进程名、memMap、debugbool初始化 DMA 与目标进程GetPidFromName进程名DWORD获取进程 PID0 表示失败GetPidListFromName进程名std::vectorint获取所有匹配进程的 PID 列表GetModuleList进程名std::vectorstd::string获取目标进程的模块名列表GetProcessInformation无VMMDLL_PROCESS_INFORMATION获取进程详细信息失败返回空结构GetProcessPeb无PEB读取进程的 PEB 结构FixCr3无bool修复 EAC 造成的 CR3 异常需依赖符号文件 FixCr3 已在 Init 中自动调用若进程重启后需要重新修复可手动再调一次。核心接口清单二基础地址、导入导出表与内存转储接口参数返回值说明GetBaseDaddy模块名可传进程名取主模块size_t模块基础地址0 表示失败GetBaseSize模块名size_t模块映像大小GetExportTableAddress导出名、进程名、模块名uintptr_t目标进程中导出函数的内存地址GetImportTableAddress导入名、进程名、模块名uintptr_t目标进程中导入函数IAT的地址DumpMemoryPE 基础地址、保存路径bool将模块内存转储为 PE 文件 DumpMemory 注意事项地址必须指向有效 PE 头转储出的文件不会重建导入表IAT导入信息会缺失。核心接口清单三内存读写最常用读写接口分两种风格底层缓冲区风格与高层模板风格。底层缓冲区风格接口参数返回值说明Read地址、目标缓冲区、大小bool读取目标进程内存Read带 pid 重载上述参数 指定 PIDbool读取指定进程的内存Write地址、源缓冲区、大小bool写入目标进程内存Write带 pid 重载上述参数 指定 PIDbool写入指定进程的内存高层模板风格接口参数返回值说明ReadT地址类型为 T 的值直接读出指定类型的值如 Readint、Readuint64_tReadT带 pid地址 PID类型为 T 的值从指定进程读取WriteT地址、值无直接写入指定类型的值ReadChain基础地址 偏移链 vector链末端的值一次调用读完整条指针偏移链 示例mem.Readint(base 0x66)即从基础地址偏移 0x66 处直接读出 4 字节整数模板重载的内联实现可见DMALibrary/Memory/Memory.h。核心接口清单四签名扫描uint64_t FindSignature(const char* signature, uint64_t range_start, uint64_t range_end, int PID 0)参数说明signature字节签名支持通配符 ?如 48 ? ? ?range_start扫描起始地址range_end扫描结束地址PID可选默认使用当前目标进程返回值第一个匹配位置的地址返回 0 表示无匹配或参数无效签名空、范围倒置等。 建议先用 GetBaseDaddy 定位模块范围再扫描范围过大时 DMA 扫描会非常缓慢。核心接口清单五Scatter 批量读写高频场景必备每帧需要读取大量分散地址时如批量读取游戏对象数据逐次 Read 效率较低。Scatter 接口把多个请求攒批后一次性提交可显著提升吞吐。接口参数返回值说明CreateScatterHandle无 / pidVMMDLL_SCATTER_HANDLE创建散读散写句柄AddScatterReadRequest句柄、地址、缓冲区、大小无追加一个读请求另有模板重载自动推导大小AddScatterWriteRequest句柄、地址、缓冲区、大小无追加一个写请求ExecuteReadScatter句柄、pid可选无执行全部读请求并清空队列ExecuteWriteScatter句柄、pid可选无执行全部写请求并清空队列CloseScatterHandle句柄无关闭句柄务必调用以免内存泄漏使用流程创建句柄 → 追加请求 → 执行 → 关闭句柄完整示例见Example/Example.cpp。核心接口清单六获取子模块Memory 类还封装了 3 个子模块通过以下接口获取接口返回值说明GetRegistryc_registry注册表读取QueryValue 支持 REG_SZ、REG_DWORD 等类型GetKeyboardc_keys*目标机键盘模块InitKeyboard 初始化IsKeyDown(虚拟键码) 检测按键按下GetShellcodec_shellcode注入工具find_codecave 找代码洞call_function 注入并调用函数子模块定义分别在DMALibrary/Memory/InputManager.h、DMALibrary/Memory/Registry.h、DMALibrary/Memory/Shellcode.h。常见问题 FAQQInit 返回 false先检查什么依次确认三个 DLL 是否在根目录、DMA 设备是否已连接、进程名是否正确。若 memMap 为 true 时初始化失败会自动降级为无内存地图重试。QRead 返回成功但值总是 0检查地址是否有效GetBaseDaddy 是否为 0、类型大小是否正确、CR3 是否已修复观察 FixCr3 日志。QFixCr3 失败确认运行目录下存在symsrv.dll、dbghelp.dll和info.db。Q为什么 Scatter 执行后读到的是旧值请求只是入队必须调用 ExecuteReadScatter 之后缓冲区里才是新数据。总结DMALibrary 的 Memory 类把 DMA 开发的繁琐流程封装成一套即用型 C 接口Init 初始化 → GetBaseDaddy 取基础地址 → Read/Write 读写 → FindSignature 定位特征 → Scatter 高频批量读写。本文已列出全部核心接口的参数与返回值对照上文清单即可快速完成 DMA 内存读写开发。【免费下载链接】DMALibrarySimple but extensive library for DMA users, made for gamehacking项目地址: https://gitcode.com/gh_mirrors/dm/DMALibrary创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门