2017-09-20 26 views
-3

我使用python編寫了一個遊戲,用於windows。遊戲要求玩家在某個時候購買金幣。該程序會將該硬幣的餘額存儲到一個文件中,但如果用戶在購買後備份該文件,使用金幣然後用備份替換該文件,金幣將被恢復。如何使程序檢測到這一點。程序如何知道原始文件何時被刪除(假設沒有連接到互聯網)我該如何安全地存儲我的遊戲金幣

+0

您能否在儲存關於金幣的信息時將剛纔與硬幣一起購買的信息存儲在同一個文件中?然後恢復備份也會刪除它們的項目。 –

回答

0

如果您想限制離線執行 - 這是沒有辦法的。您可以通過讓人們實際下載代碼本身作爲購買的一部分來限制可用的項目/功能。但是,用戶無法做出完整備份。一旦您將狀態存儲在客戶機上,您將失去控制權。你只能使作弊難/執行復雜,但不能阻止它。

但是,您可以防止恢復硬幣而無需進行其他修改。通過整合貨幣和物品/商店的存儲,您可以確保特定的硬幣映射到某個特定的其他物品。通過這種方式,用戶可以更改購買的內容(恢復備份並再次購買),但它們無法獲得無限的收益。

+0

如果我可以鎖定要複製的文件並只在程序運行時纔打開它,該怎麼辦。是否有可能做到這一點? – Ozichukwu

+0

@Ozichukwu你無法鎖定它。你的應用程序不能做任何用戶不能做的事情,所以無論你做什麼以後「解鎖」它,用戶都可以做同樣的事情。 – viraptor

0

實施SAVEGAME防竊電:

  1. 安裝PyCrypto(跳過此如果已安裝)
  2. 創建,這將是存儲容器類(字符的名稱,硬幣,庫存等將存儲在這裏) 。重要提示:切勿分開存儲貨幣和庫存!
  3. 保存時,醃製該存儲對象。
  4. 加密保存使用PyCrypto.Cipher.AES(最值得信賴)。關鍵是,在大多數情況下,charactername[::-1]
  5. 將其寫入文件。田田!

即使加密是不夠的,在某些情況下。如果你真的想保護你的保存,請使用AES + Cython + DeNuvo。但是,雲節省仍然更安全。

+0

仍然不是100%安全。更好地使用保存雲(Steam Cloud) –

+0

這是混淆,而不是保護。因爲它只是python,所以你可以很容易地查看源代碼。用戶查看源代碼,以相同方式解密容器,更改他們想要的內容,然後再次對其進行加密。田田! – viraptor