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加密或混淆技术总结相关推荐

  1. JavaScript 网站加密和混淆技术

    1.网站加密和混淆技术简介 随着大数据时代的发展,各个公司的数据保护意识越来越强,大家都在想尽办法保护自家产品的数据不轻易被爬虫爬走.由于网页是提供信息和服务的重要载体,所以对网页上的信息进行保护就成 ...

  2. 总结一些网站加密和混淆技术

    " 阅读本文大概需要 10 分钟. " 我们在爬取网站的时候,经常会遇到各种各样类似加密的情形,比如说: 某个网站的 URL 带有一些看不太懂的长串加密参数,要抓取就必须要懂得这些 ...

  3. java中解密技术是什么_详解Java 加密解密技术的分类和归纳

    这篇文章主要介绍了Java加密解密基础分类方法汇总的相关资料,需要的朋友可以参考下 Java 加密解密基础: 密码学是研究编制密码和破译密码的技术科学.研究密码变化的客观规律,应用于编制密码以保守通信 ...

  4. Java加密技术(四)——非对称加密算法RSA

    转自:http://snowolf.iteye.com/blog/381767 接下来我们介绍典型的非对称加密算法--RSA RSA     这种算法1978年就出现了,它是第一个既能用于数据加密也能 ...

  5. Java进阶(七)Java加密技术之非对称加密算法RSA

    Java加密技术(四)--非对称加密算法RSA 非对称加密算法--RSA 基本概念 非对称加密算法是一种密钥的保密方法. 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(priv ...

  6. Java加密技术(十一)——双向认证

    对于双向认证,做一个简单的描述.  服务器端下发证书,客户端接受证书.证书带有公钥信息,用于验证服务器端.对数据加密/解密,起到OSI五类服务的认证(鉴别)服务和保密性服务. 这只是单向认证,为什么? ...

  7. 被黑客们使用的代码混淆技术

    长久以来,代码混淆技术一直都被认为是不能登大雅之堂的奇巧淫技,没有哪个学者会拿正眼瞧它一眼.国际C语言混乱代码大赛(International Obfuscated C Code Contest,IO ...

  8. Android混淆技术综述

    1. 引入 大量的恶意软件都使用了混淆技术来逃检测.查了下Android混淆技术,看了如下两篇资料: Understanding Android Obfuscation Techniques: A L ...

  9. Java代码加密,Java加密方式,Java加密使用说明

    概述 Java2C针对DEX文件进行加密保护,将DEX文件中标记的Java代码翻译为C代码,编译成加固后的SO文件.默认情况只加密activity中的onCreate函数,如果开发者想加密其它类和方法 ...

  10. 代码混淆技术yguard、ProGuard、Allatori

    混淆 Java的bytecode很容易通过JAD等反编译工具还原出源代码.这样势必不满足安全的定义.如何一定程度上保护需要防止被反编译的源代码呢?混淆(obfuscate)技术.注意:用obfusca ...

最新文章

  1. Scikit Learn: 在python中机器学习
  2. 使用numpy与matplotlib.pyplot画图
  3. Minimum supported Gradle version is 6.5. Current version is 6.1.1. If using the gradle wrapper, try
  4. iOS Mac JSON To Model
  5. 【UVA1638】杆子的排列
  6. windows phone 8 使用页面传对象的方式 实现页面间的多值传递
  7. 北理计算机网络实验汇编,北理计算机与网络实验(II)(汇编语言实验4).docx
  8. c++虚函数和虚函数表
  9. java 移动页面中的图片上传_移动端上传图片(ajax跨域请求)
  10. C#LeetCode刷题之#633-平方数之和( Sum of Square Numbers)
  11. python输入框输入提交_python文本文件处理和用户输入
  12. Java正常关闭资源的方式
  13. 【华为云技术分享】圣诞特别版 | 数据库频频出现OOM问题该如何化解?
  14. Android安全开发之WebView中的地雷
  15. 【Android】实验3 颜色、字符串资源的使用【提交截止时间:2016.4.1】
  16. WebRTC报错:depot_tools/bootstrap_python3: um.8_bin/python3/bin/python3: 没有那个文件或目录(三)
  17. 面向对象-类与对象、关键字、异常使用
  18. PHP人民币金额数字转中文大写的函数
  19. 2018年注册测绘师考试详情解析
  20. 上网本之必备网络工具推荐

热门文章

  1. python爬虫电影资源_python爬虫批量获取最新电影资源
  2. 层次分析法AHP及Python实现
  3. SqlServer2012升级到SqlServer2016
  4. 公文排版字体要求以及印制要求
  5. [python]Python概述
  6. S32K MCAL03-如何使用EB工具配置FlexCAN的波特率
  7. 非标准的CAN波特率计算
  8. UNIX环境高级编程习题——第三章
  9. C语言入门经典(第4版)电子书pdf下载
  10. matlab前馈仿真,基于前馈神经网络的自适应PID控制器仿真研究(MATLAB仿真程序)