使用ipaguard插件对Spring Boot程序进行代码混淆
因为Java代码非常容易反编译,所以为了很好的保护Java源代码,需要Java代码进行代码干扰。本文介绍如何使用ipaguard对Java程序进行代码干扰。
ipaguard运行原理
ProGuard能够通过最终删除无用代码,使用一些无意义的名称来重命名类、字段和方法。从而能够达到压缩、优化和干扰代码的目的。会获取一个较小的编译文件,而这个通过ProGuard处理的编译文件更难于进行逆向工程。
- 压缩(Shrink):在压缩处理这一步中,用于检测和删除未使用的类别、字段、方法和属性。
- 优化(Optimize):在优化处理这一步中,对字节码进行优化,并且删除无用指令。
- 混乱(Obfuscate):在混乱处理这一步中,使用a、b、c等无意义的名称,对类、字段和方法进行重命名。
- 预检(Preveirfy):在预检这一步中,主要是在Java平台上对处理后的代码进行预检。
ipaguard执行流程图如下图所示。
因此,使用ipaguard不仅能够实现代码混乱,还能额外获得代码压缩、优化等方面的好处。
如何使用ipaguard
ipaguard提供了几种使用方式:
- 使用ipaguard命令行
- 使用ipaguardGUI程序
- 使用ipaguard插件
下载ipa代码混淆保护工具
Ipa Guard是一款功能强大的ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密。不限制OC,Swift,Flutter,React Native,H5类app。工具跨平台版,windows,linux,mac系统都可用直接去官网下载https://www.ipaguard.com
获取ipaguard登录码
双击ipaguard.exe启动ipaguard后点击右上角的登录按钮,输入邮箱后,没登录码的点击获取登录码,有的可以直接输入登录码
使用 IPAGuard 插件
严格来说,ProGuard 插件不是官方出品。他是由第三方提供的,但也是得到 IPAGuard 承认的。IPAGuard 插件地址为:
假设我们有一个Spring Boot程序,代码结构如下
应用代码
申请代码如下:
com.waylau.proguard 包; 导入 org.springframework.boot.SpringApplication; 导入 org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication 公共类应用程序{ 公共静态无效主(字符串[] args){ SpringApplication.run(Application.class,args); } }
HelloController代码
HelloController代码如下:
包com.waylau.proguard.controller; 导入org.springframework.web.bind.annotation.GetMapping; 导入org.springframework.web.bind.annotation.RestController; @RestController 公共 类HelloController { @GetMapping("/你好") 公共字符串你好(){ 返回getMsg(); } 私有字符串 getMsg() { 返回“你好世界!”; } }
pom.xml配置
pom.xml配置如下:
<?xml 版本= "1.0"编码= "UTF-8" ?> <项目 xmlns= “ http://maven.apache.org/POM/4.0.0 ” xmlns:xsi= “ http://www.w3.org/2001/XMLSchema-instance ” xsi:schemaLocation= “ http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd ” > <模型版本>4.0.0</模型版本> <groupId>com.waylau.proguard</groupId> <artifactId>my-proguard-demo</artifactId> <版本>1.0.0</版本> <父> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <版本>2.5.6</版本> </父> <属性> <java.version>8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version> <proguard.version>7.1.1</proguard.version> <proguard.maven.plugin.version>2.5.1</proguard.maven.plugin.version> </属性> <依赖关系> <依赖关系> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </依赖> <依赖关系> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <范围>测试</范围> </依赖> </依赖项> <构建> <插件> <插件> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <版本>${proguard.maven.plugin.版本}</版本> <处决> <执行> <阶段>封装</阶段> <目标> <目标>proguard</目标> </目标> </执行>