网站首页 > java教程 正文
从事Java编程的人都知道,可以通过逆向工程反编译得到Java程序的源代码,这种反编译工具之一就是JAD。因此,为保护我们的劳动成果,尽可能给反编译人员制造障碍,我们可以使用Java Obfuscator(Java混淆器)保护Java的类文件。
Java Obfuscator的原理就是将字节码转换为一个逻辑上的对等物,这种转换后的版本极难拆散。即使有人试图去反编译,过程将极其艰难复杂,并很难绕过转换后模糊晦涩的编码。主要的过程如下:
用一个常规编译器(比如JDK)编译Java源代码运行混淆器,在受保护的环境下生成编译类文件。最后生成的会是一个不同的输出文档,也许扩展名也会不同。
这个被重命名为.class file的文件在功能上与原字节码是对等的,由于虚拟机仍然可以对其进行解译,因此对性能不会产生影响。
介绍五种可用来混淆(obfuscate)Java字节码的常用工具:
Zelix KlassMaster
Zelix KlassMaster是一款用Java写的实用工具,能读取和修改Java类文件,可以运行在任何支持1.1.6版Java虚拟机的平台上。
Cinnabar Canner
Canner通过创建一个原生Windows可执行文件(EXE文件)保护你的代码不被逆向工程反编译,这个可执行文件包含了你的应用程序类和资源的全部加密版本,只有在被JVM调用到中时才处于非加密状态。
Jmangle Java类粉碎机
Jmangle是用来阻止反编译Java程序,降低盗版的,开发者可用其粉碎类文件中的符号。
RetroGuard
JavaGuard是一款通用的字节码混淆器,用来无缝融入你的日常构建和测试过程中,使得你辛苦编写宝贵的Java代码更加安全。
58 RetroGuard的使用方法:
官网下载 RetroGuard
RetroGuard本身是一个Java程序(一个Jar包),所以要使用的话必须先安装JDK。运行前需要设置一些环境变量,除了要在PATH中包含java的执行路径以外,还要在 CLASSPATH中加入D: retroguard\ RetroGuard.jar(假设你的 RetroGuard.jar在D:retroguard下)。如果没有设置 CLASSPATH的话也不要紧,只不过每次运行时就要通过- classpath加上路径参数。设置好运行环境以后还要准备好你要混淆的.jar文件包,至于如何把编译好的类打包成.jar文件就不在这里多说了。
RetroGuard的执行格式是: java RetroGuard[输入JAR文件[输出JAR文件["保留脚本文件"[日志文件]]。
其中″保留脚本文件″描述了那些类、函数、变量名必须保留,不能被混淆;日志文件是执行后生成的记录文件,记录的错误、混淆情况等信息。对于″保留脚本文件"可以通过一个图形界面 RGgui来设置,执行命令是: java rggui运行后,可以根据提示选择输入Jar文件,选择要保留的类、函数、变量,完成后会自动生成"保留脚本文件"。其实通常情况下只要保留运行的起始类名称就可以了。
JODE
JODE是一款含Java解码器和优化器的java包。
最后要说的是,你也可使用其他几款类似的实用工具,这些工具运用许多不同的方法达到了相同的目标。他们也有共同之处,就是允许通过不同的过程转换生成.exe文件,将.class和.jar文件模糊化。
猜你喜欢
- 2024-09-22 推荐11个GitHub上比较热门的Java项目
- 2024-09-22 「从入门到放弃-Java」并发编程-锁-synchronized
- 2024-09-22 Android Apk 文件反编译和重新打包的过程分析
- 2024-09-22 APP渗透—查脱壳、反编译、重打包签名
- 2024-09-22 通过Java反编译揭开一些问题的真相
- 2024-09-22 详解Javac编译与反编译(java编译和c编译的区别)
- 2024-09-22 初试安卓软件反编译破解软件的方法
- 2024-09-22 安卓反编译就这么简单(安卓反编译软件下载)
- 2024-09-22 Eclipse下安装Java反编译插件(eclipse添加反编译)
- 2024-09-22 介绍一个超好用的反编译工具(介绍一个超好用的反编译工具软件)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)