[崩壞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-sha1密鑰。使用第一步得到的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. 重新加密:使用AES密鑰對修改後的excel_output和setting加密,使用hmac-sha1的key重新計算sha1值,並對應修改dataversion.unity3d中PackageVersion裏的對應的文件大小(CS)和sha1(CRC)的值,然後再次異或0xA5得到加密的文件。
  7. 應用:在Fiddler中設置AutoResponder,把文件對應的url的respond設置爲本地修改好的文件。或者使用其它工具,github有很多類似功能的項目。
  8. 在手機上安裝證書並設置好代理打開遊戲會自動下載這些文件,進遊戲即可看到效果。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章