如何使Java程序不可提取

时间:2010-09-11 09:54:06

标签: java jar extraction

抱歉,我不太清楚如何说明问题标题。我的问题是这样的,我开发了一个Java程序,我希望将它分发给我的朋友。所以我将它导出到Jar文件,但我不希望他们提取jar文件来查看代码。无论如何都要制作程序,以便没有人可以获得源代码而只是启动程序。

7 个答案:

答案 0 :(得分:11)

您始终可以从已编译的类文件中获取原始代码。但是,通过使用混淆器,您可以使那些希望反编译此类代码的人的生命变得非常困难,因此反编译代码几乎无法读取。以下是您可能希望调查的open-source java obfuscators列表。

答案 1 :(得分:6)

如果计算机可以运行它,人类可以对其进行逆向工程。

答案 2 :(得分:4)

事实是,没有人想要你的源代码。认为将它们排除在外需要付出的努力是非常傲慢的。

你能做的最好的就是混淆。

答案 3 :(得分:3)

  1. 您正在寻找的术语是obfuscation。最终
  2. At best, obfuscation merely makes it time-consuming, but not impossible,
    
         

    对程序进行逆向工程。

    1. 另一种技巧是SaaS。虽然最终使用黑盒技术,SaaS也可以反向工作。
    2. 另一种技术是信任。由于您要将其分发给 朋友 ,因此您可以要求他们不要解压缩jar文件或查看代码。如果他们真的是你的朋友,他们会尊重你的要求。

答案 4 :(得分:2)

Jar文件通常不包含代码。它们通常只包含运行程序所需的.class(字节码)文件。

答案 5 :(得分:0)

您可以在服务器上执行部分程序。基本上,为了执行程序的一些重要的,大的和中心功能,客户端会联系您的服务器来计算此功能。

然后,您可以将客户端分发给每个人,并为自己保留服务器代码。只需保持服务器运行。然后其他人无法访问整个源,但可以执行该软件。

这是唯一确定的方法。其他方式可以通过一些方式以足够的努力来规避。

答案 6 :(得分:0)

您似乎将安装应用程序与可执行文件混淆。而且我也认为你混淆了一个普通的.exe的java jar应用程序。

即便如此,这些都只是仍然可以反编译的代码捆绑,它不像解压缩jar文件那么容易,它被设计为易于提取。

Java被设计为在JVM上运行,因此将它打包在.exe中是一种糟糕的形式,因为它会立即将其锁定到Windows上,这首先打败了Java。所以我会建议反对。

正如大家所说的那样,如果您的程序运行良好并且您的用户喜欢它,他们甚至会想到反编译它是很少见的。但是如果他们想要他们只是一个网络搜索,无论如何(无论语言)。关于商业发行,在大多数情况下,软件被混淆并分发在它的.jar中,具有.exe,.app,.bin等形式的体系结构特定的启动器。不要将这些与实际可执行文件混淆,通常是.jar文件。