13.优化界面化的游戏辅助

news2025/1/22 17:45:45

12.使用mfc实现游戏辅助的界面 在它的代码上进行修改

12.使用mfc实现游戏辅助的界面它的代码是频繁读写游戏的内存,这样不是很好,下面的代码是在它的基础上进行了封装,控制无敌的逻辑在我们申请的内存中实现(也就是在一个全局中实现)

实现无敌的代码:26F0019位置就是用来控制是否无敌的

修改后游戏中跳转的位置

修改后的代码:data进行了修改,在GaameCracker.h文件中新加int类型叫wuDiAdr变量(用来存放26F0019位置cmp后面的哪个地址)

int GaameCracker::OpenGame(DWORD pid)
{
    hProcecss = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
    if (hProcecss) {
        LPVOID 在其它进程开辟的空间 = VirtualAllocEx(hProcecss, NULL, 0x1000, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);

        if (在其它进程开辟的空间) {

            char data[]{ 0x81,0xFE, // cmp esi
             0x00,0x00,0x00,0x00, // 角色的this
             0x75, 0x02, // jne 跳两个字节
             0x31,0xFF, // xor edi, edi
             0x8B,0xD0, // mov eax, eax
             0x29,0xFA, // sub edx, edi
             0x39,0xCA,// cmp edx, ecx
             0xE9,// jmp
             0x00,0x00,0x00,0x00, // 返回地址
             0x00,0x00,0x00,0x00, // 存储用来判断是否无敌的值
             0x83,0x3D, // cmp
             0x00,0x00,0x00,0x00, // 存储用来判断是否无敌值的内存地址
             0x00,
             0x75,0xDE,
             0xEB,0xE6
            };
            int jmpReturnDiZhi = 0x41FD67 - ((int)在其它进程开辟的空间 + 0x10) - 0x5;
            // 用来存放不确定的内存地址的值比如,角色的this值,返回地址
            int* nCode = (int*)(data + 0x11);
            nCode[0] = jmpReturnDiZhi;
            nCode = (int*)(data + 0x2);
            nCode[0] = 0x4CEF08;

            wuDiAdr = (int)在其它进程开辟的空间 + 0x15;
            nCode = (int*)(data + 0x1B);
            // 存储用来判断是否无敌值的内存地址 赋值
            nCode[0] = wuDiAdr;

            // 把实现无敌的代码写入内存
            WriteProcessMemory(hProcecss, 在其它进程开辟的空间, data, sizeof(data), NULL);

            
            // 实现外挂逻辑代码中的返回我们修改了的游戏地址
            jmpReturnDiZhi = ((int)在其它进程开辟的空间+0x19) - 0x41FD61 - 0x5;
            nCode = (int*)(E9Code + 0x1);
            nCode[0] = jmpReturnDiZhi;

            // 跳转到实现无敌代码
            DWORD dPro = 0;
            VirtualProtectEx(hProcecss, (LPVOID)0x41FD61, 0x6, PAGE_EXECUTE_READWRITE, &dPro);
            // ReadProcessMemory(hProcecss, (LPVOID)0x41FD61, oldE9, 0x6, NULL);
            WriteProcessMemory(hProcecss, (LPVOID)0x41FD61, E9Code, sizeof(E9Code), NULL);

            // 实现秒杀
            VirtualProtectEx(hProcecss, (LPVOID)0x41FD86, 4, PAGE_EXECUTE_READWRITE, &dPro);
            // WriteProcessMemory(hProcecss, (LPVOID)0x41FD86, miaoSha, 0x4, NULL);
            ReadProcessMemory(hProcecss, (LPVOID)0x41FD86, lodMiaoSha, 0x4, NULL);
            return OPEN_OK;

        }
        else {
            return ALLOC_MEMOPRY; // 分配内存失败
        }

    }
    return OPEN_PROCESS_FAILE; // 打开进程失败
}

无敌复选框的代码改为:

mCracker.setWuDi(B_WuDi);

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

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

相关文章

连锁收银系统的五大功能 会员营销是核心

连锁企业的收银系统是其经营管理的关键工具之一,具备多种功能可以帮助企业提高效率、优化服务并实现会员营销。以下是连锁收银系统的五大功能,其中会员营销作为核心功能将在最后详细讨论。 首先,收银系统应具备高效的销售管理功能。这包括商品…

为了新来的扫地机器人,我差点把自家狗子给扔了

文 | 螳螂观察 作者 | 凯乐 作为一个大龄未婚男青年,我承认,我很懒。 有多懒?就连用来偷懒的扫地机器人我也一直懒得去买。 要不是朋友实在看不下去,在前不久生日时送了我一台二手扫地机器人(没错,是他…

重发布——重分布——重分发

作用: 在两种路由协议间,或者同种协议的不同进程间;构建一台ASBR,同时工作在两种协议或两个进程中,学习到两端所有的路由条目后,进行路由共享,实现全网可达; 条件: 1、必须存在ASBR--ASBR自治系统边界路…

tinycudann安装

在安装完torch等 直接运行下面的指令会出现错误 pip install githttps://github.com/NVlabs/tiny-cuda-nn/#subdirectorybindings/torch大部分错误是下面的 大概看了一下都是因为虚拟环境里面的include文件下缺少文件,将之前的一些.h文件全部复制过来在执行上面的…

基础—SQL—DQL(数据查询语言)分组查询

一、引言 分组查询的关键字是:GROUP BY。 二、DQL—分组查询 1、语法 SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ]; 注意: 1、[ ] 里的内容可以有可以没有。 2、这条SQL语句有两块指定条件的地方&#…

Playwright 自动化操作

之前有见同事用过playwright进行浏览器模拟操作,但是没有仔细了解,今天去详细看了下,发现playwright着实比selenium牛逼多了 Playwright 相对于selenium优点 1、自动下载chromnium, 无需担心chrome升级对应版本问题; 2、支持录屏操…

【UE5.1 角色练习】09-物体抬升、抛出技能 - part1

前言 在上一篇(【UE5.1 角色练习】08-传送技能)的基础上继续实现控制物体抬升、抛出的功能。 效果 步骤 一、准备技能动画 1. 在项目设置中新建一个操作映射,这里命名为“Skill_GravityControl”,用按键4触发 2. 通过IK重定向…

【UE5:CesiumForUnreal】——加载无高度地形数据

目录 1.实现目的 2.数据准备 2.1下载数据 2.2 数据切片 3.加载无地形数据 1.实现目的 在CesiumForUnreal插件中,我们加载地图和地形图层之后,默认都是加载的带有高程信息的地形数据,在实际的项目和开发中,有时候我们需要加载无…

使用QtCreator C++编写串口调试助手

100编程书屋_孔夫子旧书网 1.首先看一下我设计的界面(我这里比较简单,大家可根据自己的需求进行设计) (界面设计的过程中,每一个控件的名称最好进行修改,便于后续控件太多不好区分,给控件命名的…

《中国科技纵横》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答: 问:《中国科技纵横》期刊是核心吗? 答:不是,是万方维普收录的正规期刊。 问:《中国科技纵横》知网收录吗? 答:知网不收录,万方维普收录。主管单位&#xf…

leetcode及牛客网二叉树相关题、单值二叉树、相同的树、二叉树的前序、中序、后序遍历、另一棵树的子树、二叉树的遍历等的介绍

文章目录 前言一、单值二叉树二、相同的树三、二叉树的前序遍历四、二叉树的中序遍历五、二叉树的后序遍历六、另一棵树的子树七、二叉树的遍历总结 前言 leetcode及牛客网二叉树相关题、单值二叉树、相同的树、二叉树的前序、中序、后序遍历、另一棵树的子树、二叉树的遍历等…

21 厂商考证介绍(华为 华三 锐键 深信服)+AI 解析

一 认识考证体系 二 明确考证的大致方向 锐键 职业资格证书等级介绍 职业资格证书是由国家职业资格鉴定机构或相关行业主管部门颁发的,用于证明一个人在特定职业领域具备一定技能和知识水平的证明文件。职业资格证书的等级分为初级、中级、高级、技师、高级技师、…

一个HL7的模拟工具

这个模拟器是为了过( NIST美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)的电子病历住院部分的认证而写的。 用途说明 inpatient中的lab order信息通过该工具向实验室转发该信息。并将实验室…

算法(二)二分查找

文章目录 二分查找简介实现方式循环方式递归方式 经典例子 二分查找简介 二分查找(binary search)算法,也叫折半算法。二分查找是针对有序的数据集合的查找办法,如果是无序的数据结合就使用遍历。二分查找之所以快速,…

MATLAB的plot3使用技巧|更改视角|例程分享链接

plot3命令 MATLAB的plot3函数是用来绘制3D图形的函数。它可以将三维数据可视化为线段、点、曲线等形式。plot3函数可以用于绘制三维空间中的曲线、曲面、散点图等。 plot3函数的基本用法是: plot3(X,Y,Z):绘制三维线段,其中X、Y、Z分别是包…

使用C#实现VS窗体应用——画图板

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。🍎个人主页:Meteors.的博客💞当前专栏:小项目✨特色专栏: 知识分享&#x1f96d…

FinalShell无法连接Linux

Linux使用Vmware会创建一个网络,让两个子网处于一个网关,这样就能在windows中连接Linux,只有在这种情况下才能FinalShell才能连接Linux

Java过滤特殊空格nbsp;

现象: 用Java处理excel文件中的以下字符串时,想去除此空格,却发现用String.trim()没有直到预期效果: 原因: 在网上找了下,应该是这其实是html中经常使用的一种特殊空格字符  处理&a…

关于PyQt5的TreeWidget的与百度Ai的问答

中肯的讲啊,不带有任何色彩啊,百度Ai在编程这方面确实差了点。确实是在网罗所有资料,但是收集起来不能进行深度的分析,好像没有设置一个自己先把总结出的代码答案运行一下的功能,所以有时候给出的代码答案根本跑不了。…

Java基础语法——字符串(String/StringBuilder/Stringjoiner)

String Java的String类是不可变的,意味着一旦创建,其值就不能被改变。String类提供了丰富的API来操作字符串。 以下是一些常用的方法: 构造方法: 有以下几种常见的: public class stringlearn {public static void…