使用ipaguard插件对Spring Boot程序进行代码混淆

简介: 使用ipaguard插件对Spring Boot程序进行代码混淆

使用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</目标>
</目标>
</执行>


目录
相关文章
|
1月前
ext portal+dwr+spring实现个性主页面拖拉效果的核心代码
ext portal+dwr+spring实现个性主页面拖拉效果的核心代码
44 6
|
12天前
|
缓存 监控 Java
|
2月前
|
XML Java 测试技术
spring复习01,IOC的思想和第一个spring程序helloWorld
Spring框架中IOC(控制反转)的思想和实现,通过一个简单的例子展示了如何通过IOC容器管理对象依赖,从而提高代码的灵活性和可维护性。
spring复习01,IOC的思想和第一个spring程序helloWorld
|
1月前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
372 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
1月前
|
存储 Java 程序员
SpringIOC和DI的代码实现,Spring如何存取对象?@Controller、@Service、@Repository、@Component、@Configuration、@Bean DI详解
本文详细讲解了Spring框架中IOC容器如何存储和取出Bean对象,包括五大类注解(@Controller、@Service、@Repository、@Component、@Configuration)和方法注解@Bean的用法,以及DI(依赖注入)的三种注入方式:属性注入、构造方法注入和Setter注入,并分析了它们的优缺点。
27 0
SpringIOC和DI的代码实现,Spring如何存取对象?@Controller、@Service、@Repository、@Component、@Configuration、@Bean DI详解
|
1月前
|
XML Java 数据格式
手动开发-简单的Spring基于注解配置的程序--源码解析
手动开发-简单的Spring基于注解配置的程序--源码解析
45 0
|
1月前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
79 0
|
3月前
|
存储 缓存 Java
面试问Spring循环依赖?今天通过代码调试让你记住
该文章讨论了Spring框架中循环依赖的概念,并通过代码示例帮助读者理解这一概念。
面试问Spring循环依赖?今天通过代码调试让你记住
|
3月前
|
SQL 数据库
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
这篇文章是Spring5框架的实战教程,深入讲解了如何使用JdbcTemplate进行数据库的批量操作,包括批量添加、批量修改和批量删除的具体代码实现和测试过程,并通过完整的项目案例展示了如何在实际开发中应用这些技术。
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
|
3月前
|
XML Java 数据格式
Spring5入门到实战------11、使用XML方式实现AOP切面编程。具体代码+讲解
这篇文章是Spring5框架的AOP切面编程教程,通过XML配置方式,详细讲解了如何创建被增强类和增强类,如何在Spring配置文件中定义切入点和切面,以及如何将增强逻辑应用到具体方法上。文章通过具体的代码示例和测试结果,展示了使用XML配置实现AOP的过程,并强调了虽然注解开发更为便捷,但掌握XML配置也是非常重要的。
Spring5入门到实战------11、使用XML方式实现AOP切面编程。具体代码+讲解