首页
社区
课程
招聘
[原创]简单的部分"SSVGG"游戏反作弊驱动分析
发表于: 2025-4-9 17:23 2541

[原创]简单的部分"SSVGG"游戏反作弊驱动分析

2025-4-9 17:23
2541

驱动采用2025年4月初版本文件

进程的PRE/POST回调:

线程PRE/POST回调:

检查 AllocationType 是否包含 MEM_RESERVE (0x2000) 和 MEM_COMMIT (0x1000) 这两个标志。如果不包含这两个标志 (例如,只是查询或释放内存,虽然 NtAllocateVirtualMemory 主要用于分配),或者后续条件失败,则直接调用原始函数。

检查目标进程 PID 是否在白名单中。如果在,直接调用原始函数。

如果保护属性包含如下权限,直接拦截
PAGE_EXECUTE | PAGE_EXECUTE_READ | PAGE_EXECUTE_READWRITE | PAGE_EXECUTE_WRITECOPY

检查NtAllocateVirtualMemory调用返回的地址:

检查点1 : 确保返回地址在内核空间 => 调用 NtAllocateVirtualMemory 的代码本身是运行在内核模式下的。如果调用来自用户模式,其返回地址会在用户空间,这个条件就不会满足。

检查点2 : 调用者的返回地址不属于驱动程序预先定义好的那些“安全”或“已知”的内核模块/代码区域。换句话说,如果这个函数返回 0,意味着调用者来自一个未知的或者驱动程序不信任的内核位置。

最后 : 调用日志函数,传递详细信息 会堆栈回溯看调用NtAllocateVirtualMemory 来源

这里是直接读PE里面的

  1. 通信端口创建: 驱动通过 FltCreateCommunicationPort 函数创建了一个名为 \\OWNeacSafePort 的内核通信端口。
  2. 通信目的: 该端口旨在建立内核驱动与用户态 NAC (NetEase Anti-Cheat) 服务之间的安全双向通信通道。
  3. 用户态进程调用 FilterConnectCommunicationPort 尝试连接 \\OWNeacSafePort。
  4. 当用户模式尝试连接到驱动创建的通信接口会检查: 长度 / key='FUCK' / 版本号等信息
  1. 存在一个白名单列表如果进程不在白名单列表则抹去 PROCESS_VM_READ (0x10) 权限
  2. 如果不在白名单则: 回调触发时间戳 / 调用者线程/进程ID / 目标进程ID / 最初以及最终请求访问权限 / 进程大多数信息 / 堆栈回溯
  1. 当一个非游戏进程尝试对属于游戏进程的线程进行操作时。
    清除 THREAD_SET_INFORMATION 和 THREAD_SET_CONTEXT 权限
  2. 记录详细信息,包括:
    事件类型/时间戳
    调用者进程/线程 ID
    目标线程 ID 及其所属进程 ID
    请求和授予的访问权限
    调用堆栈
  1. 堆栈回溯的CALL 必须 大于等于 2 才会被记录
  2. 忽略来自 System Idle (0) 和 System (4) 进程的加载
  3. 火绒注入 : ZwProtectVirtualMemory LdrLoadDll ZwTestAlert 那一部分 主要操作在ntdll.dll中
  4. 这里如果资源不足 即错误 = 0xC000009A 就不会进行回调注册了
  1. 这里主要用于收集进程信息放到进程列表,供OB回调使用
  1. CROSSFIRE.EXE (穿越火线)
    DNF.EXE (地下城与勇士)
    GAMELOADER.EXE (Wegame的)
    如果存在这三个进程创建线程 则阻止对该线程的创建 并且设置为 拒绝访问 STATUS_ACCESS_DENIED 我猜不会有人SSVGG和这几个游戏一起同时玩吧,SSVGG应该也是这么想的
  1. 利用ZwOpenThread尝试打开线程
  2. 查询线程起始地址 查询线程是否有'ThreadBreakOnTermination'
  3. 堆栈回溯 这里全部记录 不管是不是大于等于2个
  1. 检查 AllocationType 是否包含 MEM_RESERVE (0x2000) 和 MEM_COMMIT (0x1000) 这两个标志。如果不包含这两个标志 (例如,只是查询或释放内存,虽然 NtAllocateVirtualMemory 主要用于分配),或者后续条件失败,则直接调用原始函数。

  2. 检查目标进程 PID 是否在白名单中。如果在,直接调用原始函数。

  1. 是否是跨进程
  2. 是否有权限 : PAGE_EXECUTE | PAGE_EXECUTE_READ | PAGE_EXECUTE_READWRITE | PAGE_EXECUTE_WRITECOPY
  3. 检查句柄是否特殊 (-1 等)
  1. 如果保护属性包含如下权限,直接拦截
    PAGE_EXECUTE | PAGE_EXECUTE_READ | PAGE_EXECUTE_READWRITE | PAGE_EXECUTE_WRITECOPY

  2. 检查NtAllocateVirtualMemory调用返回的地址:

  1. AccessMode 是内核模式
  2. (FaultStatus & 0x10) != 0: 检查页面错误是否由指令获取 (Instruction Fetch) 引起。
  3. 检查故障地址处的 4 字节内容是否为一个特定的值 (0x1131482E)。*FaultingAddress = 0xC3 如果是,则将该位置的字节修改为 0xC3,这是 RET (返回) 指令的机器码。
  4. 检查当前的 PML4 帧号是否与一个目标 CR3 的帧号匹配。这通常用于判断当前发生页面错误的进程是否是目标监控/修改的进程。
  5. 检查当前的 PML4 帧号是否不等于 xxCR3 的帧号。
    __writecr3(xxCR3) 如果不等于,则将当前的 CR3 切换为xx的 CR3。
  1. 这个在 Win32kfull.sys下 具体存放了一些函数
  2. 例如其中一部分 : 当用户模式程序调用 Win32 APl函数(如 SendMessage,PostMessage,DefwindowProcCallWindowProc,SetWindowsHookEx等)时,这些调用最终会陷入内核模式,并由win32k.sys 或 win32kfull.sys 中的相应系统调用处理程序接收。这些系统调用处理程序通常不会直接包含所有逻辑。它们会根据传入的参数(例如消息 ID、窗口类、钩子类型等)从 mpFnidPfn 或其他类似的表中查找正确的处理函数指针,然后调用该指针指向的函数。NtUserMessageCall的函数,内部逻辑会更复杂,但最终也会依赖这些函数指针表来分发任务
  1. 检查证书的签名者是否为 "Microsoft Corporation"。
  2. 是微软的放到可信任列表
  1. 大多数内存开辟的名字是 'FkTX' 'SBTX' '0000' 'LTSK'
  2. 这不是一个玩笑
    图片描述
  1. BreakOnTermination:
    该位置1后,任务管理器结束进程时将提示“是否结束系统进程XXX”。结束后windbg将会断下。
  • 通信端口创建: 驱动通过 FltCreateCommunicationPort 函数创建了一个名为 \\OWNeacSafePort 的内核通信端口。
  • 通信目的: 该端口旨在建立内核驱动与用户态 NAC (NetEase Anti-Cheat) 服务之间的安全双向通信通道。
  • 用户态进程调用 FilterConnectCommunicationPort 尝试连接 \\OWNeacSafePort。
  • 当用户模式尝试连接到驱动创建的通信接口会检查: 长度 / key='FUCK' / 版本号等信息
  • 存在一个白名单列表如果进程不在白名单列表则抹去 PROCESS_VM_READ (0x10) 权限

  • [培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

    最后于 2025-4-9 17:27 被S极客编辑 ,原因:
    收藏
    免费 87
    支持
    分享
    最新回复 (64)
    雪    币: 4
    活跃值: (4040)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    2
    HOOK 之 MmAccessFault  这里没看懂,能不能详细说说
    2025-4-9 18:08
    0
    雪    币: 5039
    活跃值: (5085)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    3
    这些内核hook不会触发PG吗?
    2025-4-9 20:37
    0
    雪    币: 193
    活跃值: (520)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    4
    讲真的 老玩家 都知道 HOOK 这东西随时可以绕过,也又相对未公开的防 HOOK 技术
    2025-4-9 21:03
    0
    雪    币: 2104
    活跃值: (5218)
    能力值: ( LV3,RANK:20 )
    在线值:
    发帖
    回帖
    粉丝
    5
    大佬真牛逼
    2025-4-9 23:05
    0
    雪    币: 10
    能力值: ( LV1,RANK:0 )
    在线值:
    发帖
    回帖
    粉丝
    6
    向大佬学习
    2025-4-10 00:10
    0
    雪    币: 4218
    活跃值: (5475)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    7
    有个问题,他没开启VT,怎么HOOK的NtAllocateVirtualMemory和MmAccessFault???
    2025-4-10 00:29
    1
    雪    币: 0
    活跃值: (403)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    8
    向大佬学习
    2025-4-10 00:34
    0
    雪    币: 292
    活跃值: (587)
    能力值: ( LV3,RANK:29 )
    在线值:
    发帖
    回帖
    粉丝
    9
    大佬牛逼!
    2025-4-10 01:26
    0
    雪    币: 3260
    活跃值: (4589)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    10
    向大佬学习
    2025-4-10 07:46
    0
    雪    币: 503
    能力值: ( LV1,RANK:0 )
    在线值:
    发帖
    回帖
    粉丝
    11

    大佬牛逼!

    最后于 2025-4-10 08:51 被fanfall编辑 ,原因:
    2025-4-10 08:51
    0
    雪    币: 76
    能力值: ( LV1,RANK:0 )
    在线值:
    发帖
    回帖
    粉丝
    12
    学习学习
    2025-4-10 09:09
    0
    雪    币: 552
    活跃值: (4444)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    13
    2
    2025-4-10 11:02
    0
    雪    币: 0
    能力值: ( LV1,RANK:0 )
    在线值:
    发帖
    回帖
    粉丝
    14
    6666
    2025-4-10 11:06
    0
    雪    币: 115
    活跃值: (1065)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    15
    谢谢你的细致分析,受益匪浅!
    2025-4-10 11:24
    0
    雪    币: 3185
    活跃值: (5744)
    能力值: ( LV4,RANK:55 )
    在线值:
    发帖
    回帖
    粉丝
    16
    1
    2025-4-10 11:33
    0
    雪    币: 5366
    活跃值: (5347)
    能力值: ( LV10,RANK:160 )
    在线值:
    发帖
    回帖
    粉丝
    17
    mark
    2025-4-10 13:31
    0
    雪    币: 237
    活跃值: (765)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    18
    make !
    2025-4-10 14:12
    0
    雪    币: 364
    活跃值: (2001)
    能力值: ( LV4,RANK:50 )
    在线值:
    发帖
    回帖
    粉丝
    19
    make
    2025-4-10 14:22
    0
    雪    币: 851
    活跃值: (4859)
    能力值: ( LV3,RANK:20 )
    在线值:
    发帖
    回帖
    粉丝
    20
    mark
    2025-4-10 14:35
    0
    雪    币: 3079
    活跃值: (3557)
    能力值: ( LV8,RANK:147 )
    在线值:
    发帖
    回帖
    粉丝
    21
    mark
    2025-4-10 14:38
    0
    雪    币: 43
    活跃值: (451)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    22
    mark
    2025-4-10 14:39
    0
    雪    币: 1110
    活跃值: (1868)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    23
    mark
    2025-4-10 14:44
    0
    雪    币: 233
    活跃值: (734)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    24
    Mark
    2025-4-10 14:44
    0
    雪    币: 952
    活跃值: (2066)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    25
    Mark
    2025-4-10 15:33
    0
    游客
    登录 | 注册 方可回帖
    返回