暴雪在1.10补丁中加入hack检测机制,在某种程度上直接导致了原本和谐的D2X游戏黑客社群的分裂。一部分出于对检测机制的顾虑,停止更 新自己的作品,如d2hackit;另一部分则把他们的hack具有的反检测功能当成卖点开始收费,如d2maphack和d2jsp;还有一部分黑客出 于不满开始制作这些收费hacks的替代品,如d2hackmap,C3PO,d2bs等;甚至有些黑客出来破解这些收费hacks。
如前一篇文章所说,暴雪在1.10中加入packet 64/65检测。最早公布packet 64被用作hack检测的是jhj。当然Mousepad在jhj之前就已知道这一点,但是他当时正打算对maphack收费,反检测是一大卖点,因此一 直没有公布。在jhj公布了他的发现后,我检查了相关代码,又发现了packet 65也被用作hack检测。
如前文的分析,packet 64/65检测用的都是memory probe方法,那么memory probe该怎么对付呢?一种简单的想法是在客户端截获packet 64/65检测,不让它返回检测结果。截获packet 64/65检测思路是对的,但不返回检测结果其实也是一种信息,暴雪完全可能根据这点判断你在使用hacks,最不济也会把你踢下线,显然不是好的做法。 对付memory probe,更好的做法是伪造检测结果。这需要截获packet 64/65检测,然后根据要检测的内存地址返回该地址被修改前的数据(如果已经被修改了的话),这样无论检测哪个地址,检测结果都和没有使用hacks时 的一样。
具体到实现方法,大约又有三种。
一种是hack在安装旁路点时,先保存原先的数据,这样在遇