导航:首页 > 编程语言 > java混淆编译

java混淆编译

发布时间:2024-12-30 04:08:03

javaweb项目做混淆的详细步骤

混淆的工具很多,最常用的为retroguard.
Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候。所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译。反编译工具有很多种,其中非常强大的一种是 jad。
为了避免出现这种情况,保护开发者的劳动,又有一种叫做 Java 混淆器的工具被开发出来。Java 混淆器的作用是对编译好的代码进行混淆,使得其无法被反编译或者反编译后的代码混乱难懂。Java 混淆器也有很多种,其中比较强大的一种是 RetroGuard(只说比较强大是因为我对其功效还是有些怀疑的)。

这里我介绍一下 RetroGuard 的使用方法。
将下载的 .tar.gz 或者 .zip 文件解压。有用的只有 retroguard.jar 一个文件,其它的是源代码和文档。
RetroGuard 是针对 jar 文件做混淆的。使用之前需要先配置一下。可以手工编辑配置文件,更好的方法是使用 RetroGuard 提供的 GUI 工具来生成配置文件。使用方法如下:
java -classpath retroguard.jar;xxx.jar;yyy.zip;... RGgui
然后在 GUI 的 Wizard 中设置各个参数。上面的 -classpath 中应该列出要混淆的 jar 所依赖的所有的包。
RGgui 的详细使用方法可以看 RetroGuard 的文档 docs.html。
配置文件生成后,就可以运行 RetroGuard 进行混淆了。使用方法如下:
java -classpath xxx.jar;yyy.zip;... RetroGuard vvv-unofb.jar vvv.jar vvv.rgs vvv.log
其中 vvv-unofb.jar 是未混淆的 jar 文件,vvv.jar 是混淆后生成的 jar 文件,vvv.rgs 是配置文件,vvv.log 是日志文件。缺省的配置文件名称为 script.rgs,缺省的日志文件名称为 retroguard.log。

在生成配置文件时需要注意的是:
1、所有 public 的类名、方法名、变量名应该全部保留。因为所有设置为 public 的内容代表了整个包对外表现的接口。若某个内容不想为外界访问,就不应该设置为 public 的。
2、若包中某个类使用了 java.lang.Class 或者 java.lang.ClassLoader 中的某个方法加载了一个类,若这个类在包外,不需要特别处理;若这个类在包内,则需要保留这个类的类名,否则混淆后会找不到这个类。
3、在包中的所有调试信息(源文件名、行号、变量/参数信息等等)应全部删除。

⑵ Java项目源码为什么要做代码混淆

一般走代码混淆就是为了保护源代码,让别人不至于通过反编译轻易的获得源代码

⑶ 如何混淆Java编译后的类或jar,或将jar编译成exe,使人无法反编译获得源代码

所谓的将class或者jar打包成exe,其实就是讲java的运行环境和自己写的java类及jar用软件处理后,在用户点击exe文件时,该exe文件会进行java运行环境的安装和class文件的部署

⑷ javacompile混淆器怎么混淆后的class文件还是可以被反编译出来呢求高手指点....

混淆的作用复并不是使制class文件不能被反编译
混淆的作用是使反编译的代码更难让人阅读,比如一些计算金钱的敏感逻辑里有如下的代码(新金额=旧金额*某个倍率):
double newMoney=oldMoney*rate;
如果这样的代码直接编译成class文件,别人反编译这个class文件就能很清楚的看到金钱的计算关系,混淆后代码可能就变成这样的了:
double a=b*c;
这样的代码别人即使反编译了,也是很难看懂其中的逻辑关系的

⑸ java混淆器是做什么的

用java写的代码 编译后成为.class文件 但是这个class文件可以被反编译查看到源代码
如果代码作者不希望源专代码被别人看属到 就利用混淆器把源代码混淆 但是程序功能还是正常的,编译后供别人使用,当别人反编译class文件想查看源代码时发现的是被混淆后的代码,虽然这些混淆后的代码也可以分析出来但是很困难
举个例子
class Person
{
private String name;
private int age;
public Person( String n, int a ){
name = n;
age = a;
}
}
混淆后
class OOOOo{
private String oooo;
private int ooo;
public OOOOo( String oo, int o){
oooo = oo;
ooo = o;
}
}

⑹ JAVA 有对源代码进行混淆的混淆器么

不需要对源代码混淆。class有这种功能的,在J2ME中混淆是必须的,结果跟你说的一样,不过原理不是你那么走的,混淆以后的class反编译也会让人看不懂,全部变成了a,b,c,d这样的名字。

阅读全文

与java混淆编译相关的资料

热点内容
jsp向servlet传递数据 浏览:269
桌面出现一个文件夹怎么删除 浏览:563
山寨iphone5s拆机 浏览:303
关闭win7自动升级wi10 浏览:100
iphone6图片编辑软件 浏览:105
核桃编程今年怎么样 浏览:395
手机怎么打开dwg文件 浏览:505
ps文件建立的两种方式 浏览:934
mfc配置文件管理 浏览:640
如何恢复被彻底删除的文件 浏览:327
教程录制 浏览:940
右键新建添加word 浏览:34
word恢复文件如何打开 浏览:103
85版本下级元素结晶 浏览:424
添加网络打印机不打印 浏览:720
苹果6s手机字典用不了 浏览:962
射手播放器字幕文件夹 浏览:60
如何查看cad原文件的字体 浏览:260
苹果平板型号a1395 浏览:116
html中添加php代码 浏览:712

友情链接