为了防止代码很容易被反编译而造成泄露,所以打包时进行代码混淆

使用 proguard-maven-plugin插件

  1. <build>
  2. <finalName>${artifactId}</finalName>
  3. <plugins>
  4. <plugin>
  5. <groupId>com.github.wvengen</groupId>
  6. <artifactId>proguard-maven-plugin</artifactId>
  7. <executions>
  8. <execution>
  9. <phase>package</phase>
  10. <goals><goal>proguard</goal></goals>
  11. </execution>
  12. </executions>
  13. <configuration>
  14. <proguardVersion>6.0.</proguardVersion>
  15. <injar>${project.build.finalName}.jar</injar>
  16. <outjar>${project.build.finalName}.jar</outjar>
  17. <obfuscate>true</obfuscate>
  18. <proguardInclude>${basedir}/proguard.conf</proguardInclude>
  19. <libs>
  20. <lib>${java.home}/lib/rt.jar</lib>
  21. <lib>${java.home}/lib/jce.jar</lib>
  22. </libs>
  23. </configuration>
  24. <dependencies>
  25. <dependency>
  26. <groupId>net.sf.proguard</groupId>
  27. <artifactId>proguard-base</artifactId>
  28. <version>6.0.</version>
  29. </dependency>
  30. </dependencies>
  31. </plugin>
  32. <plugin>
  33. <groupId>org.springframework.boot</groupId>
  34. <artifactId>spring-boot-maven-plugin</artifactId>
  35. <executions>
  36. <execution>
  37. <goals>
  38. <goal>repackage</goal>
  39. </goals>
  40. <configuration>
  41. <mainClass>com.abc.xyz.BWMApiApplication</mainClass>
  42. </configuration>
  43. </execution>
  44. </executions>
  45. </plugin>
  46.  
  47. </plugins>
  48.  
  49. </build>

proguard的阶段为package

springboot打包在repackage阶段

proguard.conf

  1. -target 1.8
  2. -dontshrink
  3. -dontoptimize
  4. -adaptclassstrings
  5. -ignorewarnings
  6. -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
  7. -keepnames interface **
  8. -keepparameternames
  9. -keep class com.abc.xyz.BWMApiApplication { *; }
  10. -keep class com.abc.xyz.configure.** { *; }
  11. -keep class com.abc.xyz.core.** { *; }
  12. -keep class com.abc.xyz.controller.** { *; }
  13. -keep class com.abc.xyz.model.** { *; }
  14. -keep interface * extends * { *; }
  15. -keepclassmembers class * {
  16. @org.springframework.beans.factory.annotation.Autowired *;
  17. @org.springframework.beans.factory.annotation.Value *;
  18. }

proguard混淆不能指定混淆的类名在basePackages下面类名混淆后唯一,不同包名经常有a.class,b.class,c.class之类重复的类名

spring容器初始化bean的时候会报错

修改启动类

  1. package com.xyz.abc;
  2.  
  3. import org.springframework.beans.factory.config.BeanDefinition;
  4. import org.springframework.beans.factory.support.BeanDefinitionRegistry;
  5. import org.springframework.beans.factory.support.BeanNameGenerator;
  6. import org.springframework.boot.autoconfigure.SpringBootApplication;
  7. import org.springframework.boot.builder.SpringApplicationBuilder;
  8.  
  9. @SpringBootApplication
  10. public class BWMApiApplication {
  11.  
  12. public static class CustomGenerator implements BeanNameGenerator {
  13.  
  14. @Override
  15. public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) {
  16. return definition.getBeanClassName();
  17. }
  18. }
  19.  
  20. public static void main(String[] args) {
  21. new SpringApplicationBuilder(BWMApiApplication.class)
  22. .beanNameGenerator(new CustomGenerator())
  23. .run(args);
  24. }
  25. }

如果有报错可以手动执行打包命令

  1. mvn clean package -DskipTests=true -P obfuscation

spring boot2X代码混淆的更多相关文章

  1. 基于ProGuard-Maven-Plugin的自定义代码混淆插件

    介绍 大家可能都会碰到一些代码比较敏感的项目场景,这个时候代码被反编译看到就不好了,这个时候就需要代码混淆插件来对代码进行混淆了. 基于Maven的项目一般会去考虑使用proguard-maven-p ...

  2. Java代码混淆工具ProGuard

    目录 Java代码混淆工具ProGuard 简介 描述 作用的环境 功能 工作原理 下载 使用时注意事项 版本问题 JDK位数问题 Java的字节码验证问题 关于使用类似于Hibernate的对象关系 ...

  3. springboot2.x+maven+proguard代码混淆

    由于需要将源码打包做代码混淆,选择proguard,开始使用各种问题,各种jar包版本问题,但最终成功了,记录一下,也希望能够帮助大家 在pom中添加代码: <build> <fin ...

  4. 【Android】Android Studio 进行代码混淆,打包release APK

    整了一天,感觉坑挺多. 1. 选择如图中的选项Android Studio进行签名打包: 2. 填写APP对应的信息:(最好用个文本记下来放在项目中同步给Team) - Key store path: ...

  5. ProGuard代码混淆技术详解

    前言     受<APP研发录>启发,里面讲到一名Android程序员,在工作一段时间后,会感觉到迷茫,想进阶的话接下去是看Android系统源码呢,还是每天继续做应用,毕竟每天都是画UI ...

  6. Android Studio代码混淆插件

    之前给公司的App添加代码混淆,在代码的混淆过程也遇到了不少的问题,再加上最近学习了一下Android Studio插件的开发,所以就开发一个代码混淆插件方便项目的代码混淆. 截图 第三方库列表清单 ...

  7. 77.Android之代码混淆

    转载:http://www.jianshu.com/p/7436a1a32891 简介 作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使 ...

  8. Android 代码混淆、第三方平台加固加密、渠道分发 完整教程(图文)

    第一步:代码混淆(注意引入的第三方jar) 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt. ...

  9. 推荐一个C#代码混淆器 .NET Reactor【转】

    C#的代码辛苦写出来之后,一个反射工具,就可以完全显露出来. 当然,在做项目时,这个功能还不错.因为我就曾在一个项目上使用C#,没有进行任何混淆.结果在项目二年多之后,需要做一些调整,自己保存的源代码 ...

随机推荐

  1. eclipse运行mapreduce的wordcount

    1,eclipse安装hadoop插件 插件下载地址:链接: https://pan.baidu.com/s/1U4_6kLFNiKeLsGfO7ahXew 提取码: as9e 下载hadoop-ec ...

  2. ffmpeg学习笔记-Linux下编译Android动态库

    Android平台要使用ffmpeg就需要编译生成动态库,这里采用Ubuntu编译Android动态库 文件准备 要编译生成Android需要以下文件 NDK ffmpeg源代码 NDK下载 NDK可 ...

  3. UWP笔记-消息弹窗自动淡出

    为了让用户有个更好的UI交互,可以增加自动淡出的消息弹窗,例如:网易云音乐UWP,切换播放模式时,出现的类似消息提示. 右键项目,添加用户控件 UserControlDemo.xaml: <Us ...

  4. 常见的几种web攻击

    1. SQL注入 2. OS命令注入 3. 跨站脚本攻击(XSS) 4. HTTP首部注入 5. 会话劫持 6. 跨站点请求伪造(CSRF) 7. 点击劫持 8. DoS

  5. FastAdmin

    FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架. 感觉挺好用的. 开发文档https://doc.fastadmin.net/docs/index.html 根据 ...

  6. vue—组件通信,ref

    组件通信: 父组件传递子组件: 把需要的数据 传递给 子组件的数据,以数据绑定(v-bind)的形式,传递到子组件内部,供子组件使用,缩写(:) 动态传递: 第一步:在父组件中的子组件标签中进行动态的 ...

  7. Idea中maven的设置

    File->setting    输入MAVEN     看到右侧设置情况     Maven home directory 熟路本地moven 仓库目录:D:/springboot/apach ...

  8. ORC相关的库介绍和应用

    将图像翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR) OCR库:Pillow.Tesseract.NumPy Pillow Pillow可以对图 ...

  9. python 分支语句 等值判断 逻辑运算符

    # 分支语句age = 233if age < 18: print('您还未满18岁,禁止入内')elif age > 18 and age < 60: print("欢迎 ...

  10. 【转载】STM32 IAP 在线升级详解

      (扩展-IAP主要用于产品出厂后应用程序的更新作用,考虑到出厂时要先烧写IAP  再烧写APP应用程序要烧写2次增加工人劳动力基础上写了“STM32 IAP+APP ==>双剑合一”链接稍后 ...