7.x86游戲實戰-C++實現跨進程讀寫-跨進程寫內存

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動!

本次游戲沒法給

內容參考于:微塵網絡安全

上一個內容:6.x86游戲實戰-C++實現跨進程讀寫-通過基址讀取人物狀態標志位

上一個內容通過基址得到了人物狀態標志,這種操作屬于讀取,既然有讀取那就有寫入,所以本次來搞寫入,本次通過找坐標改坐標實現瞬移來學習跨進程寫數據。

這里有一件事,代碼(c/c++代碼)中用的那些函數(函數也叫api)怎么知道的?怎么就知道它能這樣用?怎么知道有這種東西?

比如之前的 OpenProcess函數、ReadProcessMemory函數,怎么知道的這倆函數?

這都是老師講的,逆向會常用OpenProcess、ReadProcessMemory這兩個函數(當然不止這倆),這倆函數是Windows系統提供,自己找是真找不到,寫這些字是為了那些鉆牛角尖的,不要再鉆了,我代碼里寫什么就學什么,否則其它的函數你就算知道了,也可能不知道怎么玩,純浪廢時間

Spy++

使用OpenProcess函數時要寫一個pid,這個pid游戲重啟、操作系統重啟都會發送改變,每次都要找它的pid,有一個函數可以獲取pid,這個函數需要Spy++里的一點東西,如下圖打開Spy++

使用

找坐標

首先打開CE并附加游戲,游戲中小地圖附近會有坐標信息(有些游戲沒有,后面會寫沒有的怎么辦)

如上圖坐標現在是240,143,界面上顯示的是整數,但它實際上是小數,很少有游戲坐標數據用整數,然后,如下圖使用單浮點類型(為什么用單浮點?因為經驗,也有的游戲會用雙浮點,如果不知道用單浮點還是雙浮點那就這倆都試一試,試完就知道用哪個了(錯誤的會找不到想要的數據),優先使用單浮點),來掃描內存,然后掃描類型是值介于...兩者之間,游戲中坐標在窗口中看到的是100,它實際上可能是101、106、96這樣的(所以這種找法不好,后面會有其它方式找坐標,只能做入門來用)

然后首次掃描,找到14511個數據

然后移動角色更改坐標

再次掃描,然后就剩下18個

然后把這些全部添加到下方列表中

然后再選中一半,然后鼠標放到選中的數據上如下圖右擊選擇數值,把數據修改一下,如果把坐標修改了游戲中會有反應

把數據修改為50,然后游戲中沒有反應,這說明坐標數據并不在這些數據中

然后選擇剩下的數據做上方的操作

修改成60之后游戲有了反應(會瞬移)

然后現在還是有很多數據,具體哪個是坐標還不知道,然后先把這些改了沒反應的給刪除

然后再選一半改數據,這里改之前移動一下角色,讓它恢復一下坐標(網絡游戲本地改坐標沒用,移動一下(發送數據包)就會恢復)

最終發現了兩個,一個是人物頭頂名字的坐標,一個是人物坐標

找到坐標之后使用c++代碼對它們做出修改

代碼:

// ConsoleApplication4.cpp : 此文件包含 "main" 函數。程序執行將在此處開始并結束。
//#include <iostream>
#include "Windows.h"int main()
{/*FindWindowA函數通過窗口類和標題獲取窗口句柄""是從Spy++中類里復制來的NULL表示啥也沒有*/HWND hwd = FindWindowA("", NULL);DWORD pid;// 根據窗口句柄獲取進程pid,pid也就是線程idGetWindowThreadProcessId(hwd, &pid);HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);DWORD* address = (DWORD*)0x457A555C;float ret = 60;/*h進程句柄address要修改的內存地址,或者說修改什么內存地址里存放的值ret意思是把address(457A555C)地址的值修改成ret的值NULL不重要*/WriteProcessMemory(h, address, &ret, 4, NULL);address = (DWORD*)0x457A5544;ret = 60;WriteProcessMemory(h, address, &ret, 4, NULL);//跨進程讀內存();
}void 跨進程讀內存() {/*PROCESS_ALL_ACCESS表示全部權限FALSE表示不繼承,這個一般用不到,不用了解14384進程的Pid,詳情看文章中的圖h是進程句柄,句柄是用來代表一個進程的數字,由操作系統提供HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 14384); 這一句的意思是獲取14384進程的所有權限,并把句柄放到h中
*/
//HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 14384);
/*DWORD* 的意思是,* 表示當前的數據認定成內存地址,DWORD是4字節數字DWORD* 的意思是把xxx認定成內存地址,內存地址里的值是一個4字節數字(DWORD*)0xA107BC也就是把0xA107BC它當做內存地址來看待,0xA107BC內存地址里的值是一個4字節數字
*/
//DWORD* buffer = (DWORD*)0xA107BC;
//DWORD ret;
/*h要讀取誰的內存buffer內存地址ret內存地址的數據4讀取4個字節NULL沒用&是取地址的意思,&ret的意思就是ret的內存地址ReadProcessMemory(h, buffer, &ret, 4, NULL); 這一句的意思是,從h的內存中的0x60BAA6A0位置開始讀取4字節,放到ret它里面,如果ret的大小沒有4字節會顯示有問題或程序崩潰
*/
//ReadProcessMemory(h, buffer, &ret, 4, NULL);
//printf("%d", ret);HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 15052);DWORD* buffer = (DWORD*)0xA107BC;DWORD ret;ReadProcessMemory(h, buffer, &ret, 4, NULL);//printf("%d", ret);buffer = (DWORD*)(ret + 0x60);ReadProcessMemory(h, buffer, &ret, 4, NULL);buffer = (DWORD*)(ret + 0x14c);ReadProcessMemory(h, buffer, &ret, 4, NULL);printf("人物狀態標志:%d\n", ret);
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39369.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39369.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39369.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深層神經網絡

深層神經網絡 深層神經網絡 深度神經網絡&#xff08;Deep Neural Networks&#xff0c;DNN&#xff09;可以理解為有很多隱藏層的神經網絡&#xff0c;又被稱為深度前饋網絡&#xff08;DFN&#xff09;&#xff0c;多層感知機&#xff08;Multi-Layer perceptron&#xff0c…

ghost恢復?電腦文件恢復如何操作?電腦數據恢復工具!5款!

在數字化時代&#xff0c;電腦數據的價值日益凸顯。然而&#xff0c;數據丟失、誤刪、系統崩潰等問題時有發生&#xff0c;給個人和企業帶來巨大損失。本文將為您詳細介紹Ghost恢復方法&#xff0c;同時推薦五款高效的電腦數據恢復工具&#xff0c;助您輕松應對數據丟失的困擾。…

使用歸檔實用工具怎么打不開 mac上好用的解壓軟件 歸檔實用工具打不開怎么回事 mac 歸檔實用工具 蘋果電腦好用的壓縮軟件有哪些

Mac系統自帶的 “歸檔實用工具”&#xff0c;集成在系統右鍵菜單中&#xff0c;包含了文件壓縮和壓縮包解壓功能。很多mac小伙伴會發現有些文件使用歸檔實用工具打不開。由于專利和軟件開源問題&#xff0c;該工具目前僅支持ZIP格式的壓縮和解壓。同時&#xff0c;對于一些在Wi…

深入探討數據結構:基礎理論與應用實踐

前言 數據結構是計算機科學的重要組成部分&#xff0c;是編程與算法設計的基礎。本文將系統地介紹數據結構的基礎概念、常見類型、具體實現及其在實際開發中的應用&#xff0c;幫助讀者深入理解這一核心領域。 一、數據結構的基本概念 數據結構指的是計算機中數據的組織、管…

推廣旅游卡項目,一個月創收十幾萬,為何說旅游卡項目堪稱盈利利器?

推廣旅游卡項目&#xff0c;一月個創收十幾萬&#xff0c;為何說旅游卡項目堪稱盈利利器&#xff1f; 其精髓恰在于那十六字真言&#xff1a;即時收益&#xff0c;高額利潤&#xff0c;操作簡便&#xff0c;粉絲友好。接下來&#xff0c;我將從推廣人員的視角&#xff0c;為您…

Microsoft SQL Server 2019安裝和設置用戶密碼

1、免費下載兩個安裝包 SQL2019-SSEI-Dev 地址:https://www.microsoft.com/en-us/sql-server/sql-server-downloads SSMS-Setup-CHS 地址:https://aka.ms/ssmsfullsetup 安裝具體不在闡述了&#xff0c;可以參考我這篇文章&#xff1a;SQL Server 2019安裝詳細教程 2、以W…

開發常見的http狀態碼.——400,401,403,404,500,501,503,狀態碼大全!

目錄 一. 1開頭的(臨時信息響應碼) 二. 2開頭的(成功信息碼) 三. 3開頭的(重定向信息碼) 四. 4開頭的(客戶端錯誤信息碼) 五. 5開頭的(服務器內部錯誤信息碼) 一. 1開頭的(臨時信息響應碼) 100&#xff1a;繼續請求。示意請求者應當繼續發送請求&#xff0c;客戶端返回此碼…

Cookie的默認存儲路徑以及后端如何設置

問題場景 最近在寫一個前后端分離的項目&#xff0c;需要跨域&#xff0c;前端開發同學遇到一個問題一直報錯&#xff0c;本質上就是后端返回的cookie中的sessionID在前端發送http請求時無法被請求自動攜帶&#xff0c;每次htttpRequest都被后端識別為一個新的session&#xf…

Spring MVC數據綁定和響應——數據回寫(二)JSON數據的回寫

項目中已經導入了Jackson依賴&#xff0c;可以先調用Jackson的JSON轉換的相關方法&#xff0c;將對象或集合轉換成JSON數據&#xff0c;然后通過HttpServletResponse將JSON數據寫入到輸出流中完成回寫&#xff0c;具體步驟如下。 1、修改文件DataController.java&#xff0c;在…

verilog 參數用法

參數比較運算 localparam QPLL_FBDIV_IN (QPLL_FBDIV_TOP 16) ? 10b0000100000 : (QPLL_FBDIV_TOP 20) ? 10b0000110000 :(QPLL_FBDIV_TOP 32) ? 10b0001100000 :(QPLL_FBDIV_TOP 40) ? 10b0010000000 :(QPLL_FBDIV_TOP 64) ? 10b0011100000 :(QPLL_FBDIV_TO…

昇思25天學習打卡營第04天 | 數據集 Dataset

昇思25天學習打卡營第04天 | 數據集 Dataset 文章目錄 昇思25天學習打卡營第04天 | 數據集 Dataset數據集加載數據集迭代數據集的變換shufflemapbatch 自定義數據集可隨機訪問數據集對象可迭代數據集生成器 總結打卡 數據集Dataset對原始數據進行封裝、變換&#xff0c;為神經網…

Linux 靜態庫 和 動態庫

在Linux系統上&#xff0c;庫文件用于共享和重用代碼。根據使用方式和鏈接方式的不同&#xff0c;庫文件可以分為靜態庫和動態庫。 靜態庫&#xff08;Static Library&#xff09; 靜態庫是在編譯時被嵌入到最終可執行文件中的庫。靜態庫的擴展名通常是.a。 特點 獨立性&am…

ADOP帶你了解:SFP 光模塊:構建高速網絡的關鍵技術

在數字化時代&#xff0c;企業運營的效率往往取決于數據傳輸的速度。因此&#xff0c;構建一個可靠的網絡基礎架構至關重要。本指南深入探討了小型可插拔&#xff08;SFP&#xff09;光收發器的關鍵作用&#xff0c;這些設備確保了網絡中數據的高效和安全流動。SFP光收發器的設…

【Rust入門教程】hello world程序

文章目錄 前言Hello World程序運行總結 前言 對于學習任何一種新的編程語言&#xff0c;我們都會從編寫一個簡單的Hello World程序開始。這是一個傳統&#xff0c;也是一個開始。在這篇文章中&#xff0c;我們將一起學習如何在Rust中編寫你的第一個程序&#xff1a;Hello Worl…

【C語言內存函數】

目錄 1.memcpy 使用 模擬實現 2.memmove 使用 模擬實現 3.memset 使用 4.memcmp 使用 1.memcpy 使用 void * memcpy ( void * destination, const void * source, size_t num );目的地址 源地址 字節數 destination&#xff1a;指向要復制內…

20240703 每日AI必讀資訊

&#x1f916;爆火Character AI慘遭閹割 美國00后集體“失戀” - Character AI曾是00后最火爆的社交軟件&#xff0c;但用戶發現對話模型變得冷淡&#xff0c;失去趣味。 - 用戶流失嚴重&#xff0c;面臨成本高、競爭激烈的挑戰&#xff0c;甚至遭到挖角。 - 盡管困難重重&a…

淘寶API接口開發系列:淘寶訂單詳情API接口與物流電子面單API接口概述

淘寶訂單詳情API接口與物流電子面單API接口概述 在電子商務領域&#xff0c;API&#xff08;應用程序接口&#xff09;扮演著至關重要的角色&#xff0c;它們使得不同的系統能夠相互通信&#xff0c;實現數據的共享和交換。淘寶作為國內最大的電商平臺之一&#xff0c;其提供的…

C# 多線程造成CPU占用率高

當線程多的時候就會造成CPU內存占用率過高 private void button1_Click(object sender, EventArgs e){Thread TH1, TH2, TH3, TH4, TH5;TH1 new Thread(Thread1){IsBackground true};TH2 new Thread(Thread2){IsBackground true};TH3 new Thread(Thread3){IsBackground t…

最小步數模型——AcWing 1107. 魔板

最小步數模型 定義 最小步數模型通常是指在某種約束條件下&#xff0c;尋找從初始狀態到目標狀態所需的最少操作或移動次數的問題。這類問題廣泛存在于算法、圖論、動態規劃、組合優化等領域。具體來說&#xff0c;它涉及確定一個序列或路徑&#xff0c;使得按照特定規則執行…

jenkins在使用pipeline時,為何沒有方塊形視圖

項目場景&#xff1a; 安裝完Jenkins時后&#xff0c;通過pipeline創建的項目任務。 問題描述 在立即構建后&#xff0c;沒有顯示每個階段的視圖。 原因分析&#xff1a; 原因是&#xff0c;剛安裝的Jenkins&#xff0c;這個視圖不是Jenkins自帶的功能&#xff0c;而必須安裝…