我有一個數據處理算法,我將申請我的一個Android應用程序。算法可以通過Java或本機代碼C實現。但是到目前爲止,對於算法實現Java或C更安全,我知道Android Dex文件可以逆向設計。它也適用於C嗎?算法實現更安全嗎?
回答
當你在C(native)比java時,代碼安全性是最大的。
「到目前爲止我知道Android Dex文件可以被逆向設計。它是否也適用於C? 」
做這在JAVA
通過使您的代碼pakages圖書館,你可以讓你的java代碼是安全的。即使它的逆向工程或你的apk被破壞了,你的代碼也將不可見,它將會像加密格式一樣。將算法包更改爲庫並添加到項目資產文件夾和構建路徑。
用C
如果你正在做的在C這樣做是其確保一個誰傷了你的apk無法看到你的C代碼。有時它會被看到,但不會是可讀的格式。如果你正在通過C來實現它,它將使得這個過程比在java中更快,並且你將被分配更多的內存來完成這個過程。堆內存不會成爲您代碼的限制。唯一的問題是,由於使用JNI獲取錯誤的機會更多,因此很難在運行時追蹤錯誤。
注意:因爲黑客可以在許多方面完成..我不能給出任何完整的保證..但在大多數方式這是事情..製作你的算法包到庫,並將其添加到項目與buildpath 或這樣做的原生,你可以使你的代碼安全地最大限度地延長..
如果你想你的算法是完全安全的,保持在你的腦海。
如果您希望您的算法相對安全,請將其保存在您的服務器上。
任何代碼都可以進行反向設計。數十年來,人們一直在反編譯C編碼。口譯員的字節碼,如Java和Dalvik,往往更容易進行反向工程,將其納入更多人的技能組合中。然而,在受保護的是軟件許可的情況下,這往往更受關注。如果您對許可之外的「數據處理算法」感到擔憂,那麼您的平均腳本kiddie不會關心它,而一個真正想知道該算法的競爭者可以計算出它是否可以訪問代碼,無論是用Java,C還是手寫編譯器編寫它。
因此,如果您不想讓人們對您的代碼進行逆向工程,請不要讓他們擁有代碼。將算法保留在服務器上。
如果您對此的迴應是「我不希望我的應用程序對服務器有依賴關係」,那麼您明確指出您的「數據處理算法」並不重要,至少與具有該依賴關係相比。在那個時候,你真的不得不開始提出「數據處理算法」是多麼重要的問題。
- 1. 哪種算法更安全?
- 2. 用django auth實現sso。這安全嗎?
- 3. 以下實現線程安全嗎?
- 4. 單線程實現線程安全嗎?
- 5. 是LinkedList實現.Net線程安全嗎?
- 6. 如何在我的代碼安全實現的url安全嗎?
- 7. 實時線程安全緩衝算法
- 8. 這是用ajax實現登錄的安全/好方法嗎?
- 9. MySql AES_Encrypt更安全的算法
- 10. PHP實現stackblur算法可用嗎?
- 11. 有比serialize()更安全的方法嗎?
- 12. Angular2 - Loopback - 安全實現
- 13. 安全刪除java實現
- 14. WCF安全模型實現
- 15. API安全實現PHP
- 16. Java AES安全實現
- 17. 在Fiware中實現安全
- 18. 實現Spring WS安全
- 19. Page.IsPostBack的安全實現?
- 20. 該算法是現有的實時系統算法嗎?
- 21. web.config比類更安全嗎?
- 22. CodeFights:Dijkstra算法實現
- 23. Kruskal算法實現
- 24. 實現LayoutAlgorithm.SINGLE_COLUMN算法?
- 25. 實現Rc4算法
- 26. 實現LRU算法
- 27. CRC算法實現
- 28. 實現Strassen算法
- 29. 激活碼算法 - 安全
- 30. A5/1安全算法