2012-05-14 42 views

回答

5

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

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

N.B.我是Licel LLC的首席执行官。 Stringer Java混淆器的开发者。

+3

如果你是斯特林格的附属公司,它是进口提到的。 http://stackoverflow.com/faq#promotion – Tom

1

可以混淆你的代码,所以,当它编译时,它不容易阅读(程序员)

4

Proguard是最好的免费和开源混淆器。混淆器会混淆你的类,字段和方法名称,以致难以从反编译的代码中理解。

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

+2

也就是说,不可能_completely_防止反编译。混淆是你能做的最好的。 –

+0

是的。而且,混淆本身并不是很容易在具有多个相互依赖的模块的大型项目中实现。但是,确定这是方法。 – Drona

+0

从我看到的来看,Zelix并不是商业混淆器中最好的。但是,再一次,它们无论如何都浪费时间和金钱。 – Antimony

1

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

正如其他人指出的那样,如果您真的需要这样做,混淆是一条路,但我会质疑您是否确实需要。另外值得指出的是,如果你使用模糊处理,寻找错误将会困难得多,因为堆栈跟踪也会被混淆。

0

不幸的是,像JavaScript一样在Java中获取源代码很容易。 了解它是另一回事。 如果你足够努力并通过数十个函数发送日期,每个函数都会做一小部分,然后传递给它,然后混淆它,也许添加一些伪造函数,那么你可能会给那些不够用心的人提供足够的头像,在成功之前将退出。

1

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

0

我使用Zelix Klassmaster为我的应用程序Visual Watermark大约两年了。自那时以来没有发布新的程序“裂缝”。所以,保护Java应用程序似乎是一个很好的选择。