基于签名的检测¶
PunkBuster 扫描使用它的游戏系统上所有进程内存,搜索已知作弊软件特有的字节模式,称为签名。如果 PunkBuster 检测到签名,玩家会被标记为封禁。PunkBuster 使用 NtQueryVirtualMemory() Windows API 函数从用户模式执行内存扫描,有时从多个隐藏进程运行扫描。
基于签名的检测本质上无视上下文,它最终有一个致命缺陷:误报。2008 年 3 月 23 日,一组黑客试图通过用 PunkBuster 会识别为机器人签名的文本字符串刷屏公共聊天室来证明这个缺陷的存在。由于 SBD 盲目扫描进程内存寻找匹配模式,这些公共聊天室中的任何合法玩家都被标记为机器人使用者。
这让数千名公平玩家被毫无理由地封禁。2013 年 11 月又发生了类似情况:PunkBuster 错误地封禁了 Battlefield 4 上数千名玩家。那一次没有人试图证明什么;公司只是给软件添加了一个糟糕的签名。
PunkBuster 通过恢复玩家账户解决了这两个问题,但这些事件展示了它的 SBD 有多激进。此后,PunkBuster 的 SBD 通过只检查预定义二进制偏移处的签名,减少了误报数量。