2009-09-05 65 views
0

我已經做了一個java項目,並希望將其交付給客戶端,但我不想將其作爲jar文件提供,因爲客戶端可以通過解壓jar文件輕鬆地看到源代碼。如何打包java項目?

如何打包我的java項目,以便客戶端無法查看源代碼或無法更改源代碼?

還有一件事,我可以整合一個關鍵功能,以便客戶端只能通過首先使用我提供的密鑰註冊該軟件來訪問該軟件嗎?

其次,我可以整合另一個功能,通過該功能軟件只能通過該鍵在單臺機器上運行?

請記住,軟件應該仍然具有跨平臺功能,如果不可能,那麼我如何在Debian Linux上製作它,就像我在Windows上製作的一樣。

回答

2

你的第一個點。爲什麼不只是打亂類文件?這些都是字節碼,因此客戶端將無法查看源代碼。

至於提供一個關鍵。這是可以做到的,並且有許多圖書館允許這樣做,但要小心,至少據我所知,尚未開發尚未破解的DRM系統。大多數用戶不喜歡軟件限制他們可以做的事情。同樣的觀點適用於你的第三個問題。

+0

類文件可以很容易地反編譯與Decompiler可用的免費軟件也。我喜歡「adatapost」建議的代碼混淆。 您能否詳細解釋我提供關鍵功能的庫? – 2009-09-05 12:15:42

+0

混淆代碼也可以很容易地被反向設計,如果人們真的想要它。在一天結束時,除非您保持對程序的控制,即通過網絡接口(無論是網絡還是其他方式),否則您不能保證客戶端不會干擾它。即使如此...... 至於圖書館,如果你真的想要一個......看看http://www.javalicensemanager.com/ – AAA 2009-09-05 12:23:33

1

有一些簡單的事情可以使客戶端難以掌握源代碼並強制執行每個主機(等等)許可。例如,混淆器使逆向工程字節碼文件變得更加困難,並且許可證管理器支持基於您生成和提供的「密鑰」的一系列限制。

問題是,這些保護你的人不會對那些決心顛覆限制的人施加壓力。例如,沒有混淆器可以阻止有人找出您的代碼調用許可證管理器的位置,並且一旦他們知道他們可以修改代碼來顛覆任何許可證檢查。對於整個執行平臺的鎖定(例如,打開客戶端運行調試器,讀取物理設備的能力等等)的缺點,您無法對此做任何事情。

更可行的策略是在軟件許可證中包含適當的保護措施,您需要客戶端進行簽名。並承認如果他們故意違反許可協議,您可能需要將客戶提交法院。

+0

非常有幫助的答案。感謝那。 由於某些東西比沒有東西好,所以你可以更詳細地告訴我如何使用許可證管理器。 – 2009-09-05 13:05:39