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文件,这样编译和混淆只需要一个步骤就可以完成。另外可以在源程序中插入符号保留指令来控制哪些符号需要保留,将混淆过程与开发过程 融合在一起,不需要单独的配置。

以上为摘抄

Jocky的下载和配置

OperaMasks上的下载链接已经失效,请移步CSDN自行搜索下载

1、下载完成后解压得到名为org.apusic.jocky_1.0.3的文件夹,把这个文件夹放到eclipse根目录的plugins文件夹下(myeclipse和eclipse同理)。

2、重启eclipse,右键一个工程文件,出现Jocky选项说明OK。

3、一般是先进行设置-Jocky Settings,然后进行Jocky Now!。以下是settings界面

Enable Jocky多选框选中

Jocky build file是在项目创建一个xml文件,根据里面的配置进行混淆

Scramble level是进行混淆的代码等级,有none、private、package、protected、public、all,将根据设置对java文件中的相应修饰符修饰的方法代码进行混淆

Target VM是java虚拟机的版本,有1.4和1.5,一般选择1.5

Output directory是输出文件夹,在项目根目录下

点击确认会自动根据项目的设置生成xml文件

4、jocky_build.xml,实际上是一个ant build文件,由系统自动生成,有几处需要说明

这类标签代表项目编译所需的jar包,由于是自动生成一般不用理睬,如果出现找不到相关的package之类的报错,那么有可能是location路径有问题。如果你安装系统时是用户名设置成了中文名,并且使用了maven,maven的jar包的下载路径设置成了默认${user}/.m2/repository/,那么jocky这里的路径会出现问题,中文名的用户名会乱码或者消失,请修改maven配置xml文件修改下载路径[自己指定的路径] 。

代码中如果有中文名,必须手动设定编码,默认是没有的。

设定源文件的目录,因为有时候我们只想输出src目录下的部分包而不是全部。

5、最后Jocky Now!生成的.class文件要通过命令进行打包

在命令行中输入jar,会出现以下信息

一般是进入打.class文件所在的目录下,输入jar cvf jarname.jar *.*   ,则会对[该路径下的所有文件]进行打包,输出到当前路径下

jar cvf jarname.jar *.*

java代码混淆加密_Java代码混淆和加密--Jocky(转)相关推荐

  1. java程序优化快捷键_Java 代码中针对性能优化的总结方案

    在一个好的项目中代码优化是永远离不开的话题,如果有充足的时间开发和维护代码,必须考虑每个可以优化的细节,日积月累,项目的质量才会上升,代码优化是绝对有必要的工作.代码优化的主要目的是减少代码块,提升代 ...

  2. java异常统一处理_Java 代码中的全局异常处理

    最近接手一个新项目,写用例的时候去翻看代码,发现部分代码里缺少基本的异常处理,包括对参数异常以及业务异常的处理.对照之前负责过的异常处理做得比较好的项目,给开发提了几点建议,顺便又去翻看了之前项目的代 ...

  3. java 接口 安全加密_Java中的安全加密

    java 接口 安全加密 上一次我写关于密码学的文章时 ,我概述了Apache Shiro加密API,并展示了如何使用其两个对称密码. 我还写道:"您不需要在应用程序中加密和解密敏感数据的更 ...

  4. java如何给密码加密_Java如何实现密码加密

    在查询时,我们如果要对用户的登录信息进行加密,通常会将其密码进行加密. 1) 可以借助spring框架工具类DigestUtils 2) 也可以使用shiro框架来实现 //保存用户自身信息 //1构 ...

  5. java如何加密_Java如何实现密码加密

    在查询时,我们如果要对用户的登录信息进行加密,通常会将其密码进行加密. 1) 可以借助spring框架工具类DigestUtils 2) 也可以使用shiro框架来实现 //保存用户自身信息 //1构 ...

  6. java中修改密码_java中用户密码加密时增加和修改的代码

    建一个MD5.java类 package util; /************************************************ MD5 算法的Java Bean Last M ...

  7. java的注释规范_Java代码注释规范

    1,单行(单行)-简短说明: ///... 单行注释: 代码中的单行注释. 最好在注释前有一个空行,并在其后加上与代码相同的缩进级别. 如果无法完成一行,则应使用块注释. 评论格式: 在行首注释: 在 ...

  8. java 不要使用魔法值_Java代码中的魔法值

    所谓魔法值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义. 1. 前言 重构老代码中遇到了不少类似下面这种写法: public void attend(String ...

  9. java代码详细注释_java代码详细注释

    请将下面的java程序代码给加详细的注释(部分已给出),谢谢了,回答满意再追加20分publicclassChatUDPJFrameextendsJFrameimplementsActionListe ...

最新文章

  1. 坦白讲!90%的数据分析师都不合格!!
  2. [Spring cloud 一步步实现广告系统] 18. 查询返回广告创意
  3. 高通msm8994启动流程简介
  4. 操作系统基本分段存储管理方式
  5. CF1120D Power Tree(树形DP/构造+差分+最小生成树)
  6. python技巧(2)--碾平列表和列表去重
  7. java面向对象程序设计董小园_java面向对象程序设计(董小园版).doc
  8. vue接收json数据_Vue之使用ajax获取json数据,并用v-for循环显示在表格中
  9. 哈啰出行赴美递交招股书:2020年营收60亿元 顺风车成新增长极
  10. i计算机网络的应用程序,计算机网络技术及其在校园网的研究与应用毕业论文.doc...
  11. c 中html上传文件大小,IOS微信内置浏览器对html标签input type=file上传的文件大小size错误?...
  12. python安装教程-Python安装包+安装教程
  13. js里获取表单输入值进行比对的方法
  14. 重磅丨三年沉淀 2018全球人工智能技术大会蓄势待发
  15. 简易可行Live2D直播应用路线分享
  16. 使用ActivityGroup来切换Activity和Layout,android入门开发与实战
  17. 斯皮尔曼相关系数范围_什么是斯皮尔曼相关系数
  18. nxdn标准简介_标准活动介绍
  19. Console口和Telnet远程登陆
  20. python父亲节礼物_父亲节有什么礼物可以推荐?

热门文章

  1. 新的数字革命真的有意义么?
  2. 中小学成语故事PPT模板
  3. 青少年Python游戏编程入门(Beginning Game Programming for Teens with Python译文)
  4. Bugku好像需要密码
  5. apk linux手机版下载,AndroLinux apk下载|AndroLinux安卓版下载 v1.3.2.7 - 跑跑车安卓网...
  6. 《任正非正传》 赵凡禹 (这是一本拼凑的书,营养价值不大,仅供了解皮毛和吹水,而且书中有不少明显错误)
  7. 工业级千百兆光纤收发器1光4电口导轨式带1路双向RS485/232数据 4口带485百兆光纤收发器工业导轨式发送机
  8. 103、固体燃烧的形式
  9. C# Socket网络编程(附赠练手小项目)
  10. php array_filter array_map,回调函数来处理数组:array_,map(),array_filter(),array_walk()