Java程序运行时是动态连接的,因此编译成的目标文件中包含有符号表, 使得Java程序很容易被反编译。我常用的工具有:cavaj,JAD,jd-gui.exe。比较好用的是jd-gui.exe。他是可视化的界面,可以加载一个jar包,查看他的package结构以及反编译出来的class文件,还可以一键倒出所有的class文件到java src文件。
混淆器可以打乱class文件中的符号信息,使反向工程变得非常困难。
常用的工具有:jocky,proguard还有retroguard。下边介绍一下proguard:
在输入输出页中设定要混淆的jar和要输出到目的的jar文件
在其他选项页中设定是否混淆类名等属性。
然后在处理页中直接点击执行
必要时去掉一些警告。
经过混淆后的jar文件再用jd-gui.exe打开,发现包,类名,方法名等变得难以阅读。
并且包也变得小了。比如我用了一个4.8M的jar经过压缩和混淆后变得不足3M。
如有问题可以和我联系。