[原创]11平台过检测文档
本文主要分享“过检测”部分,全图等作弊功能可以使用网上能搜到的任何一份代码或工具。
随着平台更新,下文中方法可能失效,仅供参考。
目前11平台的反作弊主要依靠11xp.dll中的线程,也就是所谓的“心跳”检测,这些线程一旦启动,如果被挂起或被异常结束,客户端都会提示检测到作弊断开与服务器的连接。
这里不要刚正面,换个思路解决线程的问题。
反作弊系统需要有初始化的过程,阻止11xp.dll模块的初始化可以有效避免后续神捕系统的所有检测及上报机制。但是检测线程初始化失败会不会有问题呢?值得庆幸的是目前平台没有开启初始化Timeout的检测。
打开PCHunter查看War3进程中的线程,可以看到会有这样三个线程。

这些线程不能全都禁止启动,至少需要有一个反作弊的"主线程"负责与服务器"心跳"通讯以及客户端异常处理。
从War3启动时开始观察,会发现这三个线程中最先启动的线程起始地址是11xp.dll+579CAE,直到加载地图的蓝条结束后会立即启动11xp.dll+579F97线程,一段时间后才会启动第三个线程。
经过几次尝试后发现:
最先启动的11xp.dll+579CAE线程一定要正常运行,负责与服务器通讯;
随后启动的11xp.dll+579F97线程会被定期重新创建;该线程可以不运行,这样就不会创建第三个线程。
前文提到线程不可以挂起/异常退出,即我们希望线程“活着”但不工作,可以让线程一直执行Sleep函数交出CPU。
修改线程起始地址11xp.dll+579F97处的代码,直接执行Sleep()函数,让线程Sleep足够久的时间
打开CE附加War3进程,打开反汇编代码,ctrl+g输入11xp.dll+579F97跳转到线程入口如下图,

直接修改成
push 12345678
call sleep

再次用PCHunter查看War3线程,会发现11xp.dll+579F97线程的切换次数非常少了,并且11xp.dll模块内只有2个线程在运行。

注意,上面修改代码的过程一定要在11xp.dll+579F97线程启动前也就是地图加载蓝条执行完之前。
到此已经完成了目前11平台反作弊系统bypass,之后就可以修改Game.dll代码了。
最后,每次手动修改很麻烦,可以使用CE汇编脚本HOOK 11xp.dll+579F97地址并设置开启快捷键做成CT文件,方便进游戏后及时开启。 CE还支持LUA脚本,可以生成全自动开图的可执行程序。也可以写个C语言小程序,远程写10个字节到War3进程11xp.dll+579F97地址,注意进程提权和call sleep转成机器码。
最后的最后,11xp.dll的版本和平台版本不是同步更新的,11xp.dll采用热更新的方式,每个版本检测线程的起始地址不同,鱼和渔的问题。文中提到的地址在20160505更新的3.2.3.2版本11xp.dll、1.2.6.7版本平台下验证有效。
最后的最后的最后,11xp.dll代码crc校验、心跳检测线程结果和特征码扫描等都是可以服务器动态开启踢线的,如果应用本文中方法仍被检测到作弊说明服务器开启了踢线或追封功能。
净化游戏环境,从我做起!
