《传奇3怀旧版》手游官网:常见游戏限制多开原理、与解决游戏多开方法
多重开局的限制和常见解决方案
最近看到这篇文章《传奇3怀旧版》手游官网:常见游戏限制多开原理、与解决游戏多开方法,觉得很有意思。
文章从应用层、操作系统、计算机网络等多个维度阐述了常见的限制原理及解决办法,虽然是2013年的老文章,但是其中的很多方法值得思考。
一、进程隐藏
有些游戏是通过检测游戏客户端进程是否已经存在来防止重复打开的,比如游戏:英雄美人
开启多个游戏的方法是启动一个游戏客户端,隐藏游戏进程,只保留一个或多个。
二、修改窗口标题(使用FindWindow API函数)
一些游戏通过检测游戏客户端窗口是否已经存在来防止重复打开。
打开多个游戏的方法是修改游戏窗口为任意一个角色。
三、端口隐藏
有些游戏默认开放TCP或UDP端口监听,当你启动第二个游戏时,端口开放会失败,由此可判断该游戏是否被多次开放。
如果打开多个游戏,需要使用netstat –a –n –o命令检查端口。
四、多个游戏目录
有些游戏通过独占文件访问来防止重复打开。
打开多个游戏的方法是将游戏客户端复制到另一个文件夹,然后在另一个文件夹中打开。
五、多个操作系统账户(仅限XP)
有些游戏通过限制用户只能玩一款游戏来防止重复打开。
开通多个游戏的方法是在系统账号中创建多个账号,每个游戏使用一个账号,方法如下:
1.打开控制面板→用户帐户→创建新帐户→输入新帐户名(下一步)→创建帐户;
2.然后右键点击桌面上的游戏快捷方式图标,选择【属性】,选择【高级】,勾选【以不同用户身份运行】,打开第二个程序时记得使用新建的用户,避免切换用户。
六、互斥锁。
有些游戏会使用互斥对象/信号量/事件等线程同步对象来判断程序是否已经运行,最常用的函数有:CreateMutexA。
1.首先创建一个互斥锁,CreateMutex函数传奇3怀旧版网址是多少,第一个参数可以设置为NULL,第二个参数必须设置为false,第三个参数表示互斥锁的名字。这个名字最好有一些特殊的标识,防止和其他应用程序冲突,比如程序名+时间。
2. 使用GetLastError()函数判断错误信息是否为 ,如果是,则表示程序已经启动。
开启多个游戏有两种方式,一种是找到互斥量然后关闭互斥量来实现开启多个,另一种是APIHOOK,当收到错误信息时,添加重置命令(set error code = 0)。QQ游戏、天龙八部==最常见的类型
七、内存映射文件(File Mapping)
有些游戏通过将程序实例信息放入跨进程的内存映射文件中来防止打开多个游戏。
打开多个游戏的方法是屏蔽该功能,不让其命名内核文件。
八、DLL全局共享
DLL全局共享区域仅在映射到每个进程的地址空间时以及第一次被Windows加载时初始化一次,因此该区域的数据可用于限制程序多次打开。
而打开多个游戏的方法就是劫持DLL,让游戏一开始运行就加载你的DLL,然后再切换到原来的DLL,从而实现多次打开。
九、使用公共文件
当一个程序启动时,会在公共目录(如C:\或者Temp目录)中创建一个公共文件,并将此文件设置为非共享读写。当第二个程序启动时,也会打开此文件。如果打开成功,则表示该程序未启动,否则表示该程序已启动。
开启多个游戏的方法是手动设置多个开启,比如设置文件访问权限,不允许本程序在公共目录下创建文件等。
10. Mac地址验证
登录服务器时,获取本地的MAC地址,发送给服务器,服务器会对该MAC地址进行验证,如果重复使用该MAC地址登录,则不允许与服务器进行消息传输。
开启多个游戏的方法有很多种:使用超级兔子之类的软件修改mac地址来实现开启多个游戏。针对这种情况,我也写了个修改Mac地址的小工具传奇3怀旧版网址是多少,大家可以去网站下载。
11.检查网络连接
获取本机所有网络连接,使用GetTcpTable获取TCP连接,使用GetUdpTable获取UDP连接,检查是否有连接到服务器IP和端口号,如果有则说明程序已经启动传奇3怀旧服,否则程序没有启动。需要注意的是,获取到的IP和端口号都是DWORD值,高低位相反。IP地址可以通过inet_addr函数从字符串IP地址(如“127.0.0.1”)转换为DWORD类型,端口号使用以下公式转换:DWORD dwPort = ((nPort & 0xff) > 8);
开启多个的方法是挂系统hook,导致GetTcpTable函数失败,从而实现多个开启。
有时候防止多重开局的方法不止一种,大部分游戏都会多种方法一起用,防止多重开局,只要大家了解多重开局的原理,灵活运用,并逐一分析排除,基本上多重开局的问题就能解决。
原文链接:
文章为网络采集,不代表本站观点!