如何防止我的类被反编译

时间:2012-05-14 11:18:37

标签: java decompiler

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

我已经阅读了一些文章并找到了一个专利网站 Zelix KlassMaster

市场上是否有任何免费工具以类似方式运作..

8 个答案:

答案 0 :(得分:5)

据我所知,没有免费工具具有相同的功能集。

在我看来,ProGuard和Stringer Java Obfuscator之间的混合是保护Java和Android应用程序的最佳和最便宜的方式。

N.B。我是Licel LLC的首席执行官。 Stringer Java Obfuscator的开发人员。

答案 1 :(得分:4)

Proguard是最好的免费和开源混淆器。混淆器混淆了你的类,字段和方法名称,因此很难理解反编译代码。

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

答案 2 :(得分:1)

你可以对你的代码进行模糊处理,这样当编译它时就不容易阅读(对于程序员来说)

答案 3 :(得分:1)

你无法专门阻止它被反编译。毕竟,反编译器只需要能够读取字节代码以将其转换为源代码,并且读取字节代码也是JVM必须做的事情。因此,如果您想出一些方法来阻止程序读取字节代码,那么JVM将无法运行您的类。

正如其他人所指出的那样,如果你真的需要这样做,混淆是要走的路,但我会质疑你是否确实需要这样做。值得指出的是,如果你使用混淆,找到错误会更加困难,因为堆栈跟踪也会被混淆。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

你不能阻止java类反编译。但是,你可以让那些试图非常努力地理解你的代码的人的生命。这是所谓的混淆器的任务,如KlassMaster。

请参阅this list了解开源混淆器。

另请参阅我的一个问题:https://stackoverflow.com/questions/1872170/how-to-protect-intellectual-property-in-java-app

答案 6 :(得分:0)

不幸的是,在Java中,像在JavaScript中获取源代码一样容易。 理解它是另一回事。 如果你足够努力并通过几十个函数发送日期,每个函数做一小部分并传递它然后混淆它并且可能添加一些假函数你可能只是给那些有不良意图的人提供足够的头脑,他们将会在成功之前退出。

答案 7 :(得分:0)

我现在使用Zelix Klassmaster为我的应用Visual Watermark约两年了。没有新的计划"裂缝"从那时起被释放。因此,它似乎是保护Java应用程序的一个很好的选择。