混淆代码 是为了防止class文件被反编译用的 但是程序的功能还是正常的 和你正常运行一样
网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了潢川免费建站欢迎大家使用!
如果连变量名都混淆了,就是说所有有具体意义的英文变量名都用a,b,c,x,y等等来表示,那这是不可能还原的,因为电脑也不可能知道你这个a实际上代表了你的年龄而那个c代表了你老婆的胸围!
但如果只是个事混淆,那网上倒有不少工具可以格式化源代码!自己搜一搜吧!推荐一款编辑器,IntelliJ,很不错,值得一提的是,我用过的众多编辑器中,这款编辑器的代码格式化功能最强大!
java知识点不多,但是有一些经常会被我们忽略
1.java是强类型的语言,数组也是对象,一旦确定数组的类型,里面就只能存放一个类型的数据。
2.新建的对象都被存放到堆上,如果没有引用,会很快垃圾回收。
3.java没有全局变量和方法这个概念,全局方法,被加上static关键字,全局的变量是,static final
4.java是值传递,对于primitive基本类型,是拷贝数值,对于复杂对象类型是拷贝引用,操作会影响原来额数据。
5.实例变量声明在类内,局部变量声明在方法内,局部变量使用前必须被初始化。
6.方法的覆盖不能降低开放的权限。
7.判断是否继承,需要判断是否有is-a关系。
8.有一个方法是抽象方法,类也必须是抽象类,抽象类可以有抽象方法也可以有非抽象的方法。
9.在java中,程序员会在意两个区域,对象存在的空间堆,方法和变量存在空间栈,变量存在于哪一个空间要看他的类型而定,实例变量属于对象,存在于堆,局部变量又叫栈变量(包括方法参数和内部的变量)。
10.对象局部变量是一个引用类型,会放在栈上。
11.对于java来说所有的引用类型的大小都是固定的,
12.new 对象时候,第一件事情是去执行他的父类的构造函数,一直到object的构造函数,叫做构造函数调用链条。
13.局部变量的生存周期是方法的堆栈区存在,既是方法被调用期间,使用范围是方法的内部。
14.对象的销毁一定是没有引用指向的时候,会被垃圾回收器回收,
三个主要的方式:
1.方法里面的局部对象变量在方法结束后
2.唯一的引用指向其他的对象
3.引用设为null
15.静态方法不能调用非静态的变量和方法,静态变量的值对于所有的对象都是相同的。
很多小伙伴想要学习java技术,可以加java学习q u n :116 804 208 ,每天晚上在线直播教学,想要在线学习的伙伴可以加进来,不是想要学习的就不要加了。
不需要对源代码混淆。class有这种功能的,在J2ME中混淆是必须的,结果跟你说的一样,不过原理不是你那么走的,混淆以后的class反编译也会让人看不懂,全部变成了a,b,c,d这样的名字。
一、java web项目混淆
proguard4.8工具,说是支持war的,可混淆过后少了classes目录了,自然成功不了。网上搜的过程不详说了,最后找着--“J2EE-web工程ProGuard代码混淆07_28”,网址:
根据提示一步步完成。
把web项目打成jar包后用proguard进行混淆,然后把混淆过后的class目录替换发布包war中的对应目录,启动运行是正常的。
主要注意利用proguard生成xxx.pro文件,然后手动加工-keep class WebRoot.WEB-INFO.lib.* 等项目中不需要混淆的包和类。
二、java web项目打成.exe
没找到免费的,这搜到个收费的--Jinstall,试了下功能挺好,
可以加密、集成jdk、tomcat,如果数据库是mysql也集成,其他数据库的话要设置数据库的url.
Jocky的下载和配置
OperaMasks上的下载链接已经失效,请移步CSDN自行搜索下载
1、下载完成后解压得到名为org.apusic.jocky_1.0.3的文件夹,把这个文件夹放到eclipse根目录的plugins文件夹下(myeclipse和eclipse同理)。
2、重启eclipse,右键一个工程文件,出现Jocky选项说明OK。
3、一般是先进行设置-Jocky Settings,然后进行Jocky Now!。以下是settings界面
Enable Jocky多选框选中
Jocky build file是在项目创建一个xml文件,根据里面的配置进行混淆
Scramble level是进行混淆的代码等级,有none、private、package、protected、public、all,将根据设置对java文件中的相应修饰符修饰的方法代码进行混淆
Target VM是java虚拟机的版本,有1.4和1.5,一般选择1.5
Output directory是输出文件夹,在项目根目录下
点击确认会自动根据项目的设置生成xml文件
4、jocky_build.xml,实际上是一个ant build文件,由系统自动生成,有几处需要说明
pathelement location="bin"/ pathelement location="XXX.jar"/这类标签代表项目编译所需的jar包,由于是自动生成一般不用理睬,如果出现找不到相关的package之类的报错,那么有可能是location路径有问题。如果你安装系统时是用户名设置成了中文名,并且使用了maven,maven的jar包的下载路径设置成了默认${user}/.m2/repository/,那么jocky这里的路径会出现问题,中文名的用户名会乱码或者消失,请修改maven配置xml文件修改下载路径localRepository[自己指定的路径]/localRepository 。
javac destdir="${jocky.output.dir}/bin" target="${target}" encoding="UTF-8" 代码中如果有中文名,必须手动设定编码,默认是没有的。
src path="src"/ 设定源文件的目录,因为有时候我们只想输出src目录下的部分包而不是全部。
混淆也只能是对方法名,变量名称进行混淆;内部代码也只能是对字符串进行混淆,以及压缩等。