在脑海中假想一下,在你苦苦经历 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混淆器_Java 混淆器相关推荐

  1. java 调试 工具_Java调试器–权威的工具列表

    java 调试 工具 Java调试是一个复杂的空间. 调试器的类型很多,工具也很多. 在此页面中,我们将介绍7种类型的调试器之间的区别,并查看每个类别中的主要工具,以帮助您为正确的工作选择正确的工具. ...

  2. java 装饰器_JAVA装饰器模式

    Java程序员们应该对java.io对不会陌生,因为java.io包采用了装饰器模式. 一.定义: Decorator装饰器,顾名思义,就是动态地给一个对象添加一些额外的职责,就好比为房子进行装修一样 ...

  3. java引导类加载器_Java类加载器层次结构(一)

    类加载器有一种父/子关系.除了引导类加载器外,每个类加载器都有一个父类加载器.本章通过分析ClassLoader的源码来展示java类加载器的层次结构. 根据规定,类加载器会为它的父类加载器提供一个机 ...

  4. java的安全管理器_Java安全管理器——SecurityManager

    总的来说,Java安全应该包括两方面的内容,一是Java平台(即是Java运行环境)的安全性:二是Java语言开发的应用程序的安全性.由于我们不是Java本身语言的制定开发者,所以第一个安全性不需要我 ...

  5. java 媒体播放器_Java多媒体播放器(三)

    No.3 vlcj 一.简介 The vlcj project first gives you Java bindings to just about all of the native functi ...

  6. java类加载器_JAVA类加载器

    虚拟机设计团队把加载动作放到 JVM 外部实现,以便让应用程序决定如何获取所需的类,JVM 提 供了 3 种类加载器: 1. 启动类加载器(Bootstrap ClassLoader) 负责加载 JA ...

  7. java 类加载器_Java 类加载器

    一.概述 类加载器通过一个类的全限定名来获取描述此类的二进制字节流. 类加载器在类层次划分.OSGi.热部署.代码加密等领域发挥着重要的作用. 比较两个类是否"相等",只有在这两个 ...

  8. java 文件分割器_Java分割器

    java 文件分割器 Java Spliterator is one of the four iterators – Enumeration, Iterator, ListIterator and S ...

  9. java多媒体播放器_Java多媒体播放器(四)

    No.4 gstreamer-java 一.简介 An unofficial/alternative set of java bindings for thegstreamermultimedia f ...

  10. java播放器_java播放器

    !!!各位老大我快下冈了!!! 最近开发了一个applet的视频程序,但用行在网络上不行 下载JMF2.1.1e播放组件地址 http://java.sun.com/products/java-med ...

最新文章

  1. POJ-2771 Guardian of Decency 最大独立子集
  2. html服务流程如何实现_朱传燕:美容院如何规范服务流程,提升专业口碑
  3. 超详细解读Java接口:模块通信协议以及默认方法和静态方法
  4. 作为Web开发人员,我为什么喜欢Google Chrome浏览器
  5. VTK修炼之道66:体绘制裁剪_Cripping技术
  6. Windows Server Core管理之WinRM
  7. python中文乱码 def decode-python处理一些乱码的中文文本时decode('utf-8')报错的处理...
  8. .Net中堆栈和堆的区别
  9. (转)SQL Server:在 SQL Server 2005 中配置数据库邮件,发送邮件
  10. 平台系统云服务器配置,01-云平台连接配置
  11. 8 计算机组成原理第五章 中央处理器 控制器 硬布线控制器 微程序控制器
  12. 任何字符串indexOf(‘‘)返回都是0,数组indexOf(‘‘)返回是-1
  13. 设计灵感|拼贴风格海报设计,优秀案例让你它好看在哪里?
  14. 在使用Vs2013打开Vs2008的解决方案时出现了以下错误:此版本的应用程序不支持其项目类型(.csproj)...
  15. python 设计模式之装饰器模式 Decorator Pattern
  16. JSK-8 字符串长度【入门】
  17. 卓有成效的管理者(珍藏版) (德鲁克管理经典)
  18. java俄罗斯方块七中图形类_用shell写俄罗斯方块
  19. Java获取某年某周的第一天
  20. 使用腾讯云服务器搭建网站

热门文章

  1. Mixly-继电器控制直流电机
  2. ipv6协议学习笔记(1)-ipv6基础
  3. 基于YOLO v5 的AI眼诊
  4. PMP 第10章 项目沟通管理
  5. 全球与中国接线端子连接器市场现状及未来发展趋势
  6. 毕业设计之 --- 基于java web的旅游网站设计
  7. FAT文件系统工作原理
  8. 连接校园网后登不上图书馆里的SCI等网站问题
  9. 把rmvb格式转化为avi格式
  10. 一张图片即可入侵你的电脑