JAVA加密或混淆技术总结
JAVA加密或混淆技术较多,下面以Allatori为例进行介绍。
一、 混淆器介绍
1、混淆出现的背景
Java是一种跨平台的、解释型语言,Java源代码编译成中间“字节码”存储于class文件中。由于跨平台的需要,Java字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成Java源代码。为了防止这种现象,我们可以使用Java混淆器对Java字节码进行混淆。
2、混淆器的优势
混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。被混淆过的程序代码,仍然遵照原来的档案格式和指令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号,在缺乏相应的函数名和程序注释的况下,即使被反编译,也将难以阅读。同时混淆是不可逆的,在混淆的过程中一些不影响正常运行的信息将永久丢失,这些信息的丢失使程序变得更加难以理解。
混淆器的作用不仅仅是保护代码,它也有精简编译后程序大小的作用。由于以上介绍的缩短变量和函数名以及丢失部分信息的原因, 编译后jar文件体积大约能减少25% ,这对当前费用较贵的无线网络传输是有一定意义的。
二、Allatori混淆技术介绍
Allatori是一个Java 混淆器,它属于第二代的混淆器,因此它能够全方位的保护你的知识产权。 Allatori具有以下几种保护方式:命名混淆,流混淆,调试信息混淆,字符串混淆,以及水印技术。对于教育和非商业项目来说这个混淆器是免费的。新版本支持war和ear文件格式,并且允许对需要混淆代码的应用程序添加有效日期。
三、Allatori使用和操作
从官网下载完成并解压后,会出现一个allatori.jar文件,那么它的混淆技术就是依靠这个包去实现的
1、 文件结构
解压后的目录
混淆时依赖的jar包
下面是官方带的例子,里面有配置文件(config.xml)、运行混淆的命令文件(RunAllatori.bat)、清除产生的新文件的命令文件(Clean.bat)、将要被混淆的jar文件(test.jar、mousegestures-1.2.jar)
示例图
2、文件详细说明
图中各个文件的内容可以从下图中看到:
1、 Clean.bat
就是删除生成的被混淆的文件和log文件
Clean.bat文件内容
2、 RunAllatori
调用Java命令运行allatori.jar文件,并且加载config.xml配置文件
RunAllatori文件内容
3、 config.xml
配置文件,是混淆过程中最重要的文件,需要用户根据实际情况来配置
Config.xml文件内容
4、 配置文件
config标签:这个是配置的根标签。
Jars标签:用来设置将要被混淆的jar(war,ear)文件。应该至少包含一个嵌套的jar标签和dir标签来设置输入和输出文件。我们的例子中可以看到包含了两个jar标签
Jar标签:有两个属性—in、out,分别表示将要被混淆的jar文件和混淆后输出的文件
Keep-names标签:用来设置那些在混淆过程中不需要被重命名的类、方法、变量。如果被混淆的应用是个公共库,那么应该保留所有的公共接口名字不被重命令;如果是个独立的应用程序,那么将至少保留主类的名字不被重命名;当使用到反射的时候,也要保持类名和方法名字不被重命名
Property标签:用来设置不同的混淆特性的,它有两个必备的属性:name和value。Name可以设置为----log文件、字符串加密、控制混淆流程、重命名方式等
详细的配置说明参见http://www.allatori.com/doc.html
2、 混淆效果
混淆前
混淆后的反编译效果:
四、在项目中实际应用
我们拿定位服务器来进行演示。
1、导出应用为war包
选择war file
选择保存的路径
点击Finish
2、准备lib包和编写配置文件
准备的文件
Lib目录里面是gmlc运行所需要的jar包
配置文件
运行文件
3、运行开始命令
双击RunAllatori.bat文件
运行完成后会生成两个文件:gmlc.allobf.war、log.xml文件
Log.xml文件内容:
通过log.xml文件可以查看哪些类、方法、变量被混淆后重命名成什么样的名字
而gmlc.allobf.war就是混淆后的工件了,可以直接发布部署到tomcat的webapps目录下,启动tomcat就可以访问了(当然启动之前修改一下名字,改为gmlc.war)
JAVA加密或混淆技术总结相关推荐
- JavaScript 网站加密和混淆技术
1.网站加密和混淆技术简介 随着大数据时代的发展,各个公司的数据保护意识越来越强,大家都在想尽办法保护自家产品的数据不轻易被爬虫爬走.由于网页是提供信息和服务的重要载体,所以对网页上的信息进行保护就成 ...
- 总结一些网站加密和混淆技术
" 阅读本文大概需要 10 分钟. " 我们在爬取网站的时候,经常会遇到各种各样类似加密的情形,比如说: 某个网站的 URL 带有一些看不太懂的长串加密参数,要抓取就必须要懂得这些 ...
- java中解密技术是什么_详解Java 加密解密技术的分类和归纳
这篇文章主要介绍了Java加密解密基础分类方法汇总的相关资料,需要的朋友可以参考下 Java 加密解密基础: 密码学是研究编制密码和破译密码的技术科学.研究密码变化的客观规律,应用于编制密码以保守通信 ...
- Java加密技术(四)——非对称加密算法RSA
转自:http://snowolf.iteye.com/blog/381767 接下来我们介绍典型的非对称加密算法--RSA RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能 ...
- Java进阶(七)Java加密技术之非对称加密算法RSA
Java加密技术(四)--非对称加密算法RSA 非对称加密算法--RSA 基本概念 非对称加密算法是一种密钥的保密方法. 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(priv ...
- Java加密技术(十一)——双向认证
对于双向认证,做一个简单的描述. 服务器端下发证书,客户端接受证书.证书带有公钥信息,用于验证服务器端.对数据加密/解密,起到OSI五类服务的认证(鉴别)服务和保密性服务. 这只是单向认证,为什么? ...
- 被黑客们使用的代码混淆技术
长久以来,代码混淆技术一直都被认为是不能登大雅之堂的奇巧淫技,没有哪个学者会拿正眼瞧它一眼.国际C语言混乱代码大赛(International Obfuscated C Code Contest,IO ...
- Android混淆技术综述
1. 引入 大量的恶意软件都使用了混淆技术来逃检测.查了下Android混淆技术,看了如下两篇资料: Understanding Android Obfuscation Techniques: A L ...
- Java代码加密,Java加密方式,Java加密使用说明
概述 Java2C针对DEX文件进行加密保护,将DEX文件中标记的Java代码翻译为C代码,编译成加固后的SO文件.默认情况只加密activity中的onCreate函数,如果开发者想加密其它类和方法 ...
- 代码混淆技术yguard、ProGuard、Allatori
混淆 Java的bytecode很容易通过JAD等反编译工具还原出源代码.这样势必不满足安全的定义.如何一定程度上保护需要防止被反编译的源代码呢?混淆(obfuscate)技术.注意:用obfusca ...
最新文章
- Scikit Learn: 在python中机器学习
- 使用numpy与matplotlib.pyplot画图
- Minimum supported Gradle version is 6.5. Current version is 6.1.1. If using the gradle wrapper, try
- iOS Mac JSON To Model
- 【UVA1638】杆子的排列
- windows phone 8 使用页面传对象的方式 实现页面间的多值传递
- 北理计算机网络实验汇编,北理计算机与网络实验(II)(汇编语言实验4).docx
- c++虚函数和虚函数表
- java 移动页面中的图片上传_移动端上传图片(ajax跨域请求)
- C#LeetCode刷题之#633-平方数之和( Sum of Square Numbers)
- python输入框输入提交_python文本文件处理和用户输入
- Java正常关闭资源的方式
- 【华为云技术分享】圣诞特别版 | 数据库频频出现OOM问题该如何化解?
- Android安全开发之WebView中的地雷
- 【Android】实验3 颜色、字符串资源的使用【提交截止时间:2016.4.1】
- WebRTC报错:depot_tools/bootstrap_python3: um.8_bin/python3/bin/python3: 没有那个文件或目录(三)
- 面向对象-类与对象、关键字、异常使用
- PHP人民币金额数字转中文大写的函数
- 2018年注册测绘师考试详情解析
- 上网本之必备网络工具推荐