每當我構建我的應用程序時,所有類(邏輯上)都會出現在出現它的.jar中。 以及將信息保存到我的MYSQL服務器(用於連接應用程序)的類。但我不想讓這些信息公開可見!在.jar中隱藏一個類
如何「隱藏」此代碼或「隱藏」類?
謝謝!
每當我構建我的應用程序時,所有類(邏輯上)都會出現在出現它的.jar中。 以及將信息保存到我的MYSQL服務器(用於連接應用程序)的類。但我不想讓這些信息公開可見!在.jar中隱藏一個類
如何「隱藏」此代碼或「隱藏」類?
謝謝!
我認爲你的意思是你不想讓別人在你的jar文件中用你的.class進行逆向工程。有很多反編譯器可以做到這一點。 因此,您需要使用混淆器實用程序對代碼進行混淆。
混淆的過程會將字節碼轉換爲邏輯 等效版本,這對於反編譯器極其難以挑選 是非常困難的。請記住,反編譯過程非常複雜,不能輕易'調整'以繞過混淆的 代碼。本質上,過程如下:使用常規編譯器(即JDK)
該文件在重命名爲.class文件時,功能上與原始字節碼相同,爲 。它不會影響性能 ,因爲虛擬機仍然能夠解釋它。
下面是更加詳細地描述和 這個過程中的一篇文章介紹早期的混淆,米黃:
http://www.javaworld.com/javaworld/javatips/jw-javatip22.html
我使用proguard進行混淆處理。然而,類(ConnectionClass)仍然可見,因爲我將值賦給字符串。 – Kraishan
這可能意味着該應用程序不應該直接跟數據庫。 –
簡短的回答是你不能。無論你做什麼,別人都可以找到你的數據。無論您如何選擇加密,都可以找到您用於解密的代碼,因此可以自行解密。類混淆器會有所幫助,但它不會真正安全;一個有決心的人仍然可以在不到一天的時間內提取信息。唯一的安全解決方案不是將登錄信息嵌入到應用程序中,而是讓用戶輸入該信息。 – VGR
這意味着我的用戶需要知道數據庫的pw,模式等等。我不認爲這是這個想法:P – Kraishan