2011-12-13 29 views
0

我正在對我的Android應用程序進行最後的接觸。該應用程序是一個完整的網絡遊戲,所以它在運行時總是使用互聯網。我想阻止某人從手機中提取.apk文件,反編譯代碼,然後更改和擴展我的課程以對我的服務器做壞事。下面是應用程序如何在網絡設置:Android黑客預防

  • 客戶端連接到
  • 服務器發送客戶端,用於加密
  • 服務器和客戶端基於加密的數據通信的「會話密鑰」服務器他們共享的密鑰

現在,我擔心有人會反編譯我的代碼並將其更改,以便他們可以在遊戲中做任何他們想做的事情。有沒有辦法確保課程沒有改變?有沒有辦法在運行時檢查.class文件的大小?有人有主意嗎?

+4

運行遊戲,無需客戶端 - *任何*的機會比較安全的方法方面的修改是運行服務器上的整個遊戲邏輯,並只將最終的視圖發送給客戶端顯示。 – 2011-12-13 21:36:26

回答

3

無論你如何處理你的代碼,潛在的攻擊者都能夠以任何方式改變它,或者他認爲可行。你基本上不能保護你的應用程序不被修改。並且您放入的任何保護都可以禁用/刪除。

雖然你可以做不同的技巧來使「黑客」更難。例如,使用模糊處理(如果它的Java代碼)。這通常會顯着減緩逆向工程。

2

正如大家所說,正如你可能知道的,沒有100%的安全性。不過谷歌內置Android版本的地方是ProGuard

0

如果您完全使用Java來完成您的遊戲,您可以使用ProGuard對應用程序代碼進行模糊處理,因此當它被黑客轉化爲Smali時,代碼對於人類來說非常難以閱讀。

如果您有包括共享庫的選項,您可以在C++來驗證文件大小和集成所需的代碼等