2013-07-24 17 views
1

每當我構建我的應用程序時,所有類(邏輯上)都會出現在出現它的.jar中。 以及將信息保存到我的MYSQL服務器(用於連接應用程序)的類。但我不想讓這些信息公開可見!在.jar中隱藏一個類

如何「隱藏」此代碼或「隱藏」類?

謝謝!

+1

這可能意味着該應用程序不應該直接跟數據庫。 –

+0

簡短的回答是你不能。無論你做什麼,別人都可以找到你的數據。無論您如何選擇加密,都可以找到您用於解密的代碼,因此可以自行解密。類混淆器會有所幫助,但它不會真正安全;一個有決心的人仍然可以在不到一天的時間內提取信息。唯一的安全解決方案不是將登錄信息嵌入到應用程序中,而是讓用戶輸入該信息。 – VGR

+0

這意味着我的用戶需要知道數據庫的pw,模式等等。我不認爲這是這個想法:P – Kraishan

回答

1

我認爲你的意思是你不想讓別人在你的jar文件中用你的.class進行逆向工程。有很多反編譯器可以做到這一點。 因此,您需要使用混淆器實用程序對代碼進行混淆。

混淆的過程會將字節碼轉換爲邏輯 等效版本,這對於反編譯器極其難以挑選 是非常困難的。請記住,反編譯過程非常複雜,不能輕易'調整'以繞過混淆的 代碼。本質上,過程如下:使用常規編譯器(即JDK)

  • 運行混淆,在編譯後的類文件傳遞作爲參數

    1. 編譯Java源代碼。結果將是一個不同的輸出文件(可能與 不同的擴展名)。

    該文件在重命名爲.class文件時,功能上與原始字節碼相同,爲 。它不會影響性能 ,因爲虛擬機仍然能夠解釋它。

    下面是更加詳細地描述和 這個過程中的一篇文章介紹早期的混淆,米黃:

    http://www.javaworld.com/javaworld/javatips/jw-javatip22.html

  • +0

    我使用proguard進行混淆處理。然而,類(ConnectionClass)仍然可見,因爲我將值賦給字符串。 – Kraishan