[這個問題與登錄憑證或用戶/玩家輸入任何類型的密碼短語等無關;感謝你和請繼續閱讀。]處理資源解密密碼
首先,我的問題已經有點被問,here和here。我的問題與這兩者中的任何一個都不同,因爲我不通過互聯網獲取數據或關注任何類型的「登錄」。爲了簡單起見,我正在製作一款遊戲,並將我的遊戲資源全部加密爲專有格式,這需要一個密碼來解密數據。我必須在源代碼中隱藏該密碼。除了將密碼保存在應用程序本身之外,我想不出其他任何方式。在另一個文件中加密密碼仍然需要一個密碼,並且這開始了無限循環的隱藏該密碼的地方,等等。
這讓我想知道現代遊戲如何處理他們的資源解密密碼?想像使命召喚,上古卷軸,俠盜獵車手等遊戲,他們加密他們的數據,對吧?這意味着他們需要密碼/ salt/etc來解密它。這樣的密碼也需要在可執行文件中。 那麼他們在哪裏隱藏它?他們如何混淆它?
我考慮過一個選項,這看起來確實很不錯。基本上,我會構建一種方法,它可以通過一些數學計算的訣竅,構造一個字符串,並返回數據作爲密碼。有人可能只是撕裂的方法出來的代碼,然後在自己的私人應用程序啓動它,但至少不會是這麼明目張膽爲:
public const string ResourceDecryptionPassword = "MY_AWESOME_DECRYPTION_PASSWORD";
另外,我考慮只保留密碼作爲一個大的硬編碼陣列的字節,我可以在應用程序啓動時將其轉換回字符串。
任何人都可以提出任何其他解決方案來解決這個問題嗎?
此外,我忘了提及:我的遊戲的源代碼將obuficated。這是一件不容易的事情,所以它已經很難直觀地瀏覽代碼。我只需要一個很好的解決方案如何隱藏我的加密資源的密碼。
爲什麼你認爲遊戲加密他們的資產?你說「數據」,但是什麼樣的數據?圖片?保存文件?將密鑰嵌入應用程序永遠不會得到合理的保護。我可以使用WinDbg,並在你調用Decrypt或者你調用它的任何地方放一個斷點,看看傳入了什麼鍵。你不需要源代碼來調試應用程序。 – vcsjones
@vcsjones Data =圖像,模型,着色器,資源,默認遊戲數據。 – Krythic
因此,您想要使用唯一的登錄密碼/密鑰來分發離線遊戲來解鎖它嗎?用戶在解鎖遊戲後是否可以更改此密碼?或者這是一次性在單個設備上解鎖?您可以使用許可證管理器。或者您是否希望爲每個發佈的遊戲使用相同的密碼? – Oceans