如何防止我的类被反编译?

4

我不希望我的课程被反编译。

我阅读了一些文章,并发现了一个专利网站Zelix KlassMaster

市场上是否有类似的免费工具可用..

8个回答

5
据我所知,没有具备相同功能的免费工具。在我看来,将ProGuard和Stringer Java Obfuscator混合使用是保护Java和Android应用程序最好且最便宜的方式。 注:我是Licel LLC的CEO,也是Stringer Java Obfuscator的开发者。

3
如果您与Stringer有关联,重要的是要提及。http://stackoverflow.com/faq#promotion - Tom

4

Proguard是最好的免费开源混淆器。混淆器可以将您的类、字段和方法名称混淆,使得反编译代码变得困难。

Zelix Klassmaster是一款商业混淆器,是商业领域中最好的之一。它还具有一些额外功能来加密字符串常量,以便在反编译时字符串不可见。还有一些其他商业工具,如yguard、DashO-pro、Allatori和Smokescreen等。


2
话虽如此,完全防止反编译是不可能的。混淆是你所能做的最好的事情。 - Louis Wasserman
真的。此外,混淆本身在具有相互依赖的多个模块的大型项目中并不容易实现。但是,当然有方法可以做到。 - Drona
从我所看到的情况来看,Zelix 在商业混淆器中并不是最好的选择。但话说回来,它们本来就是浪费时间和金钱的东西。 - Antimony

1

您可以混淆您的代码,这样当它反编译时,对于程序员来说就不容易阅读。


1

你无法特别地阻止反编译。毕竟,反编译器只需要能够读取字节码并将其转换为源代码,而读取字节码也是JVM必须执行的操作。因此,如果你想出某种方法来防止程序读取字节码,JVM将无法运行你的类。

正如其他人指出的那样,混淆是解决这个问题的方法,但我会质疑你是否真的需要这样做。同时,值得注意的是,如果你使用混淆,查找错误将会更加困难,因为堆栈跟踪也会被混淆。


1

混淆无疑是保护您的代码的一种方式。此外,还有其他工具可以加密您的类,并提供自定义类加载器,可以在运行时解密和加载您的类。这不是非常可靠的方法,但确实有一些工具可以做到。


0

我现在已经使用Zelix Klassmaster两年了,用于我的应用Visual Watermark。自那时以来,没有发布新的程序“破解”。因此,它似乎是保护Java应用程序的一个不错的选择。


0

0

不幸的是,在Java中就像在JavaScript中一样,获取源代码很容易。 理解它是另一回事。 如果你足够努力,通过数十个函数发送数据,每个函数都执行一小部分并将其传递,然后对其进行混淆,可能添加一些虚假函数,那么你可能会给予那些有不良意图的人足够的挫败感,让他们在成功之前放弃。


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