目前网上通用有几种方法:
- 直接屏蔽用户访问到程序代码(人为上,物理上)
- 程序封装,避免以jar包、war包的方式启动
- java类文件加密
- java类文件混淆
1、程序封装
windows部署,可以把jar包打包成exe文件,这样屏蔽了jar包直接暴露出来。网上有一些jar-to-exe的工具
Linux部署,可以将jar包启动,配置成服务,用服务启动
2、java类文件加密
这种是指,将类文件的内容通过加密,可以导致类文件无法被正常反编译。并且当加载类文件前,需要将类文件解密。
- 将打包后的类文件,通过加密方法加密
- 自定义classLoader,重写类加载方法,读取类文件内容后,先解密,再加载
3、代码混淆
代码混淆是指,将程序类名、方法名、变量名等,进行重命名成随机的字符。这样反编译后的结果,你看到的代码可能是:类似a、b、c这样的代码,没有可读性。
这样及时反编译成功了,也不能很方便的看懂代码的意义。从而达到目的。即使要看懂,也要花费很多时间。