全面分析游戏限制多开原理

1,进程隐藏(游戏开启后会遍历所有进程,通过自身的进程数量来判断多开) 现象:游戏只能开2、3个。而不是只能开1个。部分游戏通过探测游戏客户端进程是否已经存在来防止重复打开,如游戏:yingxiongmeiren 破解方法:游戏多开的办法为启动一个游戏客户端后,将该游戏的进程隐藏,只保留一个或多个。 隐藏进程,请用驱动级隐藏进程的工具,HideToolz 进程隐藏工具 (是驱动级隐藏的,32位系统适用) 进程隐藏工具HideToolz V2.2绿色版  下载地址如下所示:(这个很好用,有的进程检测CE模块,我也用这个,然后再把CE的控件标题涂抹掉,其他安全软件就检测不到CE了。。。)

2,窗口标题修改(使用FindWindow API函数来查找自身窗口名来判断多开)- 现象:游戏只能单开1个游戏,部分游戏通过探测游戏客户端的窗口是否已经存在来防止重复打开。 破解方法:游戏多开的办法为将游戏的窗口修改为任意字符。

3,端口隐藏 现象:游戏只能单开1个游戏 部分游戏通过默认打开TCP或者UDP端口监听,开第二个游戏的时候会打开端口失败从而判断游戏是否多开。 游戏多开的方法为此类需要采用netstat –a –n –o 命令查看端口即可实现游戏多开。

4,多个游戏目录(SF上遇到过) 现象:游戏只能单开1个游戏 部分游戏通过独占文件访问来防止重复打开。 游戏多开的方法为复制游戏客户端到另外的文件夹,在另外的文件夹打开即可。

5,多个操作系统账号(仅限XP系统)-这个没遇到过。先无视下,有兴趣可以看看 部分游戏通过限制一个用户只能打开一个游戏来防止重复打开。 游戏多开的方法为在系统账号里面多建立账号,一个游戏使用一个账号。方法如下: 1、打开控制面版→用户帐户→创建一个新帐户→输入新帐户名(下一步)→创建帐户; 2、然后到桌面的游戏快捷图标上右键到[属性] 选[高级] 把里面[以其他用户身份运行]这个选项勾上 开第2个程序的时候记得用你新建的用户进就可以了,省的老去切换用户了。

6,创建互斥体. 这种的话在2011年以前还可以,现在很容易被破解。 现象:游戏只能单开1个游戏,而不是 只能开2个或者3等,比如植物大战僵尸那个单机游、QQ游戏、天龙八部 部分游戏通过互斥对象/信号量/事件等线程同步对象来确定程序是否已经运行。最常用的函数如:CreateMutexA。 1、首先创建一个互斥体,CreateMutex函数,第一个参数可以设置为NULL,第二个参数必须设置为false,第三个参数表示互斥体的名称,这个名称最好有一些特殊标识以防止与其他应用程序冲突,比如程序名+时间。 2、使用GetLastError()函数判断错误信息是否为ERROR_ALREADY_EXISTS,如果是,则表示程序已经启动。 游戏多开的方法有二种,一为发现互斥体,然后关闭互斥体即可实现多开。二为APIHOOK,接收到错误信息时,加重置命令(置错误码=0)即可。QQ游戏,天龙八部最常见的类型

7,内存映射文件(File Mapping) 现象:游戏只能开2个、3个等。而不是只能开1个 部分游戏通过把程序实例信息放到跨进程的内存映射文件中,防止游戏多开。 游戏多开的方法为拦阻该函数(LPK 挂钩、驱动函数挂钩,或者用XT结束掉其句柄),不让它命名内核文件即可实现多开。

8,DLL全局共享变量(也就是有一个共享段的内存,我一般用来做DLL和EXE通信) 现象:游戏只能开2个、3个等。而不是只能开1个 DLL全局共享区在映射到各个进程的地址空间时仅被初始化一次,且是在第一次被windows加载时,所以利用该区数据就能对程序进行多开限制。 游戏多开的方法为DLL劫持让游戏一开始运行就加载你的DLL,再转到原来的dll上就可以实现多开了。 方法2:这个我感觉直接废除他的共享段的内存即可全部清0,用OD可以查看共享段的内存 ,ce也可以,抹掉他的共享段内存上的数据。。。让他永远认为只开了一个游戏。^^

9,使用公共文件 现象:游戏只能单开1个游戏  程序启动时,在一个公共目录(比如C:\或者Temp目录)中创建一个公共文件,并将此文件设置为不共享读写。第二个程序启动时,也打开此文件,如果打开成功,则表示程序未启动过,否则表示程序已经启动。 游戏多开的方法为:手动设置多开,比如:设定文件访问权限,不允许此程序在公共目录创建文件等。

10,Mac地址验证(这个是SF里面常用的,破解方法直接HOOK硬件) 现象:游戏只能开2个、3个等。而不是只能开1个 如果你遇到 只能开2个游戏以上的,而不是只能开1的游戏,就很有可能是这种多开SF里面90%都是这种。登陆服务器时,获取本机mac地址,发送至服务器端,服务端进行mac地址验证,如果mac地址重复登陆,则不允许同服务器进行消息传递。多开游戏的多法为:使用超级兔子等软件修改mac地址实现多开,针对此情况,本人也写了一个修改Mac地址的小工具,大家可以在网站下载。

11,查看网络连接(这个没遇到过。。。。) 获取本机所有网络连接,使用GetTcpTable获取TCP连接,使用GetUdpTable获取UDP连接,检查是否有连接到服务器IP和端口号的连接,如果有,表示程序已经启动,否则程序未启动。需要注意的是,其获取的ip和端口号都是一个DWORD值,并且高低位相反。IP地址可以通过inet_addr函数将字符串形式的IP地址(如“127.0.0.1”)转换为DWORD型的,端口号可以使用以下公式转换:DWORD dwPort = ((nPort & 0xff) << 8) + ((nPort & 0xff00) >> 8); 多开游戏的方法为:挂系统钩子,导致GetTcpTable函数失败实现多开。

 

凡是你遇到   你遇到 只能开开2个、3个等。而不是只能开1个的游戏,就很有可能以下这种情况

1、【 第十,Mac地址验证】    80%的游戏会采用这个

2、【内存映射文件(File Mapping)】 85%的游戏会采用这个

3、【第八,DLL全局共享】 70%的游戏会采用这个

4、【第一,进程隐藏(游戏开启后会遍历所有进程)】 10%的游戏会采用这个

转载于:https://www.cnblogs.com/Open-Source/p/5807622.html

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值