游戏多开的分析与实现

news2024/11/28 6:46:50

大部分游戏为了防止工作室通过多开游戏牟利,都会采取各种手段来防止游戏被多次打开。检测窗口标题,创建互斥体,创建内存映射这些都是防止游戏多开的常用手段。
主要内容
游戏运行后,无非执行两步操作

  • 若已经存在,退出游戏
    检测是否存在已经启动的游戏---- 或
  • 若不存在,正常运行

在很多情况下,我们并不知道游戏采用的是什么手段来防止多开,这个时候我们可以通过游戏的这两步操作来找到游戏检测的代码,通过修改该代码来实现多开。
就拿龙之谷的单机版作为本文的例子。
先打开一个游戏,再运行一个游戏
在这里插入图片描述

然后发现第二次打开的游戏自动结束了进程。
把游戏文件拖入OD,下退出断点后,运行游戏
在这里插入图片描述
断下后往上返回
在这里插入图片描述
来到游戏调用退出的地方
在这里插入图片描述
00893CBE是游戏结束的CALL,我们发现无论上面的跳转是跳还是不跳都会执行退出CALL,

所以如果游戏要正常运行就不会运行到这段代码,我们试着往上找,看看有没有跳转跳过这段代码,一直往上,来到段首
在这里插入图片描述
发现游戏调用了GetStartupInfo 这是个获取启动信息的API

也就是说游戏启动后会运行到这里的代码,因为后面有游戏退出的CALL,且没有跳过这个CALL的跳转,所以我们可以了解到游戏运行的过程
在这里插入图片描述
因此,我们在段首下断,找到游戏运行call,进到call里找到检测多开的部分就可以实现多开。

段首下断,重载文件后运行
在这里插入图片描述
断下后,我们先关闭第一次打开的游戏,让游戏正常走,从而找到正常运行的CALL

F8往下走。
在这里插入图片描述
来到这个位置,我们发现游戏跑起来了,F7进入call,往下翻就可以看到游戏创建互斥体的过程
在这里插入图片描述
创建互斥体后下面有个跳转,若eax=0xB7 跳转不执行然后JMP
在这里插入图片描述
这个jmp是跳到CALL的末尾的,从前面过程可知,出了这个CALL就是程序退出了,所以我们必须要让这个JNZ跳转,把jnz改成jmp后保存

然后先开启一个游戏,在开启一个游戏
在这里插入图片描述
这时候我们就实现游戏多开了。

小结0x2:

本文主要讲述了对于一般游戏实现多开的通用方法,不同游戏可能会遇到不同的问题,需要结合具体情况进行分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331565.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【问题代码】顺序点的深入理解(汇编剖析+手画图解)

这好像是一个哲学问题。 目录 前言 一、顺序点是什么? 二、发生有关顺序点的问题代码 vs中: gcc中: 三、细读汇编 1.vs汇编如下(示例): 2.gcc汇编如下(示例): 四…

R语言raster包遍历多个文件夹并批量计算每一个文件夹下全部遥感影像的平均值

本文介绍基于R语言中的raster包,遍历读取多个文件夹下的多张栅格遥感影像,分别批量对每一个文件夹中的多个栅格图像计算平均值,并将所得各个结果栅格分别加以保存的方法。 其中,本文是用R语言来进行操作的;如果希望基于…

每天10个前端小知识 【Day 9】

前端面试基础知识题 1. bind、call、apply 有什么区别?如何实现一个bind? apply、call、bind三者的区别在于: 三者都可以改变函数的this对象指向三者第一个参数都是this要指向的对象,如果如果没有这个参数或参数为undefined或null&#x…

智能硬件的工作原理与发展定位

一、硬件概述 智能硬件是以平台性底层软硬件为基础,以智能传感互联、人机交互、新型显示及大数据处理等新一代信息技术为特征,以新设计、新材料、新工艺硬件为载体的新型智能终端产品及服务。 与传统硬件相比,智能硬件相比传统硬件&#xf…

【LeetCode每日一题】【2023/2/9】1797. 设计一个验证系统

文章目录1797. 设计一个验证系统方法1:哈希表代码总体1797. 设计一个验证系统 LeetCode: 1797. 设计一个验证系统 中等\color{#FFB800}{中等}中等 你需要设计一个包含验证码的验证系统。每一次验证中,用户会收到一个新的验证码,这个验证码在…

java 线程池

线程池概念 线程池可以看做是一个池子,在这个池子中存储了很多线程,线程池也可以说是一个复用线程的技术。 线程池存在的意义 系统创建一个线程的成本是比较高的,因为它涉及到与操作系统交互,当程序中需要创建大量生存期很短暂的线…

ChatGPT edge/chrome浏览器离线安装

最近chatgpt又热了起来,数据显示很多朋友过来下载浏览器插件,由于大家无法直接访问谷歌应用市场,因此提供一个离线安装的方式。 火热程度 对于大多资本与巨头来说,入局ChatGPT赛道,看中的无疑是ChatGPT概念背后的…

【自学Docker】Docker push命令

大纲 Docker push命令 docker push命令教程 docker push 命令用于将本地的 Docker镜像 上传到 Docker镜像仓库。 docker push命令使用之前需要要先登陆到镜像仓库。docker push命令推送镜像的规范是:注册用户名/镜像名。 docker push命令语法 haicoder(www.hai…

矩阵理论复习(十一)

正交投影矩阵的应用 值域与零空间 证明向量二范数 如何由已知范数构造新的范数 椭圆范数 向量范数的分析性质 向量范数的等价性 在无限维线性空间中,两个向量范数可以是不等价的。 等价性的重要意义:处理向量问题时,可以基于一种范…

ASO优化之如何进行榜单优化

ASO优化有:搜索优化,榜单优化,转化率优化。今天我们主要来讲讲苹果应用商店的榜单优化。 榜单优化的核心内容就是提高应用商城的排名,把我们的APP提升到显眼的位置,增加曝光率,提升APP的下载量。 那我们具…

easyx的基本使用(万字解析)

easyx的基本使用一.基本框架1.创建文件2.创建窗体-initgraph,closegraph,getchar二.简单的绘制1.圆形-circle2.坐标系统-setorigin,setaspectratio三.简单图形1.绘制点-putpixel2.简单的直线-line3.矩形-rectangle4.椭圆-ellipse5.圆角矩形-roundrect6.扇形-pie7.圆弧-arc四.多…

目标检测回归损失函数 IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU损失函数分析

目标检测回归损失函数 IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU损失函数分析 一、IOU Loss 2016文章《UnitBox: An Advanced Object Detection Network》中提出了IOU Loss将4个点构成的box看成一个整体做回归。 函数特性 IOU Loss的定义是先求出预测框和真实框…

UML的分类

一、UML2.0的正式图型 UML标准术语:UML标准术语_pingcode的博客-CSDN博客 英文名中文术语目的联系Class Diagram类图类、特征与关系UML1.x中有Component Diagram构件图构件的结构和连接UML1.x中有Composite Structure Diagram组合结构图类的运行时刻分解UML2.0的新…

前端——http的三次握手四次挥手

首先要知道在客户端与服务器端进行一个 http 请求的发送和返回的过程当中,我们需要创建一个 TCP 连接(TCP connection);因为 http 只存在请求和响应,不存在连接这个概念的;请求和响应都是数据包&#xff0c…

牛客网 HJ56 完全数计算

前言:内容包括四大模块:题目,代码实现,大致思路,代码解读 题目: 描述 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。 它所有的真因子…

sed和awk

文章目录1、sed的简单介绍2、sed的使用方法2.1 命令行格式2.2 案例2.3 sed结合正则使用2.4 脚本格式3、awk的简单介绍4、awk的使用方法4.1 命令行模式4.2 脚本模式5、awk内部相关变量5.1 案例6、awk工作原理7、awk进阶使用8、awk脚本编程8.1 案例1、sed的简单介绍 sed是流编辑…

【计算机网络】Linux环境中的网络套接字编程

文章目录前言一、预备知识理解源IP地址和目的IP地址认识端口号认识UDP协议和TCP协议了解网络字节序二、socket 套接字socket 常见APIsockaddr 和 sockaddr_in三、UDP Socket编程封装UdpSocket实现UDP通用服务器实现英译汉服务器实现UDP通用客户端实现英译汉客户端四、地址转换函…

一文详解Yolov5——基于Yolov5的火灾检测系统

✨原创不易,还希望各位大佬支持一下\textcolor{blue}{原创不易,还希望各位大佬支持一下}原创不易,还希望各位大佬支持一下 👍 点赞,你的认可是我创作的动力!\textcolor{green}{点赞,你的认可是…

SAP ERP系统实施隐式增强中“声明“和“代码“的区别和用途介绍

SAP ERP系统在实施隐式增强的时候会跳出一个增强模式选择“声明”或者“代码”,这步骤应该如何选择对于刚接触这类增强的开发人员通常会感到疑惑,不知道应该选择哪个(如下图)。 点击“信息”可以看到官方的英文的解释如下: 这两个选项有什…

通达信收费接口查询可申购新股c++源码分享

有很多股民在做股票交易时为了实现盈利会借助第三三方炒股工具帮助自己&#xff0c;那么通达信收费接口就是人们常用到的&#xff0c;今天小编来分享一下通达信收费接口查询可申购新股c源码&#xff1a; std::cout << " 查询可申购新股: category 12 \n"; c…