6.封装读写游戏数据的功能

前置知识:5.模仿CheatEngine实现锁血无敌功能(封装它的代码)

封装功能.cpp文件

#include "封装功能.h"GAMECheat::GAMECheat(unsigned pid, unsigned _baseAdr, unsigned _readTime)
{readTime = _readTime;baseAdr = _baseAdr;hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
}bool GAMECheat::ReadData(unsigned readTick)
{if(!readTick) return false;lastRead = readTick;return ReadProcessMemory(hProcess, (LPCVOID)baseAdr,this, sizeof(JianXiaGameRole), 0);
}JianXiaGameRole& GAMECheat::Data(bool IsCheckTime)
{if (!IsCheckTime)return _data;unsigned dTickNow = GetTickCount();if ((dTickNow - lastRead) > readTime)ReadData(dTickNow);return _data;
}void GAMECheat::SetData(void* dataAdr, void* buffer, SIZE_T length)
{LPVOID destAdr = (LPVOID)((unsigned)dataAdr - (unsigned)this + baseAdr);WriteProcessMemory(hProcess, destAdr, buffer, length, 0);
}

封装功能.h文件

#pragma once
#include <Windows.h>struct JianXiaGameRole
{int unknown1[4];int hp;int maxHp;int tiLi;int maxTiLi;int mp;int maxMp;int gongJiLi;int fangYu;int shenFa;int dengJi;int unknown2;int jingYan;int shengJi;int yiDongSuDu;int unknown3;int mianXiang;int unknown4[2];int xZuoBiao;int yZuoBiao;int unknown5[36];char name[0x20];
};
class GAMECheat {
public:// 通过构造函数初始化需要的数据,pid是进程id、_baseAdr是游戏中人物属性结构的首地址、_readTime读取内存的间隔时间GAMECheat(unsigned pid, unsigned _baseAdr, unsigned _readTime =100);// IsCheckTime为true会读取内存,false不读取内存目的提升效率JianXiaGameRole& Data(bool IsCheckTime=false);// 给进程写数据,也就是设置人物属性的值void SetData(void * dataAdr, void*buffer, SIZE_T length);
private:// 这个_data必须要放在第一个,如果不放在第一个我们就无法用this来表示 JianXiaGameRole 结构了那样就要多写点代码JianXiaGameRole _data;bool ReadData(unsigned readTick);HANDLE hProcess;unsigned baseAdr;unsigned lastRead;unsigned readTime;};

main代码:

#include "封装功能.h"
#include <iostream>#define P(data,x) &data, &x,sizeof(x)int main() {unsigned pid;std::cout << "请输入游戏进程ID:";std::cin >> pid;GAMECheat gcheat(pid, 0x4CEF08);std::cout << "角色名称:" << gcheat.Data(1).name << std::endl;std::cout << "血量:" << gcheat.Data().hp << std::endl;int hp = 0;gcheat.SetData(P(gcheat.Data().hp, hp));system("pause");
}

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

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

相关文章

代码随想录算法训练营第三十四天 | 理论基础、455.分发饼干、376、摆动序列、53.最大子序和

目录 理论基础 455.分发饼干 思路 代码 376.摆动序列 思路 代码 53.最大子序和 思路 代码 理论基础 代码随想录 455.分发饼干 代码随想录 思路 可以是大饼干优先满足大胃口&#xff0c;也可以是小饼干优先满足小胃口。 代码 class Solution:def findContentChildre…

ArkUI-X开发指南:【SDK配置和构建说明】

ArkUI-X SDK配置和构建说明 ArkUI-X SDK是ArkUI-X开源项目的编译产物&#xff0c;可将ArkUI-X SDK集成到现有Android和iOS应用工程中&#xff0c;使开发者基于一套ArkTS主代码&#xff0c;就可以构建支持多平台的精美、高性能应用。SDK内容包含ArkUI跨平台运行时&#xff0c;组…

安装SSL证书能提高网站访客吗?

在当今互联网时代&#xff0c;网站的安全性和用户体验至关重要。随着网络攻击和数据泄露事件的不断增加&#xff0c;用户对网站的信任也变得越来越重要。SSL证书是一种数字证书&#xff0c;可以在Web服务器和网页浏览器之间建立加密链接&#xff0c;确保网站传输的数据安全&…

【HarmonyOS尝鲜课】- 前言

面向人群 本课程适用于HarmonyOS应用开发的初学者。 有无经验的开发者都可以轻松掌握ArkTS语言声明式开发范式&#xff0c;体验更简洁、更友好的HarmonyOS应用开发旅程。 什么是HarmonyOS HarmonyOS&#xff08;鸿蒙操作系统&#xff09;是由华为技术有限公司开发的全场景分…

B站自动回复插件_无需千粉,轻松适配引流拉新资源分享

项目介绍 B站关键词自动回复插件&#xff0c;无需千粉&#xff0c; 很适合做流量做引流做私欲的朋友&#xff0c; 前期没有千粉是无法开启官方自动回复的&#xff0c; 适当的情况下可以用这个插件顶一下&#xff0c; 三联好评领取资源的打法真的超级涨粉&#xff0c; 感谢插件…

【OceanBase诊断调优】—— KVCache 排查手册

原文链接&#xff1a;OceanBase分布式数据库-海量数据 笔笔算数 本文介绍 KVcache 相关问题的排查方法。 KVCache 相关概念 在进行排查前&#xff0c;需要了解几个概念。 pin 一个 cache 块 ( memblock ) 被 pin 住&#xff0c;表示它正在被引用。 cache 的由多个定长的块组成…

HAL库点LED灯

文章目录 一、创建CubeMX项目操作步骤1.STM32CubeMX创建工程2.选择芯片3.Pinout & Configuration配置4.Clock Configuration配置5.Project Manager配置 二、实验&#xff08;一&#xff09;LED流水灯1.Keil修改代码2.实验现象3.keil波形仿真 &#xff08;二&#xff09;2只…

代码随想录(栈和队列)

用栈实现队列&#xff08;Leetcode232&#xff09; package 栈和队列;import java.util.ArrayList; import java.util.Stack; 思路&#xff1a;1、用一个栈stack2来存压入的数&#xff0c;当要pop或peek操作时再压入stack中&#xff0c;实现队列顺序2、不是每次pop都从stack2中…

没有CAN硬件,在Linux下模拟使用Socket CAN

即使没有实际的CAN硬件,我们仍然可以在Linux下使用socketcan进行模拟。这可以通过使用虚拟的CAN接口(vcan)来实现。vcan接口是Linux内核提供的虚拟CAN总线接口,适用于开发和测试socketcan应用。 以下是如何设置和使用vcan接口的步骤: 1. 加载vcan模块 首先,你需要确保…

变量命名的艺术:让你的代码更具可读性

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;为何变量命名如此重要&#xff1f; 二、变量命名的基本规则 1. 避免数…

卷爆短剧出海:五大关键,由AIGC重构

短剧高温下&#xff0c;谈谈AIGC的助攻路线。 短剧&#xff0c;一个席卷全球的高温赛道。 以往只是踏着霸总题材&#xff0c;如今&#xff0c;内容循着精品化、IP化的自然发展风向&#xff0c;给内容、制作、平台等产业全链都带来新机&#xff0c;也让短剧消费走向文化深处&am…

Docker仅需3步搭建免费私有化的AI搜索引擎-FreeAskInternet!

简介 FreeAskInternet 是一个完全免费、私有且本地运行的搜索引擎&#xff0c;并使用 LLM 生成答案&#xff0c;无需 GPU。用户可以提出问题&#xff0c;系统会进行多引擎搜索&#xff0c;并将搜索结果合并到ChatGPT3.5 LLM中&#xff0c;并根据搜索结果生成答案。 什么是 Fr…

重学java 39.多线程 — 线程安全

逐渐成为一个情绪稳定且安静成长的人 ——24.5.24 线程安全 什么时候发生&#xff1f; 当多个线程访问同一个资源时&#xff0c;导致了数据有问题&#xff0c;出现并发问题&#xff0c;数据不能及时更新&#xff0c;导致数据发生错误&#xff0c;出现线程安全问题 多线程安全问…

纹理映射技术在AI去衣中的艺术与科技融合

引言&#xff1a; 在数字图像处理的世界里&#xff0c;AI去衣技术正逐步揭开其神秘的面纱。这门技术结合了深度学习的智能算法与图形学的先进手段&#xff0c;以实现对图像中衣物的智能识别与处理。在这一过程中&#xff0c;纹理映射技术发挥着至关重要的作用。本篇博客将深入探…

变量命名的艺术:从蛇形到驼峰

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、蛇形命名法的魅力 二、类名和模块名的特殊规则 三、驼峰命名法的魅力与挑战 四、保持…

【kubernetes】探索k8s集群中kubectl的陈述式资源管理

目录 一、k8s集群资源管理方式分类 1.1陈述式资源管理方式&#xff1a;增删查比较方便&#xff0c;但是改非常不方便 1.2声明式资源管理方式&#xff1a;yaml文件管理 二、陈述式资源管理方法 2.1查看版本信息 2.2查看资源对象简写 2.3配置kubectl自动补全 2.4node节点…

初始Java篇(JavaSE基础语法)—— 内部类

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaSE 目录 内部类的概念 内部类的种类 使用举例&#xff1a; 1. 静态内部类&#xff1a; 2. 实例内部类 3. 局部内部类 4. 匿名内部…

1分钟带你搞定Pandas DataFrame运算

1. DataFrame之间的运算 在运算中自动对齐不同索引的数据 如果索引不对应&#xff0c;则补NaN DataFrame没有广播机制 导包 # 导包import numpy as npimport pandas as pd 创建 DataFrame df1 不同人员的各科目成绩&#xff0c;月考一 # 创建DataFrame二维数组df1 pd.Da…

想要修改Excel表格内容,怎么移除编辑权限?

在使用Excel进行数据处理和管理时&#xff0c;我们经常会遇到需要保护工作表以防止误操作的情况。有时可能碰到“被保护单元格不支持此功能”的提示&#xff0c;本文将详细介绍这个问题的解决方案&#xff0c;帮助你取消单元格保护&#xff0c;使用所需的功能。 一、取消单元格…

leetcode刷题记录:前缀和

https://labuladong.online/algo/problem-set/perfix-sum/#%E8%A7%A3%E6%B3%95%E4%BB%A3%E7%A0%81-3 适用范围&#xff1a;快速、频繁地计算一个索引区间内的元素之和 303 区域和检索&#xff1a;数组不可变 https://leetcode.cn/problems/range-sum-query-immutable/ class …