博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【FAQ】Java混淆器Allatori Java obfuscator常见问题集(一):什么是混淆?
阅读量:6412 次
发布时间:2019-06-23

本文共 910 字,大约阅读时间需要 3 分钟。

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

那么,什么是混淆?

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

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

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

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

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

转载于:https://juejin.im/post/5c46c54ef265da611d66f514

你可能感兴趣的文章
20180925上课截图
查看>>
IO输入/输出流的简单总结
查看>>
JavaScript之DOM-9 HTML DOM(HTML DOM概述、常用HTML DOM对象、HTML表单)
查看>>
技术成长之路(一)
查看>>
中国北方国际五金城硬件选型
查看>>
php.exe启动时提示缺少MVCR110.dall 64位 window系统 解决
查看>>
判断是否为数字方法
查看>>
[翻译] EF Core in Action 关于这本书
查看>>
js Uncaught TypeError: undefined is not a function
查看>>
数据库存储引擎
查看>>
[2019.2.13]BZOJ4318 OSU!
查看>>
版本号带两个小数点的,如何比较大小?( NSStringCompareOptions )
查看>>
QCustomplot使用分享(三) 图
查看>>
什么是java?
查看>>
WPF路径动画(动态逆向动画)
查看>>
Low Level Reader Protocol (LLRP) 简介
查看>>
[Micropython]TPYBoard v10x NRF24L01无线通讯模块使用教程
查看>>
mysql中show processlist过滤和杀死线程
查看>>
最新Sublime Text 2 激活 汉化
查看>>
基础数据类型之字典
查看>>