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 ...
随机推荐
- AKKA(一)认知AKKA
Akka 是一个用 Scala 编写的库,用于简化编写容错的.高可伸缩性的 Java 和 Scala 的 Actor 模型应用.它已经成功运用在电信行业.系统几乎不会宕机(高可用性 99.999999 ...
- ipython notebook设置工作路径和自动保存.py文件 ipython_notebook_config.py
在安装完Anaconda,选择了配置环境变量后,打开cmd命令行 1. 打开命令行, 键入 ipython profile create 2. 键入 , 根据这个地址, 打开profile所在的文件夹 ...
- python Tab自动补全命令设置
Mac/Windows下需要安装模块儿 pip install pyreadline pip install rlcompleter pip install readline 注意,需要先安装pyre ...
- 转 LoadRunner 技巧之THML 与 URL两种录制模式分析
Loadrunner的Virtual User Generator 提供人脚本的录制功能,对于初学者来说,这大大的降低了编写脚本的门槛,loadrunner提供两种录制脚本的方式:Html_based ...
- btrfs-snapper 实现Linux 文件系统快照回滚
###btrfs-snapper 应用 ----------####环境介绍> btrfs文件系统是从ext4过渡而来的被誉为“下一代的文件系统”.该文件系统具有高扩展性(B-tree).数据一 ...
- elasticsearch5.0集群+kibana5.0+head插件插件的安装
elasticsearch5.0集群+kibana5.0+head插件插件的安装 es集群的规划: 两台16核64G内存的服务器: yunva_etl_es1 ip:1.1.1.1 u04es01. ...
- Java入门记(三):初始化顺序
初始化顺序的规则 1.在一个类的对象实例化时,成员变量首先初始化,然后才调用构造器,无论书写顺序.如果调用构造器前,没有显式初始化,那么会赋默认值. 这样做法的原因可以理解为:构造器执行时可能会用到一 ...
- 策划了个.NET控件的案例大赛
任何一个产品的普及,都有一个过程: 1. 对新事物充满热情.喜欢尝鲜.或后急迫需要的人首先成为产品用户.他们总数很少,但是是产品用户的第一批种子. 2. 思想比较开放.能接受新事物的人会成为第二批用户 ...
- [原]通过配合ffmpeg.exe获取视频文件时长
import subprocess import os import time def getTime(flvpath,fid): #file_str = '1.flv' file_str = flv ...
- mysql - join two derived tables
select t1.uid from (select uid from table1) t1 inner join (select uid from table2) t2 where t1.uid=t ...