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.pswp.cn/bicheng/14558.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14558.shtml
英文地址,請注明出處:http://en.pswp.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 …