我正在開發一個android應用程序,並計劃發佈它(付費應用程序)。我聽說盜版Android應用程序非常容易(比iPhone更容易)。我想知道你的經驗,或者你知道什麼,如何提高我的應用程序的安全性?我知道我永遠無法100%獲得它,但我想讓人們更難以盜用它或非法分發它 任何想法,經驗,評論,你可以分享?如何保護我的應用程序免受盜版
回答
我爲Android發佈了一款免費的反惡意軟件應用程序,並確保沒有人入侵它,這對它的成功至關重要。 Android Market上的應用程序最大的威脅包括泄漏的源代碼,複製/分發的付費應用程序和重新密鑰。我將在下面解釋每種方法並解決它們。
首先,this paper描述瞭如何反編譯Android應用程序,方法是解壓縮編譯代碼並查看源代碼。您將無法阻止這種情況發生在您的應用中。期。有意願的人可以隨時查看你的源代碼,如果他們得到你的apk的副本(很容易在一個根深蒂固的手機上獲得)。好消息是,您可以混淆代碼中的重要部分,這使得逆向工程變得更加困難。 Proguard是Android提供的一種工具,可讓您在打包過程中對代碼進行混淆處理(更難以閱讀)。但是,爲了防止重要的代碼被讀取,您需要將所有易受攻擊的方法或變量移動到不是Activity
,Service
或BroadcastReceiver
的文件。有關完整的事實,請閱讀文檔。
爲了保護您的應用程序非法複製和分發,Google Play提供了一些licensing options。不幸的是,LVL並不完全安全。有關如何破解它(Google Play前)的詳細操作方法,請訪問here。
最後,上面鏈接的文章以及衆多的學術文章和在線博客描述了一旦源代碼(甚至是混淆的源代碼)泄漏,一旦只能添加一些自己的惡意代碼,就會退出該應用程序,並在Android Market上發佈。這裏的好消息是,除非您的android許可證密鑰密碼很容易被猜出,或者如果您將其泄露給其他人,攻擊者將無法使用相同的許可證密鑰發佈應用程序。這不僅可以保護您免受責難,還會使惡意應用程序無法訪問您的原始應用程序中可用的數據(如SharedPreferences
)。
總而言之,要真正從盜版保護應用程序的最佳方式是正確配置和使用Proguard的,谷歌播放執照,並簽署你一個非常安全的許可證密鑰最終的apk。
哇..偉大的信息和非常詳細的答案。我喜歡它被一篇論文證明的事實。我會按照你的建議。我仍然鼓勵人們分享他們的經驗 – Snake 2012-03-26 15:49:32
我想指出,你不需要根植設備來獲得APK副本。 'ADB pull com.example.coolappdude'。另外,Proguard是一個Java字節碼混淆器。製造商ProGuard有一個非自由程序DexGuard,它是一個Dalvik字節碼混淆器。可能考慮一個或另一個取決於你的偏執級別。 – CatShoes 2013-02-07 19:48:46
Dan Galpin在I/O 2011上做了一次精彩的演講,探討如何讓LVL更安全:http://www.youtube.com/watch?v=TnSNCXR9fbY – keyboardr 2013-03-01 02:57:32
看看谷歌播放許可框架。
http://developer.android.com/guide/market/licensing/index.html
這是你最好的選擇。
谷歌Play許可是基於網絡的服務,可以讓一個 應用程序查詢一個值得信賴的谷歌Play授權服務器,以確定 的應用是否被許可爲當前設備用戶。許可服務基於Google Play服務器的能力來確定給定用戶是否被許可使用給定應用程序的 。如果用戶是該應用程序的記錄購買者,則Google Play會認爲該用戶是被許可的。
我聽說谷歌授權(通過應用程序簽名)確實毫無價值。有自動工具,下載的應用程序,刪除許可證,並簽署一個新的用戶點擊一下(我在一個論壇上閱讀它)..我將明確使用許可證,但我需要另一層防線.. – Snake 2012-03-26 00:35:26
應用程序簽名機制已棄用。新的許可證制度是基於網絡的,並且非常穩固。 – 2012-03-26 00:39:58
如果應用程序被盜版,您可以添加篡改檢查與混淆結合以提醒用戶/禁用功能/向服務器報告。我使用DexGuard進行硬化混淆處理。
篡改檢查
- 安裝的應用程序 - 使用軟件包管理器確保安裝程序是播放/亞馬遜的應用程序商店
- 模擬器檢查 - 檢查蛛絲馬跡系統屬性的應用程序正在對模擬器運行的開發之外可能表明攻擊/篡改
- 調試的檢查 - 使用軟件包管理器檢查調試的標誌,這應該是關閉的產品,以便能夠表明攻擊/篡改
- 簽名證書檢查 - 使用軟件包管理器校驗應用程序與開發人員證書籤名(如果有人拆包和重新包裝/辭職的應用程序,這將被打破)
更新:因爲回答這個問題,我已經寫上篡改檢測更detailed article。
- 1. 保護我的Android(英特爾XDK)應用免受盜版
- 2. 如何保護我的API服務免受api-keys盜版
- 3. 如何保護我的應用程序,打擊盜版
- 4. Android Market如何保護我的應用程序免受分發?
- 5. 保護軟件免受海盜侵害
- 6. 保護網站免遭盜版
- 7. 如何保護日誌免受應用程序崩潰?
- 8. 在開發過程中保護源代碼免受盜竊
- 9. 如何保護我的.NET程序集免受反編譯?
- 10. 如何保護以盜版方式銷售的網絡應用程序?
- 11. 如何爲Android免費應用程序提供版權保護
- 12. 有沒有辦法保護自己免受Mercurial身份盜用?
- 13. 如何保護Android應用程序免遭盜竊和應用程序本身的修改?
- 14. 受密碼保護的應用程序
- 15. 保護知識產權免受海外承包商盜竊
- 16. 保護Android應用程序免受網絡嗅探
- 17. 保護我的應用程序免受外部API更改的方法
- 18. 如何保護密鑰免受其他應用程序的侵害?
- 19. 如何使用iXGuard保護iOS應用程序免受攻擊者攻擊
- 20. 保護Android手機免遭盜竊
- 21. 盜鏈保護
- 22. 盜鏈保護
- 23. 阻止盜版應用程序的人
- 24. 如何在不使用數據庫的情況下保護C#中的Windows應用程序免受盜版侵害?
- 25. 如何保護PHP免受揹負?
- 26. 如何保護WebRTC免受MitM攻擊?
- 27. 我們如何保護我們的WordPress免受黑客侵害?
- 28. 我如何保護我的應用程序,並保護我的Sqlite數據庫在應用程序
- 29. 保護window.opener免受更改
- 30. 如何保護我免受AWS Lambda濫用?
你將不得不使用一堆技術,你仍然無法完全阻止它。在開始時使用'google play licensing'和'code obfuscation'。我會建議檢查流行的盜版網站,並要求點擊託管商將文件下載,但我不確定他們是如何處理這些問題的。它會很快回到其他任何地方,這幾乎是絕望的。 – stefan 2012-03-26 00:42:31
我會建議使用C++構建應用程序的核心部分,並使用android NDK,您將使用網絡來驗證有效的買家。 – 2013-06-18 10:23:38