簡體   English   中英

Jar文件 - 防止訪問源代碼

[英]Jar File - Prevent Access to Source Code

我想將一個小型Java應用程序移交給一個可運行的jar,但我不希望任何人訪問我的源代碼。 我是否正確地假設jar文件中沒有包含源代碼(.java文件)?

User269799

假設你沒有 java文件放在jar文件中,它們不會神奇地出現:)當然,你可以在jar文件中包含你喜歡的任何東西。 您可以列出要檢查的內容:

jar tvf foo.jar

請注意,Java可以很容易地進行反編譯 - 因此,雖然任何收件人都無法訪問帶有注釋等的實際源代碼,但他們可以非常清楚地看到您的邏輯。 可能希望使用混淆器來幫助保護您的IP。 我個人試圖避免使用混淆器 - 考慮到當我們確實擁有通知和測試的真實來源時,我們大多數人都難以維護代碼,想象一下當你沒有這些東西時有多難啊:)這是你的電話。 只需確保徹底測試混淆代碼 - 可能存在細微問題,尤其是在使用反射時。

Jar文件通常只包含.class文件,它們是java字節碼文件以及資源。 但是,為了使代碼更加安全,您需要關閉調試信息,如果您確實想要安全,請通過混淆器運行它。

編輯 :berry120的評論是對的 - 它們可以包含源文件,但通常它們不包含。 我只想澄清未來的任何讀者。 這取決於您用於生成jar的工具的設置。

你是對的,jar中沒有源代碼(除非你將你的構建系統配置為專門放在那里)。 但是你總是冒着代碼從字節碼反編譯的風險。 一個混淆器可能在這里有所幫助。

是。 通常,jar只包含字節編譯的.class文件。 也就是說,它們也可以包含源代碼 - 它取決於您(或分別是您的工具)放入它們中的內容。

但請注意,反編譯在.class文件上運行得非常好,因此不要使與安全相關的任何內容依賴於代碼混淆技術,例如此類。

如果計算機可以運行它,那么人類可以對其進行逆向工程,對Java來說並不是特別困難。

所以技術保護根本行不通。 您需要以具有約束力的合同或類似形式提供法律保護。 您甚至可以將您的作品置於GPL之下,但付費給您的除外,這足以讓大多數企業避免竊取您的工作。

你想要避免什么情況?

通常沒有,但您可以使用jar -tvf <filename>命令進行檢查。

但是我必須警告你,將大多數.class文件反編譯成合理可讀的java源代碼非常容易。

為了避免這種情況,你必須使用混淆器,但這需要你做一些額外的努力。 (例如RetroGuard 。)

話雖如此,問自己一個問題:“我的代碼真的有價值或特殊,我需要做這一切嗎?” 通常答案是否定的,我們編寫的大多數代碼都沒有什么特別之處。

你是對的,但.class文件可以很容易地被反匯編為java代碼,並且在大多數情況下它非常准確。

如果你真的需要它以確保安全,那么你需要進行模糊處理。

它將取決於您生成.jar的方式,Eclipse確實可以選擇在.jar上包含.java文件,但默認情況下它被禁用,如果需要,您必須激活它。

Jar文件可能包含源(您可以選擇是否包含它),因此不包括源特定不是問題。 您需要注意的是,人們可能會對jar文件中的類文件進行逆向工程。

你可以繞過這個混淆器,例如yGuard ,它很容易作為一個螞蟻任務掛鈎,但正如其他人所說,你的代碼真的那么重要,沒有人能看到它嗎?

.jar文件不包含源代碼,只包含字節碼(.class)。 但由於字節代碼與機器無關,因此可以非常容易地進行反編譯。 無法阻止他人訪問您的源代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM