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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

游戏修改器(一)瞬移

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

目錄

一、概述

二、工具

三、實(shí)現(xiàn)步驟

四、總結(jié)


一、概述

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

最后只想再說(shuō)一句:游戲修改器最基礎(chǔ)的概念就是內(nèi)存,一切操作都是基于內(nèi)存!!!

二、工具

????????Cheat Engine 7.2

????????x32dbg

????????Visual Studio 2019

????????使用Windows MFC開(kāi)發(fā)

三、實(shí)現(xiàn)步驟

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

(1)搜索人物坐標(biāo)

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

double都嘗試就能找到)

????????

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

?????????③在游戲中平地上隨意走動(dòng),鼠標(biāo)隨意晃動(dòng),搜索未變動(dòng)的數(shù)值,跳躍搜索變動(dòng)的數(shù)值,落地后再搜索一次變動(dòng)的數(shù)值,接著搜索未變動(dòng)的數(shù)值。重復(fù)上述步驟,直到無(wú)法再排除。

????????刪除上面的綠色地址,這些為靜態(tài)地址,首先排除。接著將剩余的地址添加到地址列表,將其一條條鎖定,最后能夠?qū)ふ业絻蓚€(gè)地址鎖定后人物無(wú)法跳躍。其中一個(gè)地址存放的為z坐標(biāo)增量,另一個(gè)地址存放的為z坐標(biāo)的值,被鎖定后人物都無(wú)法跳躍。?

?????????查看相關(guān)內(nèi)存可知x y z的坐標(biāo)和x y z軸增量。

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

?????????④接著找出是什么訪問(wèn)了該指針指向的地址

⑤查看每一條所在匯編程序,查看指令所訪問(wèn)的地址。這一處指令是只訪問(wèn)我們坐標(biāo)的指令。?

?

(2)Inline Hook

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

被修改指令:

????????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]

跳轉(zhuǎn)指令:(使用了6個(gè)字節(jié),覆蓋了三條指令,跳轉(zhuǎn)回的地址為三條指令后的地址)

?

????????②設(shè)置標(biāo)志位,并設(shè)置全局快捷鍵,當(dāng)按下某個(gè)鍵時(shí)保存當(dāng)前位置,當(dāng)移動(dòng)到某個(gè)位置時(shí),按下另一個(gè)全局快捷鍵,瞬移到保存的位置。我的是實(shí)現(xiàn)為按下F8 設(shè)置一個(gè)標(biāo)志位,跳轉(zhuǎn)到上述地址處,通過(guò)[eax+0x8]、[eax+0xc]、[eax+0x10]訪問(wèn)x、y、z坐標(biāo)并保存,當(dāng)按下F9時(shí),設(shè)置另一個(gè)標(biāo)志位,判斷標(biāo)志位,若被置位,則加載保存的地址,實(shí)現(xiàn)瞬移。

????????我設(shè)置這個(gè)標(biāo)志位是搜索很多0的數(shù)據(jù),搜索到后調(diào)用VirtualProtectEx函數(shù)修改頁(yè)面屬性為可讀可寫可執(zhí)行,這些地址用來(lái)存儲(chǔ)標(biāo)志位和我們保存的地址。

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

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

?調(diào)試上述程序,中斷查看局部變量,pRemoteBuf為cs1.6進(jìn)程申請(qǐng)的地址(跨進(jìn)程申請(qǐng)內(nèi)存)。

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

?????????⑥跟蹤進(jìn)入pRemoteBuf,單步調(diào)試

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

????????⑧按下 F8 ,查看目標(biāo)內(nèi)存地址,成功儲(chǔ)存了當(dāng)前人物坐標(biāo)。

????????⑨人物隨意移動(dòng)到一個(gè)地點(diǎn),按下 F9 ,人物瞬移到儲(chǔ)存的位置。成功!

?

四、總結(jié)

????????最后,一張圖總結(jié)實(shí)現(xiàn)思路:

最后附上我的視頻介紹:

????????鏈接?:百度網(wǎng)盤 請(qǐng)輸入提取碼

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

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

????????學(xué)習(xí)過(guò)程中還有很多不足,還望朋友們指正!

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。