挑戰
有的玩家在玩游戲時,可能并不想?關?關地慢慢玩,?是希望可以直接跳到最后?關,或者從??指定的關卡開始,?如
經典的《植物?戰僵?》;再就是怎么能夠「開掛」,得到更多的?錢、更?的屬性、更強的道具,?如《三國志》系列,
任何游戲都會保存玩家的進度和資料,不管是單機游戲還是?絡游戲都是如此,如果玩家能夠知道這些存檔資料保存在哪
?,并且還能隨意修改存檔資訊,那是不是就能達到「開掛」的?的呢?
思路
通過游戲過關觀察游戲存檔資料檔案的變化開找到變化的規律從而實作代碼的反編譯,
工具
1、window10 x64作業系統與Linux_Deepin 20


2、BlessHexEdit進制修改工具

3、植物大戰僵尸單機版

一、什么是進制?
二進制是在計算機中使用最多的進制,八進制和十六進制都是基于二進制的,3位二進制陣列成1位八進制數,4位二進制陣列成1位十六進制數,所以二進制,八進制,十六進制互相轉換很方便,
1十進制(Decimal):0-9 , 滿10進1,
2二進制(Binary): 0、1 ,滿2進1,以0b或0B開頭,
3八進制(Octal): 0-7 , 滿8進1, 以數字0開頭表示,
4十六進制(Hex): 0-9及A-F,滿16進1,以0x或0X開頭表示,注意A-F不區分大小寫,

二、任務探索
安裝游戲并創建游戲角色,開始游戲通過第一關,尋找游戲的存檔資料檔案,進入游戲存檔路徑:C:\ProgramData\PopCap Games\PlantsVsZombies\userdata,新用戶的存檔檔案為:user1.dat,

使用進制編輯工具打開查看內容,

查看完后備份檔案,

接著玩一關游戲,需要用新的游戲存檔資料檔案去對吧備份的資料檔案尋找有什么差異,

因為我們此時還沒有獲得金幣,只是通過,因此我們可以猜測十六進制關卡的十六進制代碼是02,
可以嘗試修改地址03的資料為04,保存存檔檔案后來驗證我們的猜想,進入游戲看關已經改變,驗證了我們的猜想是正確的,

接著恢復游戲備份檔案完游戲
關卡1-1,01
關卡1-10,0A
關卡2-1,0B
關卡2-10,14
依此類推
關卡4-1,29
關卡5-1,33
當數值大于32,小于3D時,關卡顯示6-1到6-10,超過3D時,顯示“6- ”,超出了游戲的限定,說明5-10已經是最后的關卡,

然后找存檔修改游戲,目標修改給自己充值金幣(如10000)的效果, 關卡超過了3-5,金幣系統才會鎖,但是此時金幣數是0先通關4-1關卡,通關后獲得了320金幣,然后對比獲得金幣前后user01.dat檔案中的資料變化,定位金幣數量存盤的地址,發現是地址第八列中的資料從00變到了20,金幣數量是該資料十進制值的十倍;
0100金幣數是10,01的十六進制是1所以是0100是01的十倍
0001金幣數是2560
0003金幣數是7680
0004金幣是10240已經超了我們的目標
那么此時已經有可規律可循了,我們的目標是10000,所以可以倒推10000-7680=2320,還需要2320個金幣,而代碼的0100是十六進制01的十倍,所以我們只需要算出232的十六進制就是我們需要的代碼了,

根據公式得到的結果是E8,
然后修改資料檔案,驗證我們的猜想,

游戲運行后驗證了我們的猜想是對的,達成任務目標,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271895.html
標籤:其他
