前有许多Java反编译工具可以把(*.class)文件反编译出(*.java)文件.如果你花大量时间开发一个Java软件,而别人只 需利用Java反编译工具进行反编译,就可以既轻松又清楚的看见你的源代码.如果你不想把你的代码公开,又害怕被别人反编译,请使用我们开发的《Java混淆器》.使用我们的《Java混淆器》,只需要选定目录后轻轻点一下执行按钮,就可以 自动加密源代码.你只需再把加密后的源码编译一下,生成(*.class)就可以了.就算使用Java反编译工具,反编译后的代码也是一些比较难懂的无规则的代码.
从事Java编程的人都知道,可以通过逆向工程反编译得到Java程序的源代码,这种反编译工具之一就是JAD。因此,为保护我们的劳动 成果,尽可能给反编译人员制造障碍,我们可以使用Java Obfuscator(Java混淆器)保护Java的类文件。
java Obfuscator的原理就是将字节码转换为一个逻辑上的对等物,这种转换后的版本极难拆散。即使有人试图去反编译,过程将极其艰难复杂,并很难绕过转换后模糊晦涩的编码。主要的过程如下:
用一个常规编译器(比如JDK)编译Java源代码运行混淆器,在受保护的环境下生成编译类文件。最后生成的会是一个不同的输出文档,也许扩展名也会不同。
这个被重命名为.class file的文件在功能上与原字节码是对等的,由于虚拟机仍然可以对其进行解译,因此对性能不会产生影响。
以下是一些可用来混淆(obfuscate)Java字节码的工具:
Zelix KlassMaster
Zelix KlassMaster是一款用Java写的实用工具,能读取和修改Java类文件,可以运行在任何支持1.1.6版Java虚拟机的平台上。
下载:http://www.zdnetindia.com/downloads/info/898255.html
Cinnabar Canner
Canner通过创建一个原生Windows可执行文件(EXE文件)保护你的代码不被逆向工程反编译,这个可执行文件包含了你的应用程序类和资源的全部加密版本,只有在被JVM调用到内存中时才处于非加密状态。
网站:http://www.cinnabarsystems.com/canner.html
下载:http://www.cinnabarsystems.com/download.html
Jmangle Java类粉碎机
Jmangle是用来阻止反编译Java程序,降低盗版的软件,开发者可用其粉碎类文件中的符号。
网站:http://www.elegant-software.com/software/jmangle/
下载:http://www.elegant-software.com/software/jmangle/download.html
RetroGuard
JavaGuard是一款通用的字节码混淆器,用来无缝融入你的日常构建和测试过程中,使得你辛苦编写宝贵的Java代码更加安全。
网站:http://java-source.net/open-source/obfuscators/javaguard
JODE
JODE是一款含Java解码器和优化器的java包。
网站:http://java-source.net/open-source/obfuscators/jode
最后要说的是,你也可使用其他几款类似的实用工具,这些工具运用许多不同的方法达到了相同的目标。他们也有共同之处,就是允许通过不同的过程转换生成.exe文件,将.class和.jar文件模糊化。Google Directory上有一张它们的综合列表:
http://directory.google.com/Top/Computers/Programming/Languages/Java/Developmen
1.1 什么是Jocky?
我们知道,Java是一种跨平台的编程语言,其源码(.java文件)被编译成与平台无关的字节码(.class文件),然后在运行期动态链接。 这样,编译后的类文件中将包含有符号表,从而使得Java程序很容易被反编译。相信每一个Java开发人员,都曾经用过诸如Jad之类的反编译器,对Java的class 文件进行反编译,从而观察程序的结构与实现细节。如此一来,对于那些需要严格进行知识产权保护的Java应用,如何有效的保护客户的商业投资, 是开发人员经常需要面对的问题。 于是就出现了Java混淆编译器,它的作用是打乱class文件中的符号信息,从而使反向工程变得非常困难。 Jocky就是这样一款优秀的Java混淆编译器。
1.2 为什么需要Jocky?
目前业界有不少商业的甚或是开源的混淆编译器,但它们普遍存在一些这样或者那样的问题。一般而言,现有的混淆器都是对编译好的 class文件进行混淆,这样就需要编译和混淆两个步骤。而事实上,并不是所有的符号都需要混淆。如果你开发的是一个类库,或者某些类需要动态装载, 那些公共API(或者说:那些被publish出来的API)就必须保留符号不变,只有这样,别人才能使用你的类库。现有的混淆器提供了GUI或脚本的方式来对那些 需要保留的符号名称进行配置,但如果程序较大时,配置工作将变得很复杂,而程序一旦修改,配置工作又要重新进行。某些混淆器能够调整字节码的顺序, 使反编译更加困难,但笔者经历过混淆之后的程序运行出错的情况。 而Jocky与其它混淆编译器最大的不同之处在于:它是直接从源码上做文章,也就是说编译过程本身就是一个混淆过程。
1.3 Jocky是如何工作的?
Jocky混淆编译器是在Sun JDK中提供的Java编译器(javac)的基础上完成的,修改了其中的代码生成过程,对编译器生成的中间代码进行混淆, 最后再生成class文件,这样编译和混淆只需要一个步骤就可以完成。另外可以在源程序中插入符号保留指令来控制哪些符号需要保留,将混淆过程与开发过程 融合在一起,不需要单独的配置。
相关推荐
### Java混淆器的作用 在软件开发领域,尤其是Java编程中,源代码保护是一个非常重要的话题。随着技术的发展,软件知识产权的保护变得越来越复杂。对于开发者来说,编写好的代码往往包含了很多独创性的算法、业务...
Java混淆器是开发Java应用程序时一个非常重要的工具,它的主要目的是保护代码安全,防止未经授权的逆向工程分析。本文将详细介绍Java混淆器的工作原理、重要性以及如何使用,特别是基于ProGuard 4.6版本的操作流程。...
### Java混淆器的设计与实现 #### 一、引言 随着计算机网络技术和分布式系统的迅速发展,Java语言凭借其良好的跨平台特性,在学术界和商业领域得到了广泛应用。Java程序的运行依赖于Java虚拟机(Java Virtual ...
java混淆器 RetroGuard 免费提供源码 可运行jar文件 Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候。所以一个按照正常方式编译的 Java .class 文件...
Java混淆器是Java开发者在发布应用程序时经常使用的一种工具,主要目的是为了保护代码不被轻易逆向工程解析,增加代码的保密性和安全性。本篇文章将深入探讨Java混淆器的原理、作用以及如何使用ProGuard这款经典的...
Java混淆器,如Jocky和RetroGuard,是开发者用来增强代码安全性的工具,主要目的是防止Java类文件被轻易地反编译,从而保护软件的知识产权。在Android开发中,混淆尤其重要,因为Android应用的主要代码是用Java编写...
java混淆器,能够对jar、private、public、protect等混淆,防止java的class文件被盗用
Java混淆器是开发人员在发布Java应用程序时常常使用的工具,主要目的是为了保护代码不被轻易反编译和理解。Jocky1.0.3(原名JOC)是一款这样的混淆器,它提供了对Java代码的混淆功能,有助于增强代码的安全性。这个...
Java混淆器 窗口界面 带中文帮助文档 运行: 命令行:JDK路径/bin/java -Xmx384m -jar Encrypt.jar 说明:如果被加密的文件需要第三方插件(*.jar),请把(*.jar)文件Copy到JDK路径\jre\lib\ext\目录下
对外接口联调保护你的Java源码-Java混淆器Allatori-7.5@集成eclipse编译 Obfuscation with Setting Classpath Single Jar Packaging Introduction to Watermarks Using Stack Trace Utility Integration with Apache...
敏创Java混淆器是广州市敏创信息科技有限公司在保护自己的Java源代码过程中积累的一套实用工具,可以有效地对Java代码进行混淆,达到保护自己知识产权的目的。 工具可以去除空格,回车,注释,有效地减小Java文件...
一个开源的java代码混淆器!
Jocky:在生成class文件的过程中(即编译过程),通过修改编译器的代码生成过程,对编译器生成的中间代码进行混淆,...本人发布的这个混淆器,只需要在 Allatori-3.2-Demo\tutorial\step1目录下修改相应的配置文件即可
Allatori 是第二代 Java 混淆器,可为您的知识产权提供全方位的保护。 尽管大多数第二代混淆器都提供了值得保护的级别,但我们已经在Allatori中开发了许多附加功能,以使对代码进行逆向工程几乎不可能。 Allatori ...
混淆器 如果您对更强大的混淆方法感兴趣,请随意看看我的新项目masxinlingvonta,它通过将 Java 字节码编译为本机代码来进一步混淆它。Java 字节码混淆器支持流程混淆删除行号数字混淆[不稳定] 使用自定义字典进行...