在近期的新聞中,當《賽博朋克2077》對AMD處理器優化不好的時候,有人祭出了終極大法——修改執行文件!對很多玩家來說,這個修改過程能看懂,但它提供的那一串代碼到底是什麼?它代表的16進位又是啥意思?可能很多新晉玩家就不知道了,那咱們今天就來說說這事兒吧。
16進位就是以0~F代表0~15的一種表達方式,在修改時看到的一般是兩個一組,可以表達0(00)~255(FF)。相對於二進位的0,1,它可以在較短的代碼內更多的信息,比如255擁16進位寫成FF,二進位就要寫成11111111(不用數了,是8個1)。顯然16進位用來一些表達一些複雜設置、大型數字更方便。
因為這個優勢,所以很多遊戲會使用16進位來表達數字,比如有些老遊戲中會看到最高級別、屬性、最高人數是15、255、65535(FFFF)等比較怪的數字。這有沒有讓你有點聯想?沒錯,了解16進位之後就可以修改這些屬性了。
這裡要注意三個問題,首先是10進位的轉換,我們可以使用https://tool.lu/hexconvert/等在線轉換工具。其次是順序問題,有些文件中的16進位排列是反向的,比如65534應該表達為FF FE,但在有些文件中是FE FF。最後就是在修改時一定一定要注意備份文件,一旦修改了錯誤位置,輕則屬性混亂,重則存檔甚至整個遊戲都無法打開。
然後就是具體的修改方法了,我們選擇的是目前比較流行的16進位編輯工具,UltraEdit旗下的hex-editor(https://www.ultraedit.com/language/hex-editor.html)。以前面提到的《賽博朋克2077》優化設置為例,安裝hex-editor並用它打開Cyberpunk2077.exe。
然後我們必須確定相關的整個字符串,比如75 30 33 C9 B8 01 00 00 00 0F A2 8B C8 C1 F9 08,這樣才能更好地確定修改位置,儘量避免改錯。然後選擇「Edit→Find」功能,輸入這串字符,找到相關位置,當然不一定要輸全也可能找到位置,但也必須確認後續字符完全相同。之後把字符串頭部的75改成EB,存檔就好了。
至於存檔文件就更簡單了,可以選擇一個比較大而且容易變化的數字,比如軍糧數量,存檔後在存檔文件裡用16進位字符查找,記下來位置。然後減少或增加軍糧,再次存檔,看看之前記下的位置中,哪一個數據變成了新的數量,之後修改並載入試試看。這裡要注意的是,一個數據可能會存在多處,如果多次嘗試發現幾個地方的數據都在同時變化,那麼就都修改好了。
最後有個超超超級重要的事要說明,修改屬性、數量等參數的方法只適用於純粹的單機遊戲或者僅聯網進行正版授權驗證的遊戲。對於網遊或者一些存檔會在網上備份的聯網「單機」遊戲來說,這樣的修改不僅很可能不奏效,而且還可能涉及作弊,會被平臺懲罰,小夥伴們就千萬不要嘗試啦。