spring-boot-maven-plugin详解,如何将spring-boot-loader打到jar包

       最近针对代码安全保护需求进行技术调研,因为java文件编译成为class之后,可以通过反编译工具jd查看代码的逻辑,以及执行过程。为了防止class文件被反编译,调研了多种处理方案,其中最常见的就是代码混淆和class文件加密。目前proguard做的还不错,相关文章也比较多,但是复杂度还是有的,可以自行了解。接下要说的就是class文件加密技术,可以采用对称加密和非对称加密,算法也有很多种,对称加密一般采用AES,目前采用AES。

       那么对class文件加密后,在什么地方解密呢?一般是在内存解密,即在classloader加载类的时候解密。此处需要了解classloader加载类的机制和过程。之前项目打成的war包,所以专门定制了一个tomcat,以此保护代码,但是只要找到类加载的地方,也是可以解密的。引申一下,如果想要保护的更加安全,就需要修改native方法,即定制jvm,修改c代码,这样破解的难度就非常大了。另外的方式,也可以采用加密狗,通过加密狗的方式进行保护。

       目前对springboot的包进行加密,采用xjar,在GitHub上开源,也是比较活跃的,通过源码分析,其实也就是自己实现了一个classloader,然后classloader对加载的class进行解密。对于代码保护还是比较有用的,可以自行了解一下。

       我在分析xjar的源码过程中,顺带就分析了一下spring-boot-maven-plugin,这个插件是对springboot打成可运行的jar包,通过jar包分析,我们可以看到多了spring-boot-loader的文件,如下图:

     那么loader是从何而来,有没有在maven中引入loader的工程。通过springboot的文档了解,该loader是通过spring-boot-maven-plugin插件打包进来的,那么接下来就分析一下这个插件。

     首先在springboot工程的pom文件中额外引入如下的依赖:

    

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-loader</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-loader-tools</artifactId>
   <version>2.1.6.RELEASE</version>
&l
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值