2012-11-06 68 views
1

可能重複:
How to encrypt a .jar file加密Android代碼?

我知道迷惑,但它的作用只是使代碼難以理解。它並沒有真正加密代碼。有沒有加密Android代碼的方法?或者有什麼替代方法可以讓代碼在反編譯時更加無法恢復?

我問這個問題,知道我在找什麼是可能的。現在,我的想法表明,加密代碼是不可能的,因爲如果我們加密它,Dalvik也無法理解代碼並運行它。但我並不確定。這可能是我不知道的。

請發表您對此有何看法或有任何建議?另外,請考慮一個財務應用程序,其中有權訪問人類可讀代碼意味着能夠了解後端財務流程的流程。謝謝!

+0

*「請發表您對此有何看法」*我認爲這很愚蠢。 1)沒有人想竊取你的代碼。 2)如果應用程序。事實證明這是一個'殺手級應用程序',如果你有一羣人描述輸入和輸出,那麼通常會得到一個更好的克隆,然後是一羣程序員對它們進行編程。 - 它更便宜,更好,合法。 –

+0

@AndrewThompson:我不關心有人偷代碼。我問了上面的問題,因爲我關心其他人可以通過閱讀代碼獲得哪些敏感信息。 – Arci

+0

@Arci總會有人冒你的代碼被逆向工程並理解它是如何工作的。首先假設代碼將被反編譯和研究,並盡力設計保護其用戶及其數據的軟件*無論如何*。如果一個系統是安全的,它的設計應該可以公開而不會影響系統或用戶。 – acj

回答

1

有不同的努力,讓生活標準DEX反編譯工具更難,通過隱藏代碼,將虛擬指令,等等。這些都是非常研究階段ATM,但你可以在網上找到篇關於它的介紹,一些示例工具。

ProGuard的作者還有DexGuard(不是免費的),它可以對字符串進行加密(標準模糊處理不會),使得難以在反編譯的代碼中搜索事物。我沒有親自使用它,但你可能想嘗試一下。

最終,爲了能夠運行一些你必須解密/解擾/所以你可以把它餵給虛擬機。如果您完全控制了設備(即,根特權和物理訪問),則可以轉儲內存,在系統庫中引入掛鉤等,並獲取實際的可運行代碼。正如其他人所建議的那樣,如果您確實具有敏感的代碼,它應該存在於您的服務器上。

+0

感謝您的評論!我將更多地研究DexGuard! :)如果它可以加密字符串,它會讓生活變得更容易。這是我第一次聽說DexGuard。除了DexGuard之外,有沒有一種可以加密Android源代碼的工具?或者,網絡上的可用工具只能混淆代碼而不加密它們? – Arci

+1

查看第一段,有實驗工具,但那些實際項目不適合。 –

+0

好的。謝謝! :) 得到它了。 – Arci

1

根據定義,機器必須能夠讀取您的代碼。因此,任何有機器的人都可以閱讀你的代碼。

唯一的選擇是例如強迫用戶聯繫您的第三方網站,並以某種方式從您那裏獲取信息。

+0

是的,根據定義,任何擁有機器的人都可以閱讀代碼。但這是因爲代碼是機器可讀的。有沒有辦法讓人不可讀?混淆增加了理解代碼的難度。但這還不夠。有沒有更好的方法來隱藏黑客的代碼?我正在考慮加密代碼,但是有這樣的事情嗎?請注意,我指的是Android應用程序。 – Arci

+0

鑑於黑客可以運行該程序,不,沒有這樣的事情。 –