繁体   English   中英

如何防止我的类被反编译

[英]How to prevent my class to be decompiled

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

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

市场上有哪些免费工具以类似的方式工作..

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

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

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

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

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

您可以对代码进行模糊处理,以便在编译时不易阅读(对于程序员而言)

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

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

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

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

请参阅此列表以获取开源混淆器。

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

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

我正在使用Zelix Klassmaster为我的应用程序Visual Watermark大约两年了。 自那时以来,没有新的计划“破解”。 因此,它似乎是保护Java应用程序的一个很好的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM