2012-03-26 131 views
35

我正在開發一個android應用程序,並計劃發佈它(付費應用程序)。我聽說盜版Android應用程序非常容易(比iPhone更容易)。我想知道你的經驗,或者你知道什麼,如何提高我的應用程序的安全性?我知道我永遠無法100%獲得它,但我想讓人們更難以盜用它或非法分發它 任何想法,經驗,評論,你可以分享?如何保護我的應用程序免受盜版

+0

你將不得不使用一堆技術,你仍然無法完全阻止它。在開始時使用'google play licensing'和'code obfuscation'。我會建議檢查流行的盜版網站,並要求點擊託管商將文件下載,但我不確定他們是如何處理這些問題的。它會很快回到其他任何地方,這幾乎是絕望的。 – stefan 2012-03-26 00:42:31

+0

我會建議使用C++構建應用程序的核心部分,並使用android NDK,您將使用網絡來驗證有效的買家。 – 2013-06-18 10:23:38

回答

64

我爲Android發佈了一款免費的反惡意軟件應用程序,並確保沒有人入侵它,這對它的成功至關重要。 Android Market上的應用程序最大的威脅包括泄漏的源代碼,複製/分發的付費應用程序和重新密鑰。我將在下面解釋每種方法並解決它們。

首先,this paper描述瞭如何反編譯Android應用程序,方法是解壓縮編譯代碼並查看源代碼。您將無法阻止這種情況發生在您的應用中。期。有意願的人可以隨時查看你的源代碼,如果他們得到你的apk的副本(很容易在一個根深蒂固的手機上獲得)。好消息是,您可以混淆代碼中的重要部分,這使得逆向工程變得更加困難。 Proguard是Android提供的一種工具,可讓您在打包過程中對代碼進行混淆處理(更難以閱讀)。但是,爲了防止重要的代碼被讀取,您需要將所有易受攻擊的方法或變量移動到不是ActivityServiceBroadcastReceiver的文件。有關完整的事實,請閱讀文檔。

爲了保護您的應用程序非法複製和分發,Google Play提供了一些licensing options。不幸的是,LVL並不完全安全。有關如何破解它(Google Play前)的詳細操作方法,請訪問here

最後,上面鏈接的文章以及衆多的學術文章和在線博客描述了一旦源代碼(甚至是混淆的源代碼)泄漏,一旦只能添加一些自己的惡意代碼,就會退出該應用程序,並在Android Market上發佈。這裏的好消息是,除非您的android許可證密鑰密碼很容易被猜出,或者如果您將其泄露給其他人,攻擊者將無法使用相同的許可證密鑰發佈應用程序。這不僅可以保護您免受責難,還會使惡意應用程序無法訪問您的原始應用程序中可用的數據(如SharedPreferences)。

總而言之,要真正從盜版保護應用程序的最佳方式是正確配置和使用Proguard的谷歌播放執照,並簽署你一個非常安全的許可證密鑰最終的apk。

+4

哇..偉大的信息和非常詳細的答案。我喜歡它被一篇論文證明的事實。我會按照你的建議。我仍然鼓勵人們分享他們的經驗 – Snake 2012-03-26 15:49:32

+6

我想指出,你不需要根植設備來獲得APK副本。 'ADB pull com.example.coolappdude'。另外,Proguard是一個Java字節碼混淆器。製造商ProGuard有一個非自由程序DexGuard,它是一個Dalvik字節碼混淆器。可能考慮一個或另一個取決於你的偏執級別。 – CatShoes 2013-02-07 19:48:46

+0

Dan Galpin在I/O 2011上做了一次精彩的演講,探討如何讓LVL更安全:http://www.youtube.com/watch?v=TnSNCXR9fbY – keyboardr 2013-03-01 02:57:32

6

看看谷歌播放許可框架。

http://developer.android.com/guide/market/licensing/index.html

這是你最好的選擇。

谷歌Play許可是基於網絡的服務,可以讓一個 應用程序查詢一個值得信賴的谷歌Play授權服務器,以確定 的應用是否被許可爲當前設備用戶。許可服務基於Google Play服務器的能力來確定給定用戶是否被許可使用給定應用程序的 。如果用戶是該應用程序的記錄購買者,則Google Play會認爲該用戶是被許可的。

+0

我聽說谷歌授權(通過應用程序簽名)確實毫無價值。有自動工具,下載的應用程序,刪除許可證,並簽署一個新的用戶點擊一下(我在一個論壇上閱讀它)..我將明確使用許可證,但我需要另一層防線.. – Snake 2012-03-26 00:35:26

+1

應用程序簽名機制已棄用。新的許可證制度是基於網絡的,並且非常穩固。 – 2012-03-26 00:39:58

8

如果應用程序被盜版,您可以添加篡改檢查與混淆結合以提醒用戶/禁用功能/向服務器報告。我使用DexGuard進行硬化混淆處理。

篡改檢查

  • 安裝的應用程序 - 使用軟件包管理器確保安裝程序是播放/亞馬遜的應用程序商店
  • 模擬器檢查 - 檢查蛛絲馬跡系統屬性的應用程序正在對模擬器運行的開發之外可能表明攻擊/篡改
  • 調試的檢查 - 使用軟件包管理器檢查調試的標誌,這應該是關閉的產品,以便能夠表明攻擊/篡改
  • 簽名證書檢查 - 使用軟件包管理器校驗應用程序與開發人員證書籤名(如果有人拆包和重新包裝/辭職的應用程序,這將被打破)

更新:因爲回答這個問題,我已經寫上篡改檢測更detailed article

+0

謝謝,你有代碼示例嗎?我使用proguard進行混淆 – Snake 2014-03-20 00:46:15

+0

本書有一些示例http://www.packtpub.com/android-security-cookbook/book *免責聲明我編寫了強化章節*您可以在本書的支持部分免費下載代碼示例網站。 – scottyab 2014-03-20 08:46:25

+0

@scottyab這不會顯着增加合法用戶在付費後無法使用該軟件的可能性嗎? – 2014-03-27 21:47:35

相關問題