代码混淆技术——Obfuscator

什么是Obfuscator ?

Obfuscator 只是迷惑了表面的分析者,而保持了机器编码层的一致性。软件 Obfuscator 使用混淆代码来挫败分析者的同时不破坏程序的执行。

    混乱代码以使客户机( JVM 和 CLR )并不明白内部的细节而能够正常使用。 Obfuscator 从编译后的代码中删除一些人或者反向工程软件可以读懂潜在的文字信息。它的目标就是从应用程序中去除上下文联系的同时保持程序的完整性。通过大量的技巧和坚持不懈的努力,黑客仍然可以反编译出代码的真正含义。 Obfuscator 的目标是提高黑客破解的难度,使得反向工程非常困难,以至于黑客不值得为破解做出那么大的努力。
    代码 Obfuscator 不会把代码加密。加密技术采用数据密钥。但是因为黑客们能破解密钥或者查找到程序内部的密钥,加密技术也是不可靠的。

Obfuscator 会影响性能吗?
    软件 Obfuscators 并不会降低执行性能。实际上,成熟的Obfuscator 可以通过压缩应用程序来提高性能。 Obfuscators 使用 overload induction (重载感知)的技术重用标志符的名称,它的另一个特点就是可以删除没有使用到的类、方法、局部变量和设计时产生的元数据。这使得应用程序的缩小率可以达到 20-40% 甚至更多。
    精简后的程序通常会加载地更快并使用更少的内存。此外,因为程序小了,网络分布式组件程序将会更有效率。

哪些Java和.NET程序需要被模糊化?
    以下几种情况下应该使用 Obfuscator :
        * 源代码不是公开的;
        * 代码中存在个人敏感信息,比如 SQL 语句,用户名和密码;
        * 系统性能,带宽或者程序大小成为限制因素;
    也就是说如果程序大小不是问题,源代码是公开的或者是开源软件,就不需要使用 Obfuscator 了。对企业开发者来说,如果设定一个规范,明确使用 Obfuscator 作为标准的构建工具,而不是把精力放在针对单个具体的程序上,他们将获益良多。因为这做避免了对每个开发项目都花费时间去做重复的工作。

你可能感兴趣的:(代码混淆技术——Obfuscator)