java代码混淆加密_Java代码混淆和加密--Jocky(转)
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(转)相关推荐
- java程序优化快捷键_Java 代码中针对性能优化的总结方案
在一个好的项目中代码优化是永远离不开的话题,如果有充足的时间开发和维护代码,必须考虑每个可以优化的细节,日积月累,项目的质量才会上升,代码优化是绝对有必要的工作.代码优化的主要目的是减少代码块,提升代 ...
- java异常统一处理_Java 代码中的全局异常处理
最近接手一个新项目,写用例的时候去翻看代码,发现部分代码里缺少基本的异常处理,包括对参数异常以及业务异常的处理.对照之前负责过的异常处理做得比较好的项目,给开发提了几点建议,顺便又去翻看了之前项目的代 ...
- java 接口 安全加密_Java中的安全加密
java 接口 安全加密 上一次我写关于密码学的文章时 ,我概述了Apache Shiro加密API,并展示了如何使用其两个对称密码. 我还写道:"您不需要在应用程序中加密和解密敏感数据的更 ...
- java如何给密码加密_Java如何实现密码加密
在查询时,我们如果要对用户的登录信息进行加密,通常会将其密码进行加密. 1) 可以借助spring框架工具类DigestUtils 2) 也可以使用shiro框架来实现 //保存用户自身信息 //1构 ...
- java如何加密_Java如何实现密码加密
在查询时,我们如果要对用户的登录信息进行加密,通常会将其密码进行加密. 1) 可以借助spring框架工具类DigestUtils 2) 也可以使用shiro框架来实现 //保存用户自身信息 //1构 ...
- java中修改密码_java中用户密码加密时增加和修改的代码
建一个MD5.java类 package util; /************************************************ MD5 算法的Java Bean Last M ...
- java的注释规范_Java代码注释规范
1,单行(单行)-简短说明: ///... 单行注释: 代码中的单行注释. 最好在注释前有一个空行,并在其后加上与代码相同的缩进级别. 如果无法完成一行,则应使用块注释. 评论格式: 在行首注释: 在 ...
- java 不要使用魔法值_Java代码中的魔法值
所谓魔法值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义. 1. 前言 重构老代码中遇到了不少类似下面这种写法: public void attend(String ...
- java代码详细注释_java代码详细注释
请将下面的java程序代码给加详细的注释(部分已给出),谢谢了,回答满意再追加20分publicclassChatUDPJFrameextendsJFrameimplementsActionListe ...
最新文章
- 坦白讲!90%的数据分析师都不合格!!
- [Spring cloud 一步步实现广告系统] 18. 查询返回广告创意
- 高通msm8994启动流程简介
- 操作系统基本分段存储管理方式
- CF1120D Power Tree(树形DP/构造+差分+最小生成树)
- python技巧(2)--碾平列表和列表去重
- java面向对象程序设计董小园_java面向对象程序设计(董小园版).doc
- vue接收json数据_Vue之使用ajax获取json数据,并用v-for循环显示在表格中
- 哈啰出行赴美递交招股书:2020年营收60亿元 顺风车成新增长极
- i计算机网络的应用程序,计算机网络技术及其在校园网的研究与应用毕业论文.doc...
- c 中html上传文件大小,IOS微信内置浏览器对html标签input type=file上传的文件大小size错误?...
- python安装教程-Python安装包+安装教程
- js里获取表单输入值进行比对的方法
- 重磅丨三年沉淀 2018全球人工智能技术大会蓄势待发
- 简易可行Live2D直播应用路线分享
- 使用ActivityGroup来切换Activity和Layout,android入门开发与实战
- 斯皮尔曼相关系数范围_什么是斯皮尔曼相关系数
- nxdn标准简介_标准活动介绍
- Console口和Telnet远程登陆
- python父亲节礼物_父亲节有什么礼物可以推荐?
热门文章
- 新的数字革命真的有意义么?
- 中小学成语故事PPT模板
- 青少年Python游戏编程入门(Beginning Game Programming for Teens with Python译文)
- Bugku好像需要密码
- apk linux手机版下载,AndroLinux apk下载|AndroLinux安卓版下载 v1.3.2.7 - 跑跑车安卓网...
- 《任正非正传》 赵凡禹 (这是一本拼凑的书,营养价值不大,仅供了解皮毛和吹水,而且书中有不少明显错误)
- 工业级千百兆光纤收发器1光4电口导轨式带1路双向RS485/232数据 4口带485百兆光纤收发器工业导轨式发送机
- 103、固体燃烧的形式
- C# Socket网络编程(附赠练手小项目)
- php array_filter array_map,回调函数来处理数组:array_,map(),array_filter(),array_walk()