98.游戏的启动与多开-分析与实现多开器

news2024/9/21 16:39:05

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

内容参考于:易道云信息技术研究院

上一个内容:97.游戏的启动与多开-共享内存多开检测

以 97.游戏的启动与多开-共享内存多开检测 它的代码为基础进行修改

效果图:

检测的算法:信号量、互斥量、进程枚举、窗口检测、共享内存等方式

检测一个游戏使用的什么多开检测算法可以把 信号量、互斥量、进程枚举、窗口检测、共享内存等方式 用到的函数全部HOOK掉然后把它注入到游戏进程中,这样可以得到游戏是用了什么方式实现的检测多开。

然后一个程序正常启动之后会进入Windows的消息循环,一个有检测多开的程序会结束消息循环,然后从程序启动到结束这中间执行的 信号量、互斥量、进程枚举、窗口检测、共享内存等方式把它们hook之后就可以知道具体使用的是信号量还是互斥量等检测检测多开的了。

进入消息循环会很大几率调用下图中的函数,逆向分析的话可以从下图的代码入手,检测多开一定会在它之前,这种方式叫倒着往上推

使用启动的方式分析剑侠情缘的多开检测:

首先打开一个剑侠情缘

然后再使用 Ollydbg.exe打开一个剑侠情缘,这个剑侠情缘是打不开的,因为上面打开过了,这里是为了跟踪它退出的代码,然后使用打开的方式运行剑侠情缘

打开之后会自动在入口点断点主

然后把所有的CALL都打上断点看看游戏是从哪个函数里结束的

然后它会从下图红框位置的函数中结束

然后进入跟踪,下图 0042C543 位置的代码是DS:[&KERNEL32.ExitProcess]这样的写法,这种写法是指针调用函数的表现形式,也就是 ExitProcess 在编译的时候是不知道它的内存地址是什么的,它的内存地址只有Windows操作系统知道,当程序运行时Windows操作系统会给它填充上

下图位置有一个有意思的写法,push edi push 1 pop edi,如果把pop edi写到别的地方可以进行迷惑敌人达到防御的效果

然后它会执行到下图红框位置调用 ExitProcess函数退出程序,然后把所有的剑侠情缘进程关闭,使用Ollydbg.exe跟一次不会被多开退出的情况

然后发现它会从下图红框位置无法退出,然后程序也正常运行了,也就是进入了Windows的消息循环

然后点关闭的时候又会来到下图位置的函数中

然后跟随一下进入消息循环的函数,可以看到它来到了之前分析命令行的函数中

然后一路f8就会看到下图红框位置的代码,这里很明显剑侠情缘使用的是窗口检测的方式,然后如果把409334位置改成EB也就是jmp指令那么就可以破解它的多开了

实现代码:有两种方式通过cheater项目的回调函数和通过dlls项目的dll

cheater项目的回调函数的方式实现

void _llback(LPPROCESS_INFORMATION lpi) {
    char data[]{ 0xEB };
    WriteProcessMemory(lpi->hProcess, (LPVOID)0x409334, data, sizeof(data), 0);
}

void ChtdExeDlg::OnBnClickedOk()
{
    /**
     InjectByWndHook函数是窗口注入:
      Sword2 Window是从Spy++里得到,这是窗口的名字(标题)
      Sword2 Class是从Spy++里得到,这时窗口的类
      dlls.dll是dlls项目中编译出来的dll文件
    */
    //htd::INJECT::InjectByWndHook(L"Sword2 Window", L"Sword2 Class",L"dlls.dll");

    /**
    * InjectByEntry函数是入口点注入
    *    第一个参数是游戏可执行文件的目录
    *    第二个是游戏目录
    *    第三个是启动游戏的命令行参数
    *    第四个是外挂模块的目录
    */
    htd::INJECT::InjectByEntry(txtPath,
        txtAppPath,
        L"",
        txtDllPath, _llback);


    // TODO: 在此添加控件通知处理程序代码
    //CDialogEx::OnOK();
    /*htd::INJECT::InjectByEntry(L"F:\\Games\\JX2\\Sword2WindowsA7.exe",
        L"F:\\Games\\JX2\\", 
        L"", 
        L"F:\\Program Design\\课程代码\\htd\\Release\\htdMfcDll.dll");
    */

    //htd::INJECT::InjectByWndHook(L"Sword2 Window",L"Sword2 Class",L"F:\\Program Design\\课程代码\\htd\\Release\\htdMfcDll.dll");
}

dlls项目的方式实现

    DWORD dOld;
    VirtualProtect((LPVOID)0x409334, 1, PAGE_EXECUTE_READWRITE, &dOld);
    char* data = (char*)0x409334;
    data[0] = 0xEB;

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

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

相关文章

若依框架开发

若依环境 介绍 ‌若依是一款快速开发平台(低代码),用于快速构建企业级后台管理系统,它提供了许多常用的功能模块和组件,包括权限管理、代码生成、工作流、消息中心等 官方地址: https://www.ruoyi.vip/ ‌基于Spring Boot和Spring Cloud‌…

vscode配置C/C++环境(保姆级详细教程)

一. 引言 VSCode,全称为Visual Studio Code,是一款由微软开发的免费、开源的轻量级代码编辑器,它支持多种编程语言和平台,并提供丰富的扩展功能,让开发者能够更高效地编写代码。 大家能来搜用如何在VSCode配置C/C环境…

Linxu系统:kill命令

1、命令详解: kill命令是用于向进程发送信号,通常用来终止某个指定PID服务进程,kill命令可以发送不同的信号给目标进程,来实现不同的操作,如果不指定信号,默认会发送 TERM 信号(15)&…

1. 初识LLM API:环境配置与多轮对话演示

其实AI应用并不是一个什么很高大上的东西,你可以将它当作一个文字的“调库”行为,“调库”只需要知道库名就行了,这里实际也是如此。甚至你只需要知道你想问什么,将你的消息作为输入,就能从大模型得到输出。而这个“库…

CSS学习17--CSS3 过渡、2D变形、3D变形、动画

CSS3 过渡、2D变形、3D变形、动画 一、过渡二、2D变形 transform1.移动 translate2.缩放 scale3. 旋转 rotate4. 倾斜 skew 三、3D变形1. rotateX()rotateY() rotateZ()2. 体会透视 perspective3. translat…

直播电商系统卷轴模式源码开发的发展前景

随着互联网技术的飞速发展和直播电商的日益兴起,直播电商系统已成为数字经济的重要组成部分。其中,卷轴模式作为一种结合了积分奖励和任务兑换机制的商业模式,正逐渐在直播电商领域崭露头角,并展现出广阔的发展前景。本文将从卷轴…

【腾讯云】AI驱动的数据库TDSQL-C如何是从0到1体验电商可视化分析小助手得统计功能,一句话就能输出目标统计图

欢迎来到《小5讲堂》 这是《腾讯云》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景效果图流程图创建数据库基本信息数据库配置设置密码控制台开启…

学工控必须知道的变频器字母符号

#变频器##变频器故障##伺服电机##电工##电工#工控人加入PLC工业自动化精英社群 工控人加入PLC工业自动化精英社群

windows软件应该安装在哪里

100%原创动力 文章目录 前言一、安装路径二、数据文件夹1.用户文件夹2.AppData 三、为什么需要管理员权限四、绿色软件 前言 windows软件应该安装在哪里 一、安装路径 windows系统安装软件应该安装在哪里,根据windows规范应该安装在某个盘的 Program Files 目录…

ICP备案办理的流程中股东附件不显示如何解决

ICP备案办理的流程中股东附件不显示如何解决 问题解决方案注意吐槽 问题 问题弹窗: 部分一级股东没有上传证照附件,请检查并上传。 问题内容: 在【股东追溯及其相关证明材料】这一页中无法保存,提示要上传证照附件,但这边找不到任…

dwg2text抽取dwg文件文字不完整分析

libdxfrw项目中dxf2text命令可以抽取dwg文件中的文字部分,编译完工程后对手头上的dwg文件提取时发现抽取不完整,对源码进行分析时发现该命令只处理了text部分,不处理mtext部分 bool dx_iface::printText(const std::string& fileI, dx_da…

Cross-Encoder实现文本匹配(重排序模型)

引言 前面几篇文章都是基于表示型的方法训练BERT进行文本匹配,而本文是以交互型的方法。具体来说,将待匹配的两个句子拼接成一个输入喂给BERT模型,最后让其输出一个相似性得分。 文本匹配系列文章先更新到此,目前为止都是基于监督…

AI大模型行业专题报告:大模型发展迈入爆发期,开启AI新纪元

大规模语言模型(Large Language Models,LLM)泛指具有超大规模参数或者经过超大规模数据训练所得到的语言模型。与传统语言模型相比,大语言模型的构建过程涉及到更为复杂的训练方法,进而展现出了强大的自然语言理解能力…

网络药理学:1、文章基本思路、推荐参考文献、推荐视频

文章基本思路 选择一味中药或者中药复方(常见的都是选择一味中药,如:大黄、银柴胡等),同时选择一个要研究的疾病(如食管癌等)获得中药的主要化学成分或者说活性成分(有时候也以化合…

一款专为网络专业人士设计的多功能扫描工具,支持主机存活探测、端口扫描、服务爆破、漏洞扫描等功能

前言 在网络维护和安全检测中,有效的工具对于提高-效率至关重要。传统的网络扫描工具往往功能单一,需要多个工具配合使用,这不仅增加了工作的复杂度,还可能因为工具间的兼容性问题导致工作效率下降。面对这样的挑战,我…

深度解析 | 二元Logistic回归模型(单因素筛查、软件操作及结果解读)

一、Logistic回归的类型 Logistic回归(又称逻辑回归)是一种广义的线性回归分析模型,用于研究分类型因变量与自变量之间影响关系。Logistic回归分析根据因变量的不同可分为二元Logistic回归、多分类Logistic回归,有序Logistic回归…

大牛直播SDK最经典的一句

搜索引擎搜大牛直播SDK,居然提示我搜“大牛直播SDK最经典的一句”,闲来无事,点开看看,AI智能问答,给出了答案: ‌大牛直播SDK最经典的一句是:"我们只做最擅长的部分,我们不做的,提供对接接…

《向量数据库指南》——解锁AI新篇章:高效处理非结构化数据的五大策略

在探讨如何有效处理非结构化数据这一AI发展的核心挑战时,我们首先需要深入理解非结构化数据的本质特性及其带来的技术难题,进而探讨当前技术生态中的不足与机遇,并提出一系列专业且可操作的解决方案。 非结构化数据的四大挑战 1. 数量庞大: 非结构化数据,如文本、图像、…

图为科技基于昇腾AI,打造智慧工厂检测解决方案

中国作为全球制造业的翘楚,在工业领域成就斐然。因工业生产的特殊环境与工艺要求,面临着高温、高压、易燃易爆等多重高危因素。 其生产装置通常大型化且密集,生产工艺复杂,生产过程紧密耦合。在这样的背景下,围绕“人…

springboot汽车租赁系统-计算机毕业设计源码65876

目录 第 1 章 引 言 1.1 选题背景 1.2 研究现状 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析 2.3 系统性需求分析 …