ZKM混淆工具
原创文章,尊重劳动,转载请标明出处
ZKM 介绍
zkm 是一款付费的代码混淆工具。
一般使用步骤
直接使用 ZKM 脚本
直接下载 zkm.jar ,根据 ZKM 混淆语法规则编写混淆脚本(这里假设脚本名为 zkm.script.txt ),直接输入命令:
#zkm.script.txt 脚本名 |
zkm 脚本的语法规则详见参考的链接
- 使用 GUI 工具混淆,同时生成 ZKM 脚本
运行命令
java -jar zkm.jar
运行结束后,可以看到 GUI 程序启动了

- 运行 Build Helper
或者 
- 设置 ClassPath
classPath是配置要混淆的 jar 包所依赖的 jar。
默认情况下 java 依赖已经添加了
我这里直接将 jar 依赖的包同一放到了一个 lib 目录下, 然后点击 add 按钮, 在下面的这个对话框里面将 lib 下的 jar 包全部选中,点击 ok 全部选中
设置成功后就可以下一步了
- 设置 open,也就是选择要被混淆的 jar

设置完后就会进入这个界面了,如果前面的classPath 没有配好这里会提示出错, 我这设置的没问题,所以只是提示了 warning
- 一路操作下来,就到了设置 Trim Exclusions 了, Trim Exclusions 的作用是设置不配 zkm trim的 class 或者 field ( trim 操作比如删除源文件属性, 行号属性等), 我后面会跳过 Trim 设置, 所以这一步也跳过 (设置的操作也很简单,可以参考第7步)

- 设置 Trim Options,ZKM 会对除了第 5 步配置的 Trim Exclusions ,其他的打开的类会根据这里的配置做一些修剪操作,我这里就直接跳过了

- 配置 Obfuscate Name Exclusions, 这里主要是设置不被混淆的包名, 类, field, method 等
介绍:
Application type:
这里是默认提供的一些模版, 比如这里选择其中的一个
可以看到选择了 Extensible framework 之后, 自动帮我们添加了一些配置Exclude package qualifiers:
配置不会被混淆的包名
可以看到我们选择了 com.bluware.agent.android 这个包名后, 配置里面就出现了 com.blueware.agent.android. 根据 zkm 脚本规则, 这条配置就是指 com.blueware.agent.android这个包名不会被混淆don't change main class name:
如果 jar 清单配置文件里面配置了 main 类的信息, 这里就可以选择不被混淆的 Main类了Add

可以看出, 点击了 Add 按钮后, 弹出的对话框里面有 包名, 类, field, 方法等选项, 说明这里可以配置不会混淆的类、包名、 field、方法等,注意包名不被混淆除了在 Exclude package qualifiers 里面配置外, 也可以在这里配置我这里以配置方法为例说明, 选中 method ,点击 ok
现在我要配置 OneApmAgent.class这个类 里面的所有 public 修饰的方法都不被混淆, 同时OneApmAgent.class这个类所在的包名以及 OneApmAgent.class 这个类名也不被混淆1.配置 Method, public *(*) 也就是只要是public 类修饰的方法都不被混淆

这里的 * 是通配符, 经过这么设置后, jar 包里面的 public 方法都不会被混淆, 但是其所所在的类的类名, 以及包名都会被混淆2.限定方法所在的类,设置 Containing class

经过这一部设置后,也就是只有名为 OneApmAgent 的类中的 public 方法才不会被混淆, OneApmAgent 类名和所在的包名还是会被混淆, 如果要向类名不会被混淆的话, 需要勾选 Exclude class name as well
这样类名也不会被混淆了,但是所在的包名还是会被混淆3 配置 Containing package
这一步主要是配置类所在的包,可以指定具体的包名,或者使用通配符匹配的包名, 我这里任意包名都可以,所以使用通配符 *.

注意这里如果不勾选 Exclude package name as well 的话, 那么OneApmAgent.class所在的包名不会被混淆, Name 是限制 OneApmAgent.class 所在的包名, 只有包名配置 Name 的 OneApmAgent.class才会被混淆设置完后可以看到添加了一条配置信息
根据 ZKM 混淆规则 的确是 任意包名下的 名为 OneApmAgent 的类的所有 public 方法均不混淆, 同时不混淆 OneApmAgent类名,以及所在的包名。 - 设置 Obfuscate Options, 主要是配置一些信息
- 设置 Save Classes 点击 Next - 点击 ok, 这里是配置混淆后的 jar 保存路径,

一路确定, 到这混淆就正式开始了, 混淆后的 jar 包 可以在这里配置的路径下找到
- 查看和保存 ZMK Script, 这样以后就可以直接用这个脚本来混淆了


参考
ZKM混淆工具的更多相关文章
- [转载]Dotfuscator Professional Edition 4.9.7500.9484 混淆工具破解版+使用教程
如有转载,请注明出处: http://www.cnblogs.com/flydoos/archive/2012/01/26/2329536.html Dotfuscator Professional ...
- Java代码混淆工具ProGuard
目录 Java代码混淆工具ProGuard 简介 描述 作用的环境 功能 工作原理 下载 使用时注意事项 版本问题 JDK位数问题 Java的字节码验证问题 关于使用类似于Hibernate的对象关系 ...
- .Net混淆工具和反混淆工具
一.简介 本文给大家列举一些常用的.net程序反破解代码混淆工具.同时也列取一些反混淆工具. 二.混淆工具 Agile.NET (aka CliSecure) Babel.NET CodeFort C ...
- 技术分享:几种常见的JavaScript混淆和反混淆工具分析实战【转】
信息安全常被描述成一场军备竞赛,白帽与黑帽,渗透测试者与黑客,善与恶,本文将聚焦这场永无止境决斗中的一个小点. HTML5 & JS 应用中充满着对输入进行验证/注入的问题,需要开发人员始终保 ...
- 几种常见的JavaScript混淆和反混淆工具分析实战
几种常见的JavaScript混淆和反混淆工具分析实战 xiaix2016-03-05+8共1195751人围观 ,发现 5 个不明物体WEB安全 信息安全常被描述成一场军备竞赛,白帽与黑帽,渗透测试 ...
- java混淆工具Jocky和Proguard
java混淆工具有很多种,这里介绍Jocky和Proguard 一:Jocky是金蝶中间件技术领袖袁红岗先生的个人作品(旧有名称JOC).原本是方便Apusic 应用服务器的开发,现在开放出来,供大家 ...
- .NET代码混淆工具NET Reactor - 初学者系列-学习者系列文章
这几天无事,除了看书,然后就倒腾原来的代码.想起.NET的代码混淆工具软件,所以今天就讲讲这个.NET代码混淆工具. .NET代码混淆工具软件,以前有了解和找过,但是当时需求不大,所以找了下就搁置了. ...
- java混淆工具 字符串加密 程序加密 代码逻辑混淆 防止反编译
混淆工具使用文档 ht-confusion-project1.0.0 目 录 1.功能介绍... 1 2.安装说明... 3 2.1Window查询jdk版本(点击开始菜单,输入cmd, 输入java ...
- JS,html压缩及混淆工具
现在已经出现了不少有自己特色的: JSMin Javascript compressor Packer Closure Compiler YUI Compressor Pretty Diff Java ...
随机推荐
- python随便笔记。。。
一.input().strip(),strip()的作用是不读取用户输入的空格 s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除序列的字符s.lstrip(rm) ...
- splinter(python操作浏览器魔魁啊)
from splinter import Browser def main(): browser = Browser() browser.visit('http://google.com') brow ...
- php上传大文件设置方法
打开php.ini,首先找到 ;;;;;;;;;;;;;;;; ; file uploads ; ;;;;;;;;;;;;;;;; 区域,有影响文件上传的以下几个参数: file_uploads = ...
- 【英语魔法俱乐部——读书笔记】 3 高级句型-简化从句&倒装句(Reduced Clauses、Inverted Sentences) 【完结】
[英语魔法俱乐部——读书笔记] 3 高级句型-简化从句&倒装句(Reduced Clauses.Inverted Sentences):(3.1)从属从句简化的通则.(3.2)形容词从句简化. ...
- android_demo之自动生成动态表格
今天我们学习了如何更好的利用Android 的 layout 布局. 接下来是个简单的栗子去了解这个自动生成的动态的控件(自动生成表格) 这是我们的layout 页面 <?xml version ...
- fedora25 下配置samba
本例是在 / 目录下建立share 文件夹为例 Sudo dnf install samba samba-common samba-clientsudo mkdir /share sudo chmod ...
- 单位换算(格式化十进制数-B),获取时间工具类CommenUtil
package com.example.administrator.filemanager.utils;import java.text.DecimalFormat;import java.text. ...
- 新年PR交期回写,展望期由14天改为30天,FP_PR2SAP ;转单量改为100W;FP_PR2SAP_MOD_NEW
- IPython, Notebook, NumPy, SciPy, matplotlib 和其它
安装这些工具pip install ipython pip install notebookpip install numpypip install scipypip install matplotl ...
- 常见绘图框架-(Charts)
swift 出来后有很多优秀的第三方绘图.动画框架,最近项目需要使用了 Charts Github: https://github.com/danielgindi/Charts 因为是在Object- ...