单机游戏存档修改
背景介紹:游戲是仙劍一,劇情在打苗疆三人組之前,目的是修改李逍遙屬性從而可以秒殺苗疆三人組的頭領(lǐng)。
進入原始存檔(存檔文件名為1.rpg,位于游戲根目錄下),查看李逍遙原始屬性,如下圖所示:
去后山打怪升級。打了一組樹怪后,李逍遙屬性升級,如下圖所示:
存一個新檔(存檔文件名為2.rpg)。為了盡量減少存檔之間的變化,存檔前回到原場景(客棧門前)。備份1.rpg和2.rpg兩個存檔文件。用VBinDiff(開源工具,網(wǎng)址https://www.cjmweb.net/vbindiff/)對比兩個存檔文件,把他們復(fù)制到VBinDiff文件夾下,然后用cmd運行VBinDiff:
效果如圖所示,按Enter鍵遍歷所有有區(qū)別的地方:
遍歷一遍之后,發(fā)現(xiàn)兩個存檔文件共有7塊發(fā)生不同的區(qū)域,其中許多地方是flag性質(zhì)的改變(例如FF變?yōu)?1,00變成0A),推測他們是一些與屬性無關(guān)的變化(例如存檔時的坐標(biāo)、樹怪被消滅后是否刷新的標(biāo)記、存檔時間等),最像屬性改變的區(qū)域(可以目測出是數(shù)值發(fā)生了少許增加),發(fā)生在:
雖然VBinDiff支持直接修改文件內(nèi)容,但是為了以后使用方便,還是人工記下偏移地址和對應(yīng)的變化:
| 地址 | 十六進制變化 | 十進制變化 | 推測屬性 |
|---|---|---|---|
| 0244 | 02->03 | 2->3 | 修行 |
| 0250 | AA->B6 | 170->182 | 體力上限 |
| 025C | 6C->74 | 108->116 | 真氣上限 |
| 0268 | 99->B6 | 153->182 | 當(dāng)前體力 |
| 0274 | 6C->74 | 108->116 | 當(dāng)前真氣 |
| 02C8 | 26->2B | 38->43 | 武術(shù)(疑似,-2) |
| 02D4 | 19->1E | 25->30 | 靈力 |
| 02E0 | 24->26 | 36->38 | 防御(疑似,-9) |
| 02EC | 20->23 | 32->35 | 身法 |
| 02F8 | 22->24 | 34->36 | 吉運 |
其中武術(shù)和防御的偏差,應(yīng)該是人物裝備的影響,推測李逍遙的桃木劍+2武術(shù),他的一身裝備+9防御。
為了秒殺BOSS,我們只需要修改武術(shù)。從數(shù)據(jù)的外表看,屬性只占2個字節(jié),推測屬性值的類型應(yīng)該是無符號短整型(unsigned short int),則最大值是0xFFFF。
回到仙劍目錄,用WinHex修改存檔文件2(2.rpg)的偏移地址02C8處為FFFF:
保存后重新進入游戲讀取存檔2。發(fā)現(xiàn)武力值變?yōu)?了,進入boss戰(zhàn)發(fā)現(xiàn)攻擊力很低,這應(yīng)該是由于基礎(chǔ)武力加上裝備加成,造成了最終武力值的進位(溢出)。考慮到裝備的+2武力,修改基礎(chǔ)武力為0xFFFD,試圖達到最終武力的最大值:
重新進入游戲,發(fā)現(xiàn)李逍遙的武力為5535,推測真實值應(yīng)該是65535,而游戲只顯示了后4位數(shù):
進入客棧的boss戰(zhàn),一刀砍出22348(boss的總血量),秒殺boss。
存檔修改成功!金錢,物品數(shù)量的修改都可以使用這個對比存檔文件的方法。如果想做存檔修改器的話,可以根據(jù)上面列表中的偏移地址做一個小工具。
總結(jié)
- 上一篇: WJC上学记
- 下一篇: Win10 下安装使用easyocr图片