Jocky混淆编译器是在Sun JDK中提供的Java编译器(javac)的基础上完成的,修改了其中的代码生成过程,对编译器生成的中间代码进行混淆,最后再生成class文件,这样编译和混淆只需要一个步骤就可以完成。另外可以在源程序中插入 符号保留指令 来控制哪些符号需要保留,将混淆过程与开发过程融合在一起,不需要单独的配置。
使用步骤:
1、下载jocky.jar和jocky-ant.jar,并加到工程的WEB-INF/lib目录下。
2、在工程下编写ant的脚本文件,主要是加上
<!--引入jocky任务-->
<path id="kocky.lib">
<pathelement location="${web.inf}/lib/jocky.jar"/>
<pathelement location="${web.inf}/lib/jocky_ant.jar"/>
</path>
<taskdef resource="jockytasks" classpathref="kocky.lib" > </taskdef>
在执行javac任务之前加上
<jocky jar="${web.inf}/lib/jocky.jar" enable="true" level="protected"> </jocky>
例如:
<target name="compile" depends="copy.spring_test" description="compile the source">
<jocky jar="${web.inf}/lib/jocky.jar" enable="true" level="protected"> </jocky>
<javac srcdir="${src}" destdir="${web.inf}/classes" fork="true" memorymaximumsize="500M" source="1.5" target="1.5" debug="true" >
<classpath refid="project.class.path" />
</javac>
</target>
Level的取值情况说明:
none 不进行混淆;
private 对所有private访问级别的元素进行混淆;
package 对所有private或package private元素进行混淆;
protected 对所有private, package private, protected元素进行混淆;
public 对所有的元素都进行混淆;
all 相当于public;
推荐使用protected以下的混淆级别,不要对public的进行混淆,否则容易出错,因为public 的东西与类外界交互多,易于出错。
3、使用ant运行编写的脚本,中间可能会出的错:
? 代码版本不对,将源代码工程的buildpath的jdk版本换成1.5,这东西只支持这个版本
? 工程的某个地方代码有错,有时是null,有时是classnotfound,等等,这是由于混淆后,一些类或者类中的东西变得不可识别了,这就是风险啊,找到出错的地方,出错代码的上方加上/**
* @preserve
*/
这种注释。表示这里不用混淆。
? 如果在myeclipse里直接运行脚本出错的话,就用控制台,cd到脚本所在的目录使用命令:
Ant -f <脚本文件名> 进行运行(前提是ant配置在系统path中)
4、经过运行ant脚本,那么系统中你所要进行混淆的代码就已经生成了混淆后的class文件,可以用反编译工具来看下,里面很多变量都换了莫名其妙的名字,目的达到,之后就是打包,发布了。
其实之前工作以来学了些东西,但是都是太懒,从来都没弄上来,以后勤快点,自己也要努力。
分享到:
相关推荐
先下载一个Jocky for eclipse的插件,然后放到eclipse的plugin文件夹里,然后右键单击项目,会看到Jocky的选项,Jocky与其它混淆编译器最大的不同之处在于:它是直接从源码上做文章,也就是说编译过程本身就是一个混淆...
代码混淆Eclipse插件Jocky
Jockey跟其他混淆工具不同的是:它是直接对编译过程做文章,也就是在把java文件编译为class文件的过程中对代码进行混淆,混淆后的代码中包含很多JVM 指令,大家知道JVM指令是面向机器的,人类一般很难看懂!...
jocky混淆器的使用方式v1.2 1. 什么是Jocky 我们知道,Java是一种跨平台的编程语言,其源码(.java文件)被编译成与平台无关的字节码(.class文件),然后在运行期动态链接。这样,编译后的类文件中将包含有符号表,从而...
我们知道,Java是一种跨平台的编程语言,其源码(.java文件)被编译成与平台无关的字节码(.class文件),然后在运行期动态链接。这样,编译后的类文件中将包含有符号表,从而... Jocky就是这样一款优秀的Java混淆编译器。
Jocky混淆JAVA代码(保护你的JAVA项目)[参照].pdf
jocky混淆器 JDK1.7 不会报错,最好用的混淆器,反编译后的代码基本没法用,而且操作简单,可以集成到eclipse,如果项目是1.5以上的,可以把核心代码做成1.5JDK的然后打包再引用。
3. 设置Jocky的一些基本属性,包括jocky.jar包的位置,以及混淆编译级别: <jocky jar="{lib.dir}/jocky.jar" enable="true" level="private" /> 4. 当设置jocky的enable属性为true时,此时,Ant脚本中的javac编译...
Jocky混淆JAVA代码(保护你的JAVA项目).pdf
NULL 博文链接:https://chenming47.iteye.com/blog/935294
java混淆工具jocky插件,压缩包内含有jdk版本问题解决的方法、插件配置方法、代码混淆使用方法
jocky-Java混淆编译插件以及配置。为了防止class文件被反编译 需要使用混淆编译技术 jocky就是这么一种反编译技术
Jocky混淆JAVA代码(保护你的JAVA项目)[收集].pdf
NULL 博文链接:https://huangyuanmu.iteye.com/blog/493149
Jocky混淆编译器是在Sun JDK中提供的Java编译器(javac)的基础上完成的,修改了其中的代码生成过程,对编译器生成的中间代码进行混淆,最后再生成class文件,这样编译和混淆只需要一个步骤就可以完成。另外可以在源...
org.apusic.jocky_1.0.3.zip,内有使用文档。eclipse3.2通过
基于Spring Boot,运用Allatori 6.4版本对代码进行混淆的demo。内含Allatori文档及详细工程。
Java代码混淆教程之jocky篇
实现maven管理的Javaweb项目的proguard代码混淆功能、工具包下载及错误解决
jocky Java混淆编译器,在对java源代码进行编译时进行混淆,从而使编译出来的class文件无法反编译在对java源代码进行编译时进行混淆,从而使编译出来的class文件无法反编译