对springboot项目进行代码混淆,可以防止别人通过反编译项目查看代码,即使反编译了查看的也是混淆后的看不懂的代码。
一定程度保证了项目源码安全性。
下面分享代码混淆步骤和反编译操作

Allatori-7.7 代码混淆操作步骤

使用方法

1、首先从官网下载:http://www.allatori.com/

​ 我的文件不是从官网下载的其他地方也可以找到资源
后面会附上资源包
代码混淆工具下载

2、下载完解压,解压之后的目录是这样的:

将jar包放入项目中(/lib目录里面的两个文件)

  1. 配置maven插件,如果是maven多模块,可以将jar包提取到父目录共用,xml文件各自配置各自的

<plugin> <!-- 这个也要加,,没加之前一直报错 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- Allatori plugin start --><plugin><!-- resouces拷贝文件插件 --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.1.0</version><!-- 执行这个插件的时候执行申明的所有phase --><executions><execution><id>copy-and-filter-allatori-config</id><phase>package</phase><goals><goal>copy-resources</goal></goals><configuration><!-- 指明文件的输出路径 即混淆后的文件的输出路径 ${basedir}:是项目的根目录 即与src同级的目录 --><outputDirectory>${basedir}/target</outputDirectory><resources><resource><!-- 项目的resources目录,一般用于存放配置文件 --><directory>src/main/resources</directory><includes><!-- 代码混淆时所依据的配置文件 可以看出,我放在了resources目录下   这个文件将会被拷贝到 ${basedir}/target 目录下--><include>allatori.xml</include></includes><filtering>true</filtering></resource></resources></configuration></execution></executions></plugin><plugin><!-- 代码混淆打包插件 --><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>1.6.0</version><executions><execution><id>run-allatori</id><phase>package</phase><goals><goal>exec</goal></goals></execution></executions><configuration><executable>java</executable><arguments><argument>-Xms128m</argument><argument>-Xmx512m</argument><argument>-jar</argument><!-- 指定引用的allatori的jar包位置,这里把jar包放在了根目录下的lib目录里 --><argument>${basedir}/lib/allatori.jar</argument><!-- 指定代码混淆时的配置文件,因为是混淆指定的是jar包,jar包位置在target下,所以我们的allatori.xml也需要拷贝到该目录下(上面的拷贝文件插件已经帮我们做了这些事) --><argument>${basedir}/target/allatori.xml</argument></arguments></configuration></plugin><!-- Allatori plugin end -->

配置allatori.xml文件,配置混淆规则 文件放在/src/resources/下面

<config><input><jar in="licensemanagement-1.0-SNAPSHOT.jar" out="aa-allatori.jar"/></input><ignore-classes><class template="class *springframework*"/><class template="class *jni*"/><class template="class *alibaba*"/><class template="class *persistence*"/><class template="class *apache*"/><class template="class *mybatis*"/><class template="class *github*"/><class template="class com.lpx.licensemanagement.anotation.*"/><class template="class com.lpx.licensemanagement.aspect.*"/><class template="class com.lpx.licensemanagement.async.*"/><class template="class com.lpx.licensemanagement.config.*"/>
<!--        <class template="class com.lpx.licensemanagement.controller.*"/>--><class template="class com.lpx.licensemanagement.entity.*"/><class template="class com.lpx.licensemanagement.enums.*"/><class template="class com.lpx.licensemanagement.exception.*"/><class template="class com.lpx.licensemanagement.filter.*"/><class template="class com.lpx.licensemanagement.interceptor.*"/><class template="class com.lpx.licensemanagement.interfaces.*"/><class template="class com.lpx.licensemanagement.mapper.*"/><class template="class com.lpx.licensemanagement.pojo.*"/><class template="class com.lpx.licensemanagement.service.*"/><class template="class com.lpx.licensemanagement.utils.RedisOperator"/><class template="class com.lpx.licensemanagement.LicenseManagementApplication"/></ignore-classes><keep-names><class access="protected+"><field access="protected+"/><method access="protected+"/></class><!-- 所有方法名称不变  parameters="keep" 表示方法的形参也不变 方法形参混淆后会导致参数映射获取失败 --><!--<method template="*(**)" parameters="keep" />--><!-- 控制层 方法名、方法、形参 不混淆 --><class template="class com.lpx.licensemanagement.controller.*"><method template="protected+ *(**)" parameters="keep"/></class><!--        <class template="class com.lpx.test.service.*">--><!--            <method template="protected+ *(**)" parameters="keep"/>--><!--        </class>--></keep-names><property name="log-file" value="log.xml"/>
</config>

配置好后打包即可

mvn clean install -Dmaven.test.skip=true

当出现下图则说明混淆成功

此时target目录下会生成混淆后的jar包

反编译步骤

可以使用反编译工具查看混淆后的jar包代码是否成功混淆(我使用的是jd-gui)
反编译工具百度和CSDN很容易就能找到资源,你们自己下载一下。
资源链接

springboot项目代码混淆和反编译教程·附软件连接相关推荐

  1. Android代码混淆及反编译

    概述: 如果你目前还是一名学生或是没有在应用商店中上传过应用,恐怕对此的感受不深.而在企业中对Java代码的混淆却是一步很重要的步骤,从安全的角度来说,代码混淆,防止居心不良的人对代码进行恶意篡改非常 ...

  2. [进来复制]springboot项目代码混淆,帮你安排的明白的混淆代码!

    首先感谢俩篇博文博主本文是基于以下俩个博文进行的,楼主也是忙活了大半天整这个混淆,本以为可以快速完成的,没成想耗时耗力. 详细的springboot结合proguard做代码混淆,感谢. 其他博主的踩 ...

  3. Java后端知识之代码混淆-避免反编译工具获取原码

    java, 代码混淆, 编译, 反编译 本文是向大家介绍java后端小知识,它能够实现编译后的class代码加密,能够避免使用反编译工具获取源码. 本文介绍java代码编译成class后,怎么避免用反 ...

  4. Android代码混淆及反编译apk

    序言: 经常听开发提起代码混淆引起的BUG,混淆后在测试一下有没有问题,那问题来了什么是代码混淆,怎么确认代码混淆成功了,带着问题读下文吧~~ 一.代码混淆的原理 代码混淆是将程序中的代码,等价转换为 ...

  5. Android混淆、反编译基础教程

    Android混淆.反编译基础教程 Android APK混淆 Java代码是非常容易反编译的.为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理. 根据 SDK 的版本不同 ...

  6. Android混淆编译、反混淆、反编译

    混淆编译 为了保护APK代码和架构,不轻易被外部人员反编译和破解,对发布的APK,所以必须进行代码混淆编译. Java 是一种跨平台的.解释型语言,Java 源代码(.java文件)编译成中间&quo ...

  7. W32Dasm反编译教程+工具

    给大家转一个W32Dasm反编译教程+工具 : 请务必看教程(不看看不懂): W32Dasm是一个强大的反汇编工具,操作简单,使用方便.通常被程序员使用,当然也可被用来Crack软件了,很适合Crac ...

  8. Android反编译教程

    转载请注明文章出住http://blog.csdn.net/wolaiye320/article/details/51736139 在网上搜索Android反编译教程,搜出来的文章要么是抄袭的,要么是 ...

  9. android studio可以反编译吗,android studio反编译教程

    android studio反编译教程 [2021-02-13 15:05:33]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(& ...

最新文章

  1. ECMAScript3中数组方法
  2. 在 mingw32 上编译 libvpx 1.7.0 时的注意事项
  3. Codeforces 1198 1199
  4. Redux 源码解析系列(一) -- Redux的实现思想
  5. Bootstrap4+MySQL前后端综合实训-Day08-AM【多表查询sql语句、关联数据的假删除、自动增长主键的获取、栏目管理“数据编辑”按钮的实现】
  6. CNSA与CASC和CASIC的区别
  7. html可折叠边栏,html – 仅使用CSS的可折叠灵活宽边栏
  8. 模型ks_风控建模 模型指标篇
  9. 指定某个git的版本代码拉取新的分支
  10. 关于发送H264 sdp里的
  11. Web服务器常见HTTP错误码
  12. 大数据告诉你,中国今年最火打卡圣地竟然是它!
  13. iOS开发打字机效果
  14. 2022-2028年全球与中国婴儿食品包装行业产销需求与投资预测分析
  15. 《鬼谷子》飞箝第五(原文)
  16. 如何在浏览器查看渲染时间?
  17. Android Notification 详解(各版本对比)——基本操作
  18. 最全的 SQL 优化方案
  19. 修改VMWARE BIOS的三种方法
  20. 电脑桌面便签怎么设置待办事项完成删除或完成隐藏?

热门文章

  1. 华为snmp连接esight服务器配置案例
  2. 菜鸟是如何变成老鸟的?
  3. 联想助BHG Mall构建智慧商城 为新商业赋能
  4. 窗函数问题及频谱泄露
  5. 测试socket接口
  6. SAXParseException;前言中不允许有内容
  7. itext 动态的填充pdf
  8. NASA登月计划再推迟!这次火箭发动机和主燃料箱都拉胯了
  9. 谭哥c第五版第七章习题
  10. textarea不可编辑状态