1. 程式人生 > >[崩壞3]從網路下手的修改方法

[崩壞3]從網路下手的修改方法

特點:無需修改客戶端,只需設定代理即可應用修改。但是目前還沒有開發出自動化的修改工具整個修改過程比較麻煩。

方法: 使用代理處理https請求,返回修改好的資料。

需要修改的檔案

  1. setting_…….unity3d,excel_output_…….unity3d(省略部分為hmac-sha1值,檔案經過AES加密)檔案內有所有資料(屬性,文字,關卡等)。也就是每次熱更新的檔案。
  2. DataVersion.unity3d,(每位元組與0xA5異或)不儲存在本地,包括用於解密上面兩個檔案的AES金鑰和hmac-sha1金鑰(經過RSA加密,金鑰在程式中,是固定的)和兩個檔案的名稱N,大小CS,CRC(hmac-sha1)和內部的檔案列表。用於判斷是否需要更新。

大致操作過程:

  1. 找到RSA金鑰:使用IDA和il2cppdumper發現金鑰是固定的為xml格式的RSA金鑰,具體過程見(52pojie連結),或者在global-metadata.dat中搜索<RSAKeyValue>也可以找到RSA金鑰。
  2. 抓包確定檔案的url:使用Fiddler抓取,得到三個檔案的url。
  3. 下載檔案:瀏覽器直接輸入地址即可。
  4. 解密:dataversion.unity3d每位元組與0xA5異或。使用Assets Bundle Extractor提取其中的PackageVersion為txt,第一行為加密的AES和hmac金鑰。使用第一步得到的RSA金鑰解密得到56位元組資料,按順序為32位元組AES key,16位元組AES IV,8位元組hmac-sha1 key。使用得到的AES key和IV可以解密另外兩個檔案。
  5. 修改:解密後excel_output和setting可以用Assets Bundle Extractor匯出修改並匯入。其中excel_output中主要為數值資料,setting中主要為關卡的lua指令碼。
  6. 重新加密:使用RSA金鑰對修改後的excel_output和setting加密,使用hmac-sha1的key重新計算sha1值,並對應修改dataversion.unity3d中PackageVersion裡的對應的檔案大小(CS)和sha1(CRC)的值,然後再次異或0xA5得到加密的檔案。
  7. 應用:在Fiddler中設定AutoResponder,把檔案對應的url的respond設定為本地修改好的檔案。或者使用其它工具(比如我在github看到的.Net的Titanium-Web-Proxy,可以從NuGet安裝,各平臺都可以使用)。
  8. 在手機上安裝證書並設定好代理開啟遊戲會自動下載這些檔案,進遊戲即可看到效果。

總之現在還沒有自動化的工具,手動修改還是比較麻煩。聽說遊戲要加強防護措施,估計不久這種方法就可能不行了,也懶得做自動化的工具了。有興趣的可以自己跟著做一做。如果看懂它關卡的lua指令碼的話就可以自制關卡,還是比較有意思的。用於作弊的話應該很容易就會封號。