日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

游戏修改器(一)瞬移

發布時間:2023/12/10 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 游戏修改器(一)瞬移 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、概述

二、工具

三、實現步驟

四、總結


一、概述

????????第一次嘗試寫游戲修改器教程,有些忐忑,糾結了好久,不知道寫什么游戲好,最后決定找一個二十年前的老游戲,比較簡單,很容易上手。游戲修改器的知識都是和內存、匯編這些相關,而這些知識也算是比較枯燥的了。我希望出這樣的一些教程,能夠激起大家學習內存相關知識的興趣。第一次寫這樣的文章,希望大家能夠看懂理解并自己實現吧。

最后只想再說一句:游戲修改器最基礎的概念就是內存,一切操作都是基于內存!!!

二、工具

????????Cheat Engine 7.2

????????x32dbg

????????Visual Studio 2019

????????使用Windows MFC開發

三、實現步驟

????????我們知道,在cs1.6這個FPS游戲中,每個人物的定位都是由坐標定位的,這個通常都是為笛卡爾坐標系。所以首先需要找到人物的坐標位置。

(1)搜索人物坐標

????????①首先模糊搜索float型未知的初始值(開始不知道是什么類型時,把整形、float、

double都嘗試就能找到)

????????

?????????② 設置搜索快捷鍵,這個設置成自己習慣的按鍵(若和游戲按鍵沖突會造成不太方便)。

?????????③在游戲中平地上隨意走動,鼠標隨意晃動,搜索未變動的數值,跳躍搜索變動的數值,落地后再搜索一次變動的數值,接著搜索未變動的數值。重復上述步驟,直到無法再排除。

????????刪除上面的綠色地址,這些為靜態地址,首先排除。接著將剩余的地址添加到地址列表,將其一條條鎖定,最后能夠尋找到兩個地址鎖定后人物無法跳躍。其中一個地址存放的為z坐標增量,另一個地址存放的為z坐標的值,被鎖定后人物都無法跳躍。?

?????????查看相關內存可知x y z的坐標和x y z軸增量。

?????????附:這是一個動態地址,在重啟游戲后會申請地址,所以需要找到它的指針映射集。使用指針掃描功能,重啟游戲,重新找到人物坐標,就能找到它的指針和偏移。(注意指針掃描功能保存的文件夾和文件名都不能有中文)最后找到的大部分都可以使用。通過重復的讀取內存加偏移的方式能夠訪問x y z坐標。這個步驟在瞬移的實現中并沒有使用,下次使用并介紹其他功能時候再做介紹。

?????????④接著找出是什么訪問了該指針指向的地址

⑤查看每一條所在匯編程序,查看指令所訪問的地址。這一處指令是只訪問我們坐標的指令。?

?

(2)Inline Hook

????????①使用Inline Hook,在此處修改程序執行的流程。

被修改指令:

????????D8 40 10 ??????????????- fadd st(0),dword ptr ds:[eax+10]

????????D9 CA? ? ? ? ? ? ? ? ? ?- fxch st(0),st(2)

????????8B 44 24 04 ?????????- mov eax,dword ptr ss:[esp+4]

跳轉指令:(使用了6個字節,覆蓋了三條指令,跳轉回的地址為三條指令后的地址)

?

????????②設置標志位,并設置全局快捷鍵,當按下某個鍵時保存當前位置,當移動到某個位置時,按下另一個全局快捷鍵,瞬移到保存的位置。我的是實現為按下F8 設置一個標志位,跳轉到上述地址處,通過[eax+0x8]、[eax+0xc]、[eax+0x10]訪問x、y、z坐標并保存,當按下F9時,設置另一個標志位,判斷標志位,若被置位,則加載保存的地址,實現瞬移。

????????我設置這個標志位是搜索很多0的數據,搜索到后調用VirtualProtectEx函數修改頁面屬性為可讀可寫可執行,這些地址用來存儲標志位和我們保存的地址。

????????③使用x32dbg 完成Flag的判斷并保存和加載人物坐標的匯編代碼。

?????????④將上述shellcode放入目標地址,使用跳轉指令覆蓋原指令并跳轉到此處,在這段shellcode后面添加跳轉回被覆蓋指令的下一條指令的地址處。

?調試上述程序,中斷查看局部變量,pRemoteBuf為cs1.6進程申請的地址(跨進程申請內存)。

????????⑤查看cs1.6游戲中,中斷到被修改指令處。?

?????????⑥跟蹤進入pRemoteBuf,單步調試

????????⑦ 最后返回到了 mp.dll + 8E8C4。?

????????⑧按下 F8 ,查看目標內存地址,成功儲存了當前人物坐標。

????????⑨人物隨意移動到一個地點,按下 F9 ,人物瞬移到儲存的位置。成功!

?

四、總結

????????最后,一張圖總結實現思路:

最后附上我的視頻介紹:

????????鏈接?:百度網盤 請輸入提取碼

????????提取碼?:P46A?

????????由于各種原因已經好久沒有更新過文章了,本來早就打算出幾篇游戲修改器的教程,由于需要寫畢業論文、找工作等各種原因,一直沒有完成,光這篇文章我就硬憋了兩天才完成。希望能給大家學習指針內存等知識帶來一些興趣吧。學習之路太過漫長,每次學一些新知識,我就想著學完這些應該能成夠入門了,學完才知道,自己還差得遠呢,接下來會了解的新的知識我又會產生相同的想法,不知道猴年馬月我才能入門啊。我也經常在論壇看網上的高手分享技術,屬實羨慕,我也不指望能成為一個高手了,只期望成為一個中手吧(中國之手,國家之手) 哈哈哈。有空我還會繼續出修改器的其他功能,總之,希望大家能夠看懂這一章節并完成自己的修改器。

????????學習過程中還有很多不足,還望朋友們指正!

總結

以上是生活随笔為你收集整理的游戏修改器(一)瞬移的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。