type
status
date
slug
summary
tags
category
icon
password

前言

最近学了游戏多开的部分相关知识,有点经验,在这里分享一下。
💡
有看到该文章的小伙伴注意一下,该技术如果用来谋利是违法行为哦,本文章仅供参考。

介绍

首先我们需要了解一下什么是游戏多开,相信看字面意思也能看出是什么意思,就是为了同时启动多个相同的游戏程序。
那多开的用处在哪里呢?对于单机游戏的用处其实不大,如果是gal类的游戏,可能是可以尝试同时多条线的剧情,诸如此类的。但对于联网游戏用处就很大了,特别是对于游戏内的可以通过重复性劳作获得且可以交易的物品。多开游戏配上脚本就可以达到盈利的目的。
而游戏厂商为了防止这种会破坏游戏生态环境的行为,也使用了很多种手段去限制多开。与其相对的就会有人去进行对抗。
本文会介绍一下常用的限制多开的手段和其应对方法,并对其中最常用的方法进行较为详细的解释。

限制多开的常用方法

  1. 使用互斥体:
定义互斥体,在启动时加锁,如果已被锁定则退出。这是最常用的方法。
2. 检测程序进程数量:
通过系统API获取当前程序进程数量,如果超过一定数量则提示异常并退出。这可以防止玩家打开多个游戏客户端。
3. 检测程序窗口数量:
通过系统API获取当前程序窗口数量,如果超过一定数量则提示异常并退出。这也可以达到限制多开的目的。
4. 使用独占设备:
在游戏启动时锁定某个设备,如果设备已被锁定则提示异常并退出。常见的设备有声卡、输入设备等。这可以防止同一设备被多个游戏实例使用。
5. 使用独占端口:
在游戏启动时绑定某个网络端口,如果端口已被使用则提示异常并退出。这可以防止多个游戏实例使用同一端口而导致异常。
6. 使用硬件ID绑定:
记录硬件设备的ID(如CPUID),如果检测到ID与记录不符则提示异常并退出。这可以防止游戏被安装在多个不同设备上使用。
7. 检测路径具有唯一性:
在安装过程中记录游戏安装路径,如果检测到路径已存在则提示异常并退出。这可以防止同一游戏被安装在多个路径下使用。
8. 在线验证:
每次启动游戏时向服务器验证用户信息,如果同一用户出现二次验证则提示异常并退出。这需要游戏进行在线验证,可以较好防止多开作弊。
9. 内存映射检测:
在游戏启动时创建匿名内存映射文件,如果文件已存在则提示异常并退出。这可以通过检测同名内存映射文件来判断游戏是否已启动。

绕过方法

1. 互斥体:修改创建互斥体成功与否的返回值,或者修改或隐藏互斥体的名称。
2. 进程/窗口数量:使用API模拟进程/窗口关闭来欺骗检测。或绕过API的数量检测。
3. 设备/端口:模拟释放设备/端口来绕过检测。或修改游戏代码跳过对设备/端口的检查。
4. 硬件ID:修改系统文件或游戏内存来欺骗硬件ID检测。
5. 安装路径:安装游戏至不同路径来绕过路径检测。或修改游戏内存绕过路径检查。
6. 在线验证:使用外挂或修改游戏内存来绕过在线验证。或进行去除验证的破解。
7. 内存映射:修改系统文件或者游戏内存来删除内存映射创建过程,绕过检测。
这里详细介绍一下最常用的通过互斥体来限制多开的技术和绕开限制的方法

具体介绍

限制多开

互斥体限制多开其实就是利用CreateMutex函数和GetLastError函数来实现的。
具体原理就是当启动了一个游戏进程的时候,同时也会创建一个互斥体。当我们再想去启动一个相同游戏的新进程的时候,该进程在创建互斥体的时候会检查内存中已创建的互斥体的句柄(一般句柄就是游戏名称加个Mutex),如果发现句柄一样就会创建失败,然后GetLastError函数会获取到错误码,如果错误码是183就会去唤醒原进程。

绕开限制

知道了限制的关键点,其实绕开的方法也就一目了然了。
第一种方法就是通过更改互斥体的句柄或者将已经创建的互斥体隐藏来绕开对互斥体的检测。
第二种方法就是去修改错误码。这种方法有很多种切入点可以实现,也就是修改点的不同。首先可以直接去修改CreateMutex函数的返回值来间接修改错误,还有CreateMutex的返回值被CreateMutant函数的返回值影响,也可以通过修改CreateMutant的返回值来影响CreateMutex的返回值,再来影响错误码。最后一种就是最简单粗暴的,直接修改GetLastError函数的返回值。如果只是想单纯手动多开的话,也可以直接去去动调修改比较是否等于183的汇编语句的ZF标志位,也可以实现多开。

结论

分享到此为止,最后再提示一下,小伙伴们大家自己私下试试就好,不要违法哦
雷电模拟器4Xposed环境搭建关于建站的一点经验

xanian
xanian
一个想过上理想生活的普通人
公告
type
status
date
slug
summary
tags
category
icon
password
这里是xanian的个人blog,会更新一些技术文章和随手小记,有技术问题,欢迎评论区留言一起交流。