2020年12月18日星期五

java~jar防止反编译

对于jar包,如果是为客户私有化部署的,会将jar包给客户,这时就会有源代码泄露的风险,你的一些加密算法,密钥就公开了,所以我们需要为jar包进行加密,或者叫字节码混淆。

classfinal

classfinal是一个字节码混淆工具,我们可以直接把它集成到maven里,以插件的形式去使用它,下面是配置文件

   <plugin>    <groupId>net.roseboy</groupId>    <artifactId>classfinal-maven-plugin</artifactId>    <version>1.2.1</version>    <configuration>     <password>#</password><!-- #表示启动时不需要密码,事实上对于代码混淆来说,这个密码没什么用,它只是一个启动密码 -->     <packages>com.pkulaw.test.register</packages><!-- 加密的包名,多个包用逗号分开-->     <excludes>org.spring</excludes>     </configuration>    <executions>     <execution>      <phase>package</phase>      <goals>       <goal>classFinal</goal>      </goals>     </execution>    </executions>   </plugin>

进行maven install之后,会多生成一个jar文件,后缀是encrypted.jar,事实上,我们真实用的还是原来的jar文件,原来的jar文件才是被代码混淆的。
1

JD-GUI查看源码

通过JD-GUI我们可以查看JAR的源代码,而当你通过classfinal把jar混淆之后,你只能看到方法名,方法内容是看不到的。
2
而别一个文件,encrypted.jar后缀的,它是没有被混淆的,可以看一下图
3

另外,代码混淆工具还有很多,大家也可以尝试一下其它的工具。









原文转载:http://www.shaoqun.com/a/501373.html

跨境电商:https://www.ikjzd.com/

olive:https://www.ikjzd.com/w/2025

铭宣海淘:https://www.ikjzd.com/w/1551


对于jar包,如果是为客户私有化部署的,会将jar包给客户,这时就会有源代码泄露的风险,你的一些加密算法,密钥就公开了,所以我们需要为jar包进行加密,或者叫字节码混淆。classfinalclassfinal是一个字节码混淆工具,我们可以直接把它集成到maven里,以插件的形式去使用它,下面是配置文件<plugin><groupId>net.roseboy</gro
tchibo:tchibo
国际标准书号:国际标准书号
厦门鱼皮花生好吃吗?该怎做?:厦门鱼皮花生好吃吗?该怎做?
云南磨盘山国家森林公园怎去?:云南磨盘山国家森林公园怎去?
新疆铁路"古尔邦节"小长假发送旅客82万人次:新疆铁路"古尔邦节"小长假发送旅客82万人次

没有评论:

发表评论