2013-07-22 40 views
0

我有一個數據處理算法,我將申請我的一個Android應用程序。算法可以通過Java或本機代碼C實現。但是到目前爲止,對於算法實現Java或C更安全,我知道Android Dex文件可以逆向設計。它也適用於C嗎?算法實現更安全嗎?

回答

4

當你在C(native)比java時,代碼安全性是最大的。

「到目前爲止我知道Android Dex文件可以被逆向設計。它是否也適用於C? 」

做這在JAVA

通過使您的代碼pakages圖書館,你可以讓你的java代碼是安全的。即使它的逆向工程或你的apk被破壞了,你的代碼也將不可見,它將會像加密格式一樣。將算法包更改爲庫並添加到項目資產文件夾和構建路徑。

用C

如果你正在做的在C這樣做是其確保一個誰傷了你的apk無法看到你的C代碼。有時它會被看到,但不會是可讀的格式。如果你正在通過C來實現它,它將使得這個過程比在java中更快,並且你將被分配更多的內存來完成這個過程。堆內存不會成爲您代碼的限制。唯一的問題是,由於使用JNI獲取錯誤的機會更多,因此很難在運行時追蹤錯誤。

注意:因爲黑客可以在許多方面完成..我不能給出任何完整的保證..但在大多數方式這是事情..製作你的算法包到庫,並將其添加到項目與buildpath 這樣做的原生,你可以使你的代碼安全地最大限度地延長..

4

如果你想你的算法是完全安全的,保持在你的腦海。

如果您希望您的算法相對安全,請將其保存在您的服務器上。

任何代碼都可以進行反向設計。數十年來,人們一直在反編譯C編碼。口譯員的字節碼,如Java和Dalvik,往往更容易進行反向工程,將其納入更多人的技能組合中。然而,在受保護的是軟件許可的情況下,這往往更受關注。如果您對許可之外的「數據處理算法」感到擔憂,那麼您的平均腳本kiddie不會關心它,而一個真正想知道該算法的競爭者可以計算出它是否可以訪問代碼,無論是用Java,C還是手寫編譯器編寫它。

因此,如果您不想讓人們對您的代碼進行逆向工程,請不要讓他們擁有代碼。將算法保留在服務器上。

如果您對此的迴應是「我不希望我的應用程序對服務器有依賴關係」,那麼您明確指出您的「數據處理算法」並不重要,至少與具有該依賴關係相比。在那個時候,你真的不得不開始提出「數據處理算法」是多麼重要的問題。