java spring boot项目运用proguard实现代码混淆

欢迎访问github

 

proguard是一款较为容易使用的java代码混淆工具,不需要其他配置,只需在pom中加入即可使用。

 

下面是具体pom

<build>
		<finalName>${artifactId}</finalName>
		<plugins>
			<plugin>
				<groupId>com.github.wvengen</groupId>
				<artifactId>proguard-maven-plugin</artifactId>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>proguard</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<proguardVersion>5.3.3</proguardVersion>
					<injar>${project.build.finalName}.jar</injar>
					<outjar>${project.build.finalName}.jar</outjar>
					<obfuscate>true</obfuscate>
					<options>
						<option>-dontshrink</option>
						<option>-dontoptimize</option>
						<!-- This option will replace all strings in reflections method invocations 
							with new class names. For example, invokes Class.forName('className') -->
						<option>-adaptclassstrings</option>
						<!-- This option will save all original annotations and etc. Otherwise 
							all we be removed from files. -->
						<option>-keepattributes
							Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod</option>
						<option>-keepclassmembers public class * {void set*(***);***
							get*();}</option>
						<!-- This option will save all original names in interfaces (without 
							obfuscate). -->
						<option>-keepnames interface **</option>
						<!-- This option will save all original methods parameters in files 
							defined in -keep sections, otherwise all parameter names will be obfuscate. -->
						<option>-keepparameternames</option>
						<!-- This option will save all original class files (without obfuscate) 
							but obfuscate all in domain package. -->
						<!--<option>-keep class !com.jincloud.** { *; }</option> -->
						<option>-keep
							@org.springframework.boot.autoconfigure.SpringBootApplication
							class * {*;}</option>
						<option>-keep class com.nagisa.zz.** { *; }</option>
						<!-- This option will save all original class files (without obfuscate) 
							in service package -->
						<!-- This option will save all original interfaces files (without obfuscate) 
							in all packages. -->
						<option>-keep interface * extends * { *; }</option>
						<!-- This option will save all original defined annotations in all 
							class in all packages. -->
						<option>-keepclassmembers class * {
							@org.springframework.beans.factory.annotation.Autowired *;
							@org.springframework.beans.factory.annotation.Value *;
							}
						</option>
					</options>
					<libs>
						<!-- Include main JAVA library required. -->
						<lib>${java.home}/lib/rt.jar</lib>
					</libs>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>net.sf.proguard</groupId>
						<artifactId>proguard-base</artifactId>
						<version>5.3.3</version>
					</dependency>
				</dependencies>
			</plugin>

			<!-- Maven assembly must be run after proguard obfuscation so it take 
				already obfuscated files. -->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
						<configuration>
							<mainClass>com.nagisa.App</mainClass>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

使用的时候只需改动两处配置

一个是指定不混淆的类,一般实体类及dao层不会加入混淆

<option>-keep class com.nagisa.zz.** { *; }</option>

还有一个

<configuration>
    <mainClass>com.nagisa.App</mainClass>
</configuration>

把项目的启动类全类名写入mainClass标签内。

启动的时候直接Run Maven Install。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot是一个开发框架,用于简化基于Java的应用程序的开发和部署。它提供了一个自动化配置的方式来简化开发过程,同时也提供了一些常用的功能模块,如安全、数据库连接等。 ProGuard是一个代码混淆工具,用于保护Java代码免受逆向工程和代码分析的攻击。它通过对代码进行优化和混淆,使得反编译后的代码难以理解和修改,从而增加了代码的安全性。 Maven是一个项目管理工具,用于构建、发布和管理Java项目的依赖关系。它可以帮助我们方便地管理项目的依赖关系,包括第三方库和插件。同时,它还提供了一些命令和配置,来支持多模块的项目结构。 在使用Spring BootProGuard和Maven实现代码混淆时,我们可以按照以下步骤进行操作: 1. 在Maven中创建一个多模块的项目结构。通过使用Maven的父子项目关系,我们可以在一个主项目中管理多个子模块。 2. 在子模块中引入Spring BootProGuard的依赖。在子模块的pom.xml文件中,添加对Spring BootProGuard的相关依赖配置。 3. 配置ProGuard混淆规则。在子模块中创建一个proguard.cfg文件,并添加相关的混淆规则。这些规则可以用于指定哪些类、方法和字段需要进行混淆,以及如何进行混淆。 4. 在Maven的构建过程中,添加对ProGuard的插件配置。通过对Maven的插件进行配置,使得在构建项目时自动应用ProGuard混淆规则。 5. 构建和执行项目。在Maven中使用命令进行项目的构建和执行,观察代码是否已经被混淆。如果一切顺利,你将会得到一个经过混淆代码。 综上所述,通过使用Spring BootProGuard和Maven,我们可以实现Java代码混淆保护。这种方式可以增加代码的安全性,防止代码被逆向工程和代码分析的攻击。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值