繁体   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