【问题标题】:Java obfuscators [closed]Java混淆器[关闭]
【发布时间】:2008-11-21 23:21:50
【问题描述】:

我正在寻找一个好的 Java 混淆器。

我对以下 Java 混淆器进行了初步研究:proguard、yguard、retroguard、dasho、allatori、jsshrink、smokescreen、jobfuscate、marvin、jbco、jode、javaguard、jarg、joga、cafebabe、donquixote、mwobfu、bbmug 、zelix klassmaster、sandmark、jcloak、thicket、blufuscator 和 java 代码保护器。

我尝试了 proguard,它有一个非常好的 GUI,看起来非常稳定,并且似乎是最受欢迎的,但它似乎不喜欢对引用的 jar 文件进行一些枚举(不在我试图混淆的代码中)这很奇怪。 Yguard 似乎需要与 ant 进行一些交互,我对此不太了解。

什么是好的java混淆器?它不需要是免费的,它只需要运行良好且易于使用。

【问题讨论】:

  • 也很重要:我有一个相当大的项目,其中包括反射和枚举
  • 您能解释一下为什么需要混淆器吗?如果你混淆它,你将无法获得好的堆栈跟踪......
  • 我需要一个混淆器,因为我工作的项目想要保护其代码免受竞争对手的侵害
  • 您还需要一个混淆器/收缩器,因为它通常会使您的可分发 JAR 更小。

标签: java obfuscation


【解决方案1】:

我在所有发布版本中大量使用ProGuard,我发现它非常棒。我怎么推荐都不够!

已经多次遇到由它的优化引起的模糊错误,我现在全面禁用优化 - 从那以后就没有遇到过由 ProGuard 引起的问题。不过,公平地说,这些都是很久以前的版本 - YMMV。

我以前使用GUI来启动配置,然后我自己编辑文本配置,这真的很简单。这些天我手动进行配置。

我有相当复杂的项目,所有这些项目都涉及动态加载和反射。我还大量使用反射来实现回调。 ProGuard 已经很好地解决了这些问题。

编辑:我们也将 DashO Pro 用于我们的一种产品 - 我研究了它来包装我负责的产品,并得出结论认为它的配置过于复杂和复杂;也将它集成到构建脚本中似乎有点痛苦。但同样,公平地说,这是大约 2001 年......所以在当前版本中可能会更好。

【讨论】:

  • DashO 构建脚本支持包括命令行界面和 Ant 任务。
【解决方案2】:

这篇文章中提供了很多免费和商业工具的链接

"Protect Your Java Code - Through Obfuscators And Beyond"

作者还讨论了字节码混淆的优缺点

【讨论】:

  • +1 用于链接精彩文章。
【解决方案3】:

ProGuard 有什么问题? (this questionthis one 都推荐)。

troubleshooting中有一段是关于枚举器的,不过好像都考虑到just fine了。

但是,即使现代混淆器可以检测并在某种程度上调整它们混淆的代码中的反射用法,混淆也会破坏一些反射尝试。

【讨论】:

  • 问题是应用程序使用外部 jar 中的代码,我已经在自己的 jar 代码中“保留”了使用枚举的文件,但在运行时我仍然遇到内部问题与枚举相关的外部 jar 代码。我已尽我所能按照 proguard 进行故障排除。
  • 你有 Proguard 生成的错误信息吗?
  • 是的,我将其作为答案发布在此线程中
  • 嗨 VonC,我在使用 proguard 时遇到问题。我有 3 个类文件,我将它们打包到一个 jar 中(带有清单)。现在,当我发出命令时: java -jar myjar.jar @myjar.pro 我希望输出 jar 像 myjar.pro 中所述的 myjar_out.jar。但是,该命令运行 jar 而不是创建输出 jar。
  • 根据proguard.sourceforge.net/manual/usage.html,你不应该输入java -jar proguard.jar @myjar.pro吗?因为我可以确认java -jar myjar.jar ...会执行myjar.jar中的主类。
【解决方案4】:

我在商业应用程序中使用了 Zelix Klassmaster 数年,发现它非常出色。我在混淆代码上投入了很多资源,但无法“破解”它。很贵,但是很好。

我只是在我的版本太旧以至于升级成本很高时才停止使用它。我的需求发生了变化,我真的不需要再混淆这些类了。但是,如果再次出现需要,我会付钱并立即使用。

干杯,

-理查德

【讨论】:

【解决方案5】:

我们使用 Zelix Klassmaster 已有几年了,我可以推荐它。

【讨论】:

  • 同意你的看法。另见:stackoverflow.com/a/26717791/2132826
  • 是否也可以混淆双引号字符串?我们目前在 android studio.but 中使用 proguard,但存在一些限制。这就是为什么,我们正在寻找其他工具 dexguard 商业,klassmaster。
  • 是的,AFAIK。从来没有遇到过双引号字符串的任何问题。
【解决方案6】:

我使用并建议 Zelix - 100% - 非常坚固和强大的保护

【讨论】:

  • 是否也可以混淆双引号字符串?我们目前在 android studio.but 中使用 proguard,但存在一些限制。这就是为什么,我们正在寻找其他工具 dexguard 商业,klassmaster。
猜你喜欢
  • 2011-02-02
  • 2012-08-22
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 2010-11-08
  • 2013-02-19
相关资源
最近更新 更多