论坛首页 安全工具分享区 阅读主题

[原创]对某市场外挂驱动逆向分析

306 浏览 11 回复
#1 楼主 2026-06-01 21:08:45
误入了一个外挂驱动交流群,规模挺大;进来就看见难绷的宣传语贴脸

无敌稳定,无特征,无模块,独家核心技术?哈哈
以测试的名义加了驱动作者,SDK眼花缭乱

上手看看是个什么货色如他所说,确实是无模块,但很显然反作弊干的就是无模块。我之前写过一篇文章从内存的角度扫描无模块驱动。
太长不看,具体步骤:1.扫一遍内核RWX内存2.加载驱动3.再扫一遍内核RWX内存对比一下,较低地址,突然增大的部分大概率就是这期间被映射上去的无模块驱动(不一定,得手动排查一下,另外也有可能是RX内存),如图: 利用这个原理可以把外挂驱动dump下来分析,先说一下文件结构:劫持了Null.sys的指针通信
分析x64.dll发现通过通过向Null.sys发送IO control code进行通信,用Ark工具看一下Null.sys的派遣函数

这两个Io地址明显是指向了外挂驱动的地址范围

重定向到了自己的Io分发函数具体的Hook:
有点混淆,可以给这个dispatch函数打断点追控制流;但混淆不强,直接看ioctl code追对应的swithc-case也行用MmPfnDataBase拿到CR3后将虚拟地址转物理地址,用MmCopyMemory读
处理了跨页、大页等问题
用MmMapIoSpace把物理内存映射到当前地址空间,然后直接读取
比较搞笑的是他这个memcpy写反了

和Drv_ReadMemory一样,不过把TranslateLinearAddress换成了从Pcb->DiretoryTableBase取CR3 写也是一样的,换下参数位置有个Drv_AllocMemory就不放了,很简单的附加+ZwAllocateVirtualMemory申请内存
看看这个Drv_AllocHighMemory这里的思想就是之前流行的高位注入的内存申请部分;附加到用户进程,在内核申请内存然后通过页表的User位暴露给用户态访问;现在有个问题就是机器普遍开启了KVAS,隔离了内核页表
注入均未处理SEH、TLS;而且代码写的很诡异,每一种shellcode执行方式都写了个函数,看的头痛。导入表处理的不好,动态链接的DLL注入进去,在修复导入表的时候会#PF蓝屏
没筛选线程,直接附加+ZwOpenThread拿到任意一个线程的对象然后劫持

还有个remote thread就不看了这玩意我还在想为什么断不下来,看dll原来是纯3环实现,实现方式还很呆;释放并执行了一个名为inject.exe的程序

提取inject.exe,是一个很纯粹的反射注入,WriteProcessMemory + VirtualAllocEx + CreateRemoteThread。好吧,稳定!
用ObRegisterCallback注册回调保护进程,注意有两个校验点,先patch掉

注册完之后改回来避免pg
回调函数:

不过测试的时候发现它这个特征码有点问题搜不到,进程直接崩了
伪装了下面内容:


回复或点赞可查看完整内容

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289059.htm
#2 2026-06-01 21:08:45
附件IDA version:9.1
#3 2026-06-01 21:08:45
周旋久


附件IDA version:9.1

不知道主包会不会switch混淆
#4 2026-06-01 21:08:45
学习一下
#5 2026-06-01 21:08:45
学习学习
#6 2026-06-01 21:08:45
综合型、擅长掌法、火属性、攻防兼备,类似龙、战神、战意强,全身强调XT。
#7 2026-06-01 21:08:45
学习学习
#8 2026-06-01 21:08:45
学习下
#9 2026-06-01 21:08:45
tql
#10 2026-06-01 21:08:45
学习下
#11 2026-06-01 21:08:45
注入这块没绷住
#12 2026-06-01 21:08:45
看看是什么样子的

请登录后参与讨论

立即登录 注册账号