zoukankan      html  css  js  c++  java
  • Java 混淆器

    在脑海中假想一下,在你苦苦经历 81 难,摸爬滚打研制的技术轮子,终于成型得以问世,遂打个 JAR 包投放于万网之中。可是没过几天,同样功能的轮子出现在你的眼前,关键是核心代码都一样,此时你的内心是否会像一万只草泥马奔腾而过呢?

    面对此景,我们有没有办法,去混淆一些核心代码,来捍卫自己劳动成果呢?

    作为臣服于 Java 的子民们,一切又都是那么的幸福,诸多开源的轮子帮你解决了这个问题,今天不妨尝试用一用 ProGuard 这款轮子。

    ProGuard 是一个压缩(shrink)、优化(optimize)和混淆(obfuscate) Java 字节码文件的免费的工具。它可以删除无用的类、字段、方法和属性,可以删除没用的注释,最大限度地优化字节码文件。它还可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性。常常用于Android 开发用于混淆最终的项目,增加项目被反编译的难度——摘自百度百科。

    640?wx_fmt=png

    如官方图示(看不清,懵懂就行)

    • 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

    640?wx_fmt=png

    本次演示是在 Mac Os 下,控制台输入 sh proguardgui.sh。ProGuard 运行启动成功的界面如下。

    640?wx_fmt=png

    2. 工具而已,用就行了

    640?wx_fmt=png

    在 Input/Output 中,Add input 选择要混淆的 JAR 包,注意一定要添加待混淆的 JAR 包依赖的所有类库,Add output 指定输出文件名(例如 a.jar);压缩(Shrinking)和优化(Optimization)不是本次的重点,略过;Obfuscation 中有很多混淆规则,可以自行依据官网进行配置调整;最后选择 Process,点击右下角的 Process! 即可。

    640?wx_fmt=png

    成功操作界面会提示:Processing completed successfully!

    3. 效果如何呢?

    采用 JD-GUI 打开根据混淆输出的 JAR,效果貌似像那么回事儿。

    640?wx_fmt=png

    保护你劳动成果的方式有很多种,本次 2 分钟简单的分享,只是让你们知道有 ProGuard 这款技术轮子存在,有太多的细节需要去实践,大家可以按需,自行按照官网进行深入使用。

  • 相关阅读:
    团队工作第四次推进之——软件设计规格说明书
    失物找寻APP软件需求规格说明书——第三次团队作业
    你还在为校园内丢失东西无处可寻而发愁吗?速戳进来
    十分有趣却有些遗憾的结对编程——两位女程序员的挣扎
    结对编程初涉猎——结对伙伴的代码复审
    个人实战演练全过程——No.1 最大连续子数组求和
    小白出品 单元测试相关——入门级说明书
    写着写着停不下来的普通女程序员的总结
    vs2010 和vs2012的区别 副标题--Loaded事件走两次
    汽车防撞软件引发的一套软件系统思路
  • 原文地址:https://www.cnblogs.com/socoool/p/12629757.html
Copyright © 2011-2022 走看看