【教程】Java混淆器 Allatori Java obfuscator常见问题(一):什么是混淆?

Allatori Java obfuscator是第二代Java代码混淆器,为你的知识产权提供全方位的保护。

Allatori Java obfuscator最新试用版下载

那么,什么是混淆?

混淆是一种现代技术。它并不是Java代码的完整加密,尽管有一段时间使用过此方法。考虑到是Java代码,混淆似乎更好。在Java开发之初,一些开发人员完全编写了他们的应用程序和库,并提供了特殊的类加载器,它们在执行之前就对代码进行了解密。尽管这些加密类绝对不可读,但这种解决方案需要将特殊密钥放入应用程序中进行解码。在这种情况下,***一旦发现密钥,他能很轻易的解密应用程序并保存在硬盘上。使用任何可用的反编译器,他就可以毫不费力地获得源代码,然后就能随意使用你的应用程序和源代码了。

到这里我们遇到了一个很有趣的问题:如何从编译的源代码中获取源代码?这其实很简单。与C++不同,C++的源代码在编译期间变成机器代码,而Java源代码被编译成所谓的“字节码”。该字节码可以很容易地反编译回源代码。 实际上,从C++获得的机器代码也可以被反汇编,但与反汇编代码不同的是,在Java代码中,所有来自源代码的信息都存在。因此,类,方法和变量的所有名称都将被重构,所有字符串文字将保持原始状态。这个反编译的代码与源代码只有一点不同:没有注释,因为它们在编译时被删除了。

很明显,如果存在一种从字节码中消除所有可以被人掌握的信息的方法,那么理解反编译的Java代码就像理解反汇编的代码一样困难。这种方法当然存在,就是混淆。虽然混淆不能保证100%保护代码免受逆向工程(代码可以反编译和研究),但是混淆可以让代码变得更难理解 - 有时甚至不可能理解。 我们要注意的是,混淆不仅是一种保护代码的方法,而且是一种可将逆向工程的过程变得非常耗时的方法,这需要付出很大的努力。目的是阻止所有偶然的***者和尽可能多的***。

混淆从编译代码中移除上下文,而人和逆向工程工具通常使用这些上下文来破译代码的含义。混淆就是从源代码中删除这些上下文,同时保持原始程序的完整可执行性。

Allatori就完全实现了这一点 - 你的程序将产生与混淆之前相同的结果,但代码逆向工程要困难得多。


猜你喜欢

转载自blog.51cto.com/14084744/2342335