外挂界的大哥?号称无法被检测的DMA物理读写内存设备到底是个啥

 佚名文
发布时间:2025-07-04 05:08

本帖最后由 最后的戴托纳 于 2023-3-31 04:24 编辑

早在大概20年左右 我就注意到了github dma的项目
也就是这个 https://github.com/slack2450/csgo-dma-overlay
该项目使用了DMA来绕过反作弊实际原理比这个更加复杂一些
不过这篇帖子只讨论关于DMA部分的内容
其实DMA全称Direct Memory Access,即直接存储器访问
也就是利用PCIE设备来直接读写物理内存这种方式绕过了操作系统
做到了可以在目标机上没有任何代码运行的情况下做到读写内存的操作
这个项目是DMA的发源地 https://github.com/ufrisk/pcileech
具体关于DMA物理读写设备的原理都可以参考这个项目包括上面那个CSGO的读写绘制也是依赖了pcileech
大概年前 通过一位朋友拿到了一块DMA读写设备
拿回来了以后一直压箱底 没有去玩 不得不说万能的朋友圈真是啥都有
今天有空于是拿出来试了试首先是下载DMA依赖
或者我喜欢称之为基础库
因为DMA只能读物理内存
但当前的操作系统都有虚拟内存到物理内存的转换一个物理内存可以对应多个虚拟内存等等知识不再具体聊下去了
所以pcileech这个装备库就帮你完成了绝大多数的工作你可以直接输入虚拟内存 然后他会自动帮你转换再通过DMA设备进行读取内容总之这个库的功能十分强大

[Ruby] 纯文本查看 复制代码

import memprocfs vmm = memprocfs.Vmm(['-device', 'existingremote']) for process in vmm.process_list(): for entry in process.maps.pte(): if '-rwx' in entry['flags']: print(str(process.pid) + ': ' + process.name + ': ' + str(entry))

这部分是自带的python代码 当然我跑的是win32环境
你可以看到库里还能直接帮你枚举进程列表实际上
他原理大概类似特征定位只要定位到了ntos的地址
剩下的都好说不过说起来简单想实现这个库还是挺难的
因为我的测试机是个破旧的华南X79在经历了一大堆麻烦事以后才终于跑通了这份代码
并且我这台电脑上装的还是python27于是乎我直接导入头文件 开个测试工程 开始试一下到底好不好用

[C++] 纯文本查看 复制代码

char* temp_str[] = { "","-device","FPGA" }; VMM_HANDLE handle = VMMDLL_Initialize(3, temp_str); SIZE_T pcPIDs; VMMDLL_PidList(handle, nullptr, &pcPIDs); DWORD* pPIDs = (DWORD*)new char[pcPIDs * 4]; VMMDLL_PidList(handle, pPIDs, &pcPIDs); for (int i = 0; i < pcPIDs; i++) { VMMDLL_PROCESS_INFORMATION ProcessInformation = { 0 }; ProcessInformation.magic = VMMDLL_PROCESS_INFORMATION_MAGIC; ProcessInformation.wVersion = VMMDLL_PROCESS_INFORMATION_VERSION; SIZE_T pcbProcessInformation = sizeof(VMMDLL_PROCESS_INFORMATION); VMMDLL_ProcessGetInformation(handle, pPIDs[i], &ProcessInformation, &pcbProcessInformation); std::cout << pPIDs[i] << "---" << ProcessInformation.szName; VMMDLL_MAP_MODULEENTRY* ppModuleMapEntry = nullptr; VMMDLL_Map_GetModuleFromNameU(handle, pPIDs[i], ProcessInformation.szName, &ppModuleMapEntry,VMMDLL_MODULE_FLAG_NORMAL); if (ppModuleMapEntry) { std::cout << "---" << ppModuleMapEntry->uszFullName << std::endl; if (ProcessInformation.szName == std::string("dwm.exe")) { std::cout << "IMAGE:"<<std::hex << ppModuleMapEntry->vaBase << std::endl; ULONG temp = 0; VMMDLL_MemRead(handle, pPIDs[i], ppModuleMapEntry->vaBase, (PBYTE)&temp, 4); std::cout << "temp:" << temp << std::endl; temp = 0; VMMDLL_MemWrite(handle, pPIDs[i], ppModuleMapEntry->vaBase, (PBYTE)&temp, 4); VMMDLL_MemRead(handle, pPIDs[i], ppModuleMapEntry->vaBase, (PBYTE)&temp, 4); std::cout << "temp:" << temp << std::endl; } } else { std::cout << std::endl; } }


不得不说这个库的功能的确齐全
你只需要初始化 然后去获取PID列表即可进程名 包括进程完整名都可以直接读取u1s1 这东西方便的地方在于 即便是进程的EPROCESS和PEB等他都给你写出来了 直接看这个结构体

[C++] 纯文本查看 复制代码

typedef struct tdVMMDLL_PROCESS_INFORMATION { ULONG64 magic; WORD wVersion; WORD wSize; VMMDLL_MEMORYMODEL_TP tpMemoryModel; // as given by VMMDLL_MEMORYMODEL_* enum VMMDLL_SYSTEM_TP tpSystem; // as given by VMMDLL_SYSTEM_* enum BOOL fUserOnly; // only user mode pages listed DWORD dwPID; DWORD dwPPID; DWORD dwState; CHAR szName[16]; CHAR szNameLong[64]; ULONG64 paDTB; ULONG64 paDTB_UserOpt; // may not exist struct { ULONG64 vaEPROCESS; ULONG64 vaPEB; ULONG64 _Reserved1; BOOL fWow64; DWORD vaPEB32; // WoW64 only DWORD dwSessionId; ULONG64 qwLUID; CHAR szSID[MAX_PATH]; VMMDLL_PROCESS_INTEGRITY_LEVEL IntegrityLevel; } win; } VMMDLL_PROCESS_INFORMATION, *PVMMDLL_PROCESS_INFORMATION;

同时VMMDLL_Map_GetModuleFromName这个函数还能获取模块地址以及模块大小等等信息

[C++] 纯文本查看 复制代码

typedef struct tdVMMDLL_MAP_MODULEENTRY { QWORD vaBase; QWORD vaEntry; DWORD cbImageSize; BOOL fWoW64; union { LPSTR uszText; LPWSTR wszText; }; // U/W dependant DWORD _Reserved3; DWORD _Reserved4; union { LPSTR uszFullName; LPWSTR wszFullName; }; // U/W dependant VMMDLL_MODULE_TP tp; DWORD cbFileSizeRaw; DWORD cSection; DWORD cEAT; DWORD cIAT; DWORD _Reserved2; QWORD _Reserved1[3]; PVMMDLL_MAP_MODULEENTRY_DEBUGINFO pExDebugInfo; // not included by default - use VMMDLL_MODULE_FLAG_DEBUGINFO to include. PVMMDLL_MAP_MODULEENTRY_VERSIONINFO pExVersionInfo; // not included by default - use VMMDLL_MODULE_FLAG_VERSIONINFO to include. } VMMDLL_MAP_MODULEENTRY, *PVMMDLL_MAP_MODULEENTRY;

拿到MZ 完全没问题
至此关于DMA的体验就结束了 因为我那台华南X79的主板兼容性很差 所以我也没有继续深入的体验了

栈回潮:如果你喜欢我的帖子可以帮忙点个关注 https://github.com/DragonQuestHero
这样等我去面试的时候 人家只要点开了我的个人页面 看到如此多的关注 谁会不迷糊 至少面子是有了 你说对吧(狗头)
 

免费评分 参与人数 60威望 +1 吾爱币 +73 热心值 +53 理由
yxwudi       + 1   谢谢@Thanks!  
stopf578     + 1   + 1   热心回复!  
yizb420     + 1   + 1   热心回复!  
xhtdtk     + 2   + 1   我很赞同!  
Wjn04     + 1   + 1   用心讨论,共获提升!  
Zy0319       + 1   谢谢@Thanks!  
Zomtooe       + 1   用心讨论,共获提升!  
ljc0923     + 1   + 1   我很赞同!  
sDing     + 1   + 1   我很赞同!  
zhaosongquanlol     + 1     用心讨论,共获提升!  
Hmily   + 1   + 20   + 1   感谢发布原创作品,吾爱破解论坛因你更精彩!  
fwm     + 1   + 1   谢谢@Thanks!  
cx831174     + 1   + 1   谢谢@Thanks!  
yanzhongjiang     + 1   + 1   已经处理,感谢您对吾爱破解论坛的支持!  
cccclll     + 1   + 1   用心讨论,共获提升!  
liurui130     + 1   + 1   谢谢@Thanks!  
zxgamekingdom       + 1   欢迎分析讨论交流,吾爱破解论坛有你更精彩!  
YiFan8       + 1   鼓励转贴优秀软件安全工具和文档!  
无常gui     + 1     我很赞同!  
hanlaoshi     + 1   + 1   谢谢@Thanks!  
theStyx     + 2   + 1   谢谢@Thanks!  
jhm1998     + 1   + 1   牛逼  
yenfenwo     + 1   + 1   我很赞同!  
hanxufeng     + 1   + 1   我很赞同!  
LonelyCrow     + 1   + 1   用心讨论,共获提升!  
福建白琳     + 1   + 1   感谢您的宝贵建议,我们会努力争取做得更好!  
xyh061116     + 1   + 1   用心讨论,共获提升!  
crazy_hb     + 1   + 1   这不是那种插U盘的外挂吗?  
warming     + 1     谢谢@Thanks!  
oopays     + 1   + 1   用心讨论,共获提升!  
zhaoyunlf     + 1   + 1   欢迎分析讨论交流,吾爱破解论坛有你更精彩!  
lgc81034       + 1   谢谢@Thanks!  
jaredchen     + 1   + 1   谢谢@Thanks!  
L的追梦人生     + 1   + 1   我很赞同!  
大熊d     + 1   + 1   我很赞同!  
ynhololens     + 1     热心回复!  
a466221939     + 1     热心回复!  
qiufengcl     + 1   + 1   我很赞同!  
diaoes     + 1   + 1   用心讨论,共获提升!  
M79241     + 1   + 1   用心讨论,共获提升!  
woolenhy       + 1   我很赞同!  
Qiaoyuexuan     + 1   + 1   用心讨论,共获提升!  
Black_山猫       + 1   用心讨论,共获提升!  
ae5j     + 1   + 1   我很赞同!  
rankabb     + 1   + 1   我很赞同!  
zhuchao12246018     + 1   + 1   谢谢@Thanks!  
qq824356421     + 1   + 1   谢谢  
tzblue     + 2   + 1   谢谢@Thanks!  
lcymzzZ     + 1   + 1   用心讨论,共获提升!  
616758465     + 1   + 1   我很赞同!  
shengruqing     + 1     我很赞同!  
myweb1996     + 3   + 1   感谢科普  
mscsky       + 1   我很赞同!  
qq952994407     + 1   + 1   用心讨论,共获提升!  
违规昵称107     + 1   + 1   用心讨论,共获提升!  
ZLF181988       + 1   用心讨论,共获提升!  
5omggx     + 1     用心讨论,共获提升!  
zhangxiaoxiao       + 1   用心讨论,共获提升!  
netspirit     + 1   + 1   欢迎分析讨论交流,吾爱破解论坛有你更精彩!  
apples1949     + 1   + 1   我很赞同!  

查看全部评分

首页
评论
分享
Top