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 ...
随机推荐
- ajax 对象创建 兼容各个浏览器
<script> function createAjax(){ var request=false; //window对象中有XMLHttpRequest存在就是非IE,包括(IE7,IE ...
- HTTP权威协议笔记-5.Web服务器
5.1 Web服务器工作内容 建立连接--接受一个客户端的连接,或者将其拒绝 接受请求--从网络中读取一条HTTP报文 处理请求--对请求报文进行解释,并采取行动 访问资源--访问报文中指定的资源 构 ...
- ASP.NET Misconfiguration: Request Validation Disabled
Abstract: Use the ASP.NET validation framework to prevent vulnerabilities that result from unchecked ...
- nodejs安装心得
首先下载nodejs,http://nodejs.org/download/ 配置系统环境变量 管理员运行cmd, 输入命令 node -v 查看版本 安装npm Npm安装命令 npm-1.3.15 ...
- AsyncTask介绍
AsyncTask介绍 AsyncTask比Handler更轻量级一些,适用于简单的异步处理. 使用AsyncTask时,注意重写以下几个方法: 1. doInBackground() 作用:执行后台 ...
- EditPlus远程编辑、语法高亮、编译运行源代码设置
最近写代码的过程中,除了写Java时用的Eclipse.在Linux下编辑的Vi之外,有时也会用EditPlus打开一些文件,如配置文件.日志文件.脚本等.个人觉得EditPlus在很多场景下比较好用 ...
- SecureCRT和SecureFx设置中文乱码
SecureCRT和SecureFx设置中文乱码 SecureCRT和SecureFx连接服务器时中文显示乱码,找了好多资料好久都没整出来,后来整出来了,因此把个人的解决办法提供出来,已变帮助更多的人 ...
- dataguru(炼数成金)大数据培训基地印象
dataguru访问地址:http://f.dataguru.cn/?fromuid=99611 课程优惠码:C4B6 这段时间一直在dataguru(炼数成金)上学习<hadoop数据分析平 ...
- 数据库mysql优化方案
1.创建索引对于查询占主要的应用来说,索引显得尤为重要.很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致.如果不加索引的话,那么查找任何哪怕只是一条特定的数据 ...
- EF外键关联
客户里面存在客服外键 基类模型 public class ModelBase { public ModelBase() { CreateTime = DateTime.Now; } [Key] pub ...