这篇文章是写给一部分还在研究如何卡同房N开,N开开始游戏的作者参考用的
现在PP的可同房同时进游戏的卡N开也就掌握在少数作者手里,今天闲着没事我也写篇文章交流下
文章我会主要提及自动卡N开脚本的写法,如何修复N开补丁不能同房,如何修复N开补丁不能开始游戏这三部分
首先是同房,下面是一段脸蛋N开的开源的截图

根据这段源码,我们可以知道PP是通过GetAdaptersInfo来获取我们当前的IP判断是否多开同房间的
这代码里面作者为了严谨,判断了几次调用点,如果不是游戏侦测的调用,就不随机IP
这里是因为特征码变化了,所以没办法执行到下面,有一个最简单的办法就是把调用点判断全部取消,让补丁无论啥时候调用都随机IP
其次是开始游戏的侦测,因为pp在开始游戏的时候需要互斥体,所以我们在PP登录之后要重新CreateMutex

最后是卡N开的脚本,肯定很多人在卡多开的时候都会根据XignCode3加载的那个进度条的位置来判断时机的
我们的程序也是一样可以的,唯一有点问题的也就是那个窗体的title和ClassName都是随机的
所以要解决这个问题,我觉得最简单的办法就是HOOK CreateWindow来获取我们需要的窗口名
判断也很简单,可以通过ClassName的长度再配合窗体的一些特征来做过滤,比如创建时候的X Y坐标或者长宽都是可以的
还有一种暴力的办法就是排除掉我们不需要的窗口,剩下的就可以得到我们要的窗口的窗口句柄了
剩下的就是用代码来判断进度条的位置了,这个取色就可以实现了,没啥难度
这部分的源码我也不贴出来了,我记得我开源过一部分的,我电脑上是没保存了,有兴趣的可以自己搜下,用不上的东西放在电脑里看着乱
最后忘了说了,有一些版本的PP多开的开源是不能卡N开的,FindWindow一定要勾住,不然的话上一个游戏会被结束
[ 此帖被每当我闭上眼在2016-03-31 17:29重新编辑 ]