Java 混淆器
在脑海中假想一下,在你苦苦经历 81 难,摸爬滚打研制的技术轮子,终于成型得以问世,遂打个 JAR 包投放于万网之中。可是没过几天,同样功能的轮子出现在你的眼前,关键是核心代码都一样,此时你的内心是否会像一万只草泥马奔腾而过呢?
面对此景,我们有没有办法,去混淆一些核心代码,来捍卫自己劳动成果呢?
作为臣服于 Java 的子民们,一切又都是那么的幸福,诸多开源的轮子帮你解决了这个问题,今天不妨尝试用一用 ProGuard 这款轮子。
ProGuard 是一个压缩(shrink)、优化(optimize)和混淆(obfuscate) Java 字节码文件的免费的工具。它可以删除无用的类、字段、方法和属性,可以删除没用的注释,最大限度地优化字节码文件。它还可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性。常常用于Android 开发用于混淆最终的项目,增加项目被反编译的难度——摘自百度百科。
如官方图示(看不清,懵懂就行)
ProGuard 会对输入的 JAR 文件按照压缩、优化、混淆、预验证的顺序依次进行处理,最后得到输出 JAR 文件;
ProGuard 使用依赖类库(Library jars)来辅助对 Input jars 类之间的依赖关系进行解析,但是依赖类库本身不会被处理,也不会被包含到 Output jars 中。
1. 工欲善其事必先利其器
下载最新版的 ProGuard,然后解压,进入到 bin 目录,Windows 下直接双击 proguardgui.bat 即可,而 Mac Os 下控制台运行 proguardgui.sh 即可。
下载地址:https://sourceforge.net/projects/proguard/files/latest/download
本次演示是在 Mac Os 下,控制台输入 sh proguardgui.sh。ProGuard 运行启动成功的界面如下。
2. 工具而已,用就行了
在 Input/Output 中,Add input 选择要混淆的 JAR 包,注意一定要添加待混淆的 JAR 包依赖的所有类库,Add output 指定输出文件名(例如 a.jar);压缩(Shrinking)和优化(Optimization)不是本次的重点,略过;Obfuscation 中有很多混淆规则,可以自行依据官网进行配置调整;最后选择 Process,点击右下角的 Process! 即可。
成功操作界面会提示:Processing completed successfully!
3. 效果如何呢?
采用 JD-GUI 打开根据混淆输出的 JAR,效果貌似像那么回事儿。
保护你劳动成果的方式有很多种,本次 2 分钟简单的分享,只是让你们知道有 ProGuard 这款技术轮子存在,有太多的细节需要去实践,大家可以按需,自行按照官网进行深入使用。

Java 混淆器的更多相关文章
- jocky1.0.3 (原joc) java混淆器 去除jdk版本限制
昨晚下班回去,研究了下jocky1.0.3的使用,发现编译时提示引用类库版本不对,捣弄了半个小时后终于理解,原来是我的jdk1.7版本过高,这货是06年的版本,到现在都没更新过,支持(限制)的最高版本 ...
- 5个常用Java代码混淆器 助你保护你的代码
[IT168 技术文档] 从事Java编程的人都知道,可以通过逆向工程反编译得到Java程序的源代码,这种反编译工具之一就是JAD.因此,为保护我们的劳动成果,尽可能给反编译人员制造障碍,我们可以使用 ...
- Java代码加密与反编译(一):利用混淆器工具proGuard对jar包加密
Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候.所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译.通 ...
- java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器
java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器 下载地址:http://yunpan.cn/QXhEcGNYLgwTD 运行方式:java -jar Encryp ...
- 混淆器:java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器
java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器 下载地址:http://yunpan.cn/QXhEcGNYLgwTD 运行方式:java -jar Encryp ...
- 一篇文章读懂Java类加载器
Java类加载器算是一个老生常谈的问题,大多Java工程师也都对其中的知识点倒背如流,最近在看源码的时候发现有一些细节的地方理解还是比较模糊,正好写一篇文章梳理一下. 关于Java类加载器的知识,网上 ...
- Android程序增加代码混淆器
增加代码混淆器.主要是增加proguard-project.txt文件的规则进行混淆,之前新建Android程序是proguard.cfg文件 能够看一下我採用的通用规则(proguard-proje ...
- Java类加载器(死磕 1-2)
Java类加载器( CLassLoader ) 死磕 1.2: 导入 & 类加载器分类 本小节目录 1.导入 1.1. 从class文件的载入开始 1.2. 什么是类加载器 2. JA ...
- java笔记--理解java类加载器以及ClassLoader类
类加载器概述: java类的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类加载机制 ...
随机推荐
- 第八章、小节三keep-alive
主要缓存的是ajax中的json 我的路由中的内容被加载过一次,我就把路由中的内容放到内存中,下次再进入这个路由的时候,不需要重新加载页面,直接从内存中获取数据. 切换不同城市,调用不同城市数据 但是 ...
- javascript中的中介者模式——迪米特法则
”迪米特法则“——最少知识原则,不和陌生人说话,就是说,一个对象应当对其他对象有尽可能少的了解.talk only to your immediate friends.初衷是:降低对象之间的耦合度. ...
- 05 Linux目录速查表
/:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始 当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录 /b ...
- PHP mysql事务问题实例分析
本文实例分析了PHP的mysql事务问题.分享给大家供大家参考,具体如下: 对于myisam数据库,可以控制事务的进行: $mysqlrl = mysql_connect ( $db_config [ ...
- SpringBoot——学习笔记
关于微服务和SOA 这,仅是我学习过程中记录的笔记.确定了一个待研究的主题,对这个主题进行全方面的剖析.笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长.不止是技术. 官网教程学习ht ...
- Swift5.2 新特性
Print 函数传参新格式 let param = "参数" print(#"这是一个\#(param) xxxxx"#) 允许在模块中定义和标准库中名称一样的 ...
- iOS 指纹认证登陆开发(TouchID)
设计思路 TouchID 关联账号 用户登陆成功 -> 开启TouchID登陆 -> TouchID验证 -> 记录用户信息(验证通过) -> 关联完成 TouchID 登陆 ...
- Remmina
什么是Remmina? Remmina作为一个远程连接服务器,可以方便快捷的帮你连接服务器,不用直接使用命令行的方式去连接服务器,使用也很简单.具体下载直接在APP中下载就好,Linux自带这个软件, ...
- 最小生成树的Prim算法以及Kruskal算法的证明
Prime算法的思路:从任何一个顶点开始,将这个顶点作为最小生成树的子树,通过逐步为该子树添加边直到所有的顶点都在树中为止.其中添加边的策略是每次选择外界到该子树的最短的边添加到树中(前提是无回路). ...
- 多线程之旅(Thread)
在上篇文章中我们已经知道了多线程是什么了,那么它到底可以干嘛呢?这里特别声明一个前面的委托没看的同学可以到上上上篇博文查看,因为多线程要经常使用到委托.源码 一.异步.同步 1.同步(在计算的理解总是 ...