石器时代是我第一款接触的网游,最近实在有点没事干所以去找了SF玩。
随便搜索了下发现有在百度推广的SF,特色就是支持手机端果断就选择了这个,也就是我现在也在玩的515SA。
下载PC客户端后发现竟然只能双开.....这让我这类喜欢5开挂一队的玩家来说无法接受。
而且无法使用传统的SACH,STW外挂,也就是所谓的无挂服。
分析发现客户端用的是VM壳,无法在虚拟机下运行,你本机如果安装了sandbox之类的有服务在运行客户端也会打不开。
我所知道的游戏防止多开的技术也就那几种。。。
1:检测进程名,并获取路径进行对比
2:检测互斥体
3:检测窗口类名,窗口名
作为业余c#程序猿的我,立刻打开VS,写了一个小程序把客户端看着像用来检测多开
的515sa ,CheckForUpdate 互斥体通过复制句柄并关闭源句柄的方式和谐掉(Mutant),并且修改了窗口标题。
接着我就打开第三个客户端.......没想到结果还是不行!
靠...这是什么鬼
随便找了款行为监控软件发现第一个客户端打开的时候会在%temp%目录下建立twston0与wincder.log文件,第二个客户端会建立twston1文件。
twston0与twston1文件都是直接由客户端占用着。
那么检测多开的方法已经大概清楚了。
检测方法:检测%temp%目录下twston0与twston1文件是否可写来判断开了几个客户端,如果可写则建立,不可写尾号+1
绕过方法1:360直接强制删除文件即可。也可以用上述提到的复制句柄并关闭源句柄的方式和谐掉(File)
绕过方法2:用其他用户运行客户端即可(Shift+鼠标右键 -> 以其他用户身份运行 ,这个方法很和谐,因为每个用户的%temp%目录是独立的)
当我以为一切就绪的时候发现还是不能,我直接复制客户端到其他目录试了一下,成了!
原来客户端还检测当前目录下运行了几个515sa.exe 如果超过2个则不运行。
到此为止第一个版本的防止多开已经成功绕过,大概挂了几周后出现了新的变化!
他们可能发现了我在多开或者有挺多人在多开的,这次在服务端进行了限制。
新的多开限制表现为:同一个局域网下,用多台电脑开多个客户端不会被服务端自动断开连接。
但是如果你是一台电脑开了超过4个客户端,服务端那边会自动断开你最后连接的2个并且在屏幕上打出提示。
他到底是如何抓到我多开的呢,又如何分辨局域网内的多个设备的呢?
我们在下一篇博文内继续讲述!