使用嵌入其他Jar文件的方法混淆Jar文件

3
我们假设有一个包含Java应用程序的Jar文件,它内部包含它所依赖的库的Jar文件,例如jdbc或其他第三方jar。

如何使用免费软件来混淆它?我的意思是混淆您的代码并保留Jars不变。

我尝试了Proguard,但没有成功。即使作者在sourceforge论坛上告诉我这是不可能的。

但是您可以通过手动进行丑陋的hack来重命名jar文件为zip并操纵其中的数据来实现它,那么为什么软件不能做到呢?

3个回答

2

您可以使用Jar Jar Links从多个jar包创建一个单独的jar包。 然后,您可以使用ProGuard处理结果。


2
多么糟糕的名字,但无论如何它都会检查它。 - Saiyine
@Saiyine,你做到了吗? - Nikolay Kuznetsov

0

假设您已经有了某种构建脚本来编译源代码,将其与其他JAR文件(One-Jar / Fat Jar等)打包并构建您的JAR文件。

您应该能够在编译和打包之间插入混淆任务。

如果您选择的混淆工具只接受JAR输入,则应该能够独立地编译、打包和混淆您的代码。之后,让您的脚本解压混淆文件并进行打包。


-2

别浪费时间了。任何人都可以反编译你的混淆代码,你所做的唯一事情就是让那些想要调试软件问题的合法用户感到沮丧。

混淆是一个对法律问题的技术解决方案(而且还不好)。


2
如果唯一目的是保护您的知识产权,那么您说得对,但请记住混淆还有其他好处。如果 JAR 文件的占用空间很重要,混淆通常会使其更小,并且大多数情况下会进行更多的压缩。 - willcodejavaforfood
8
这个说法有一定的道理,但涉及到努力的问题。未经混淆处理的JAR文件在反编译时与原始源代码几乎完全相同。而经过深度混淆的JAR文件将很难被反编译, 需要投入更多的努力才能提取出可用的源代码。这并不是最优解决方案,但肯定比什么都没有更能阻止普通攻击者。 - James Van Huis
1
混淆代码会产生包含混淆的包名/类名/方法名的堆栈跟踪信息。幸运的是,大多数混淆器都包含堆栈跟踪反混淆工具。 - James Van Huis
4
@Saiyine说:“我真的不这么认为。你只需要让项目中的所有利益相关者意识到它并不是100%安全的解决方案。仅仅因为你家门的锁可以被撬开,并不意味着你应该放弃,把门留着敞开的。” - James Van Huis
代码混淆如何让合法的终端用户感到沮丧? - Phillip
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接