当前位置:   article > 正文

【Java】java混淆 | jar防止反编译 | allatori防反编译_java代码混淆,防止反编译

java代码混淆,防止反编译

一、说明

1、众所周知,jar可以通过工具进行反编译

2、若自己实现的算法想要保护起来,又不影响jar的功能调用,可尝试本文描述

二、解决方案

1、直奔工具: Allatori代码混淆

2、常用maven构造项目,举例就用maven了;其他的可参考官网示例,通俗易懂

PS:下载好示例

3、引入需要的jar

  1. <dependency>
  2. <groupId>allatori</groupId>
  3. <artifactId>allatori</artifactId>
  4. <version>1.0.0</version>
  5. <scope>system</scope>
  6. <systemPath>${project.basedir}/src/main/resources/libs/allatori.jar</systemPath>
  7. </dependency>
  8. <dependency>
  9. <groupId>allatori</groupId>
  10. <artifactId>allatori-annotations</artifactId>
  11. <version>1.0.0</version>
  12. <scope>system</scope>
  13. <systemPath>${project.basedir}/src/main/resources/libs/allatori-annotations-1.0.0.jar</systemPath>
  14. </dependency>

4、引入pom.xml引入插件

  1. <plugins>
  2. <plugin>
  3. <groupId>org.apache.maven.plugins</groupId>
  4. <artifactId>maven-resources-plugin</artifactId>
  5. <version>2.6</version>
  6. <configuration>
  7. <encoding>UTF-8</encoding>
  8. <includeSystemScope>true</includeSystemScope>
  9. </configuration>
  10. <executions>
  11. <execution>
  12. <id>copy-and-filter-allatori-config</id>
  13. <phase>package</phase>
  14. <goals>
  15. <goal>copy-resources</goal>
  16. </goals>
  17. <configuration>
  18. <outputDirectory>${basedir}/target</outputDirectory>
  19. <resources>
  20. <resource>
  21. <directory>${basedir}/allatori</directory>
  22. <includes>
  23. <include>allatori.xml</include>
  24. </includes>
  25. <filtering>true</filtering>
  26. </resource>
  27. </resources>
  28. </configuration>
  29. </execution>
  30. </executions>
  31. </plugin>
  32. <plugin>
  33. <groupId>org.apache.maven.plugins</groupId>
  34. <artifactId>maven-compiler-plugin</artifactId>
  35. <version>3.1</version>
  36. <configuration>
  37. <source>1.8</source>
  38. <target>1.8</target>
  39. <encoding>UTF-8</encoding>
  40. </configuration>
  41. </plugin>
  42. <!-- Running Allatori -->
  43. <plugin>
  44. <groupId>org.codehaus.mojo</groupId>
  45. <artifactId>exec-maven-plugin</artifactId>
  46. <version>1.2.1</version>
  47. <executions>
  48. <execution>
  49. <id>run-allatori</id>
  50. <phase>package</phase>
  51. <goals>
  52. <goal>exec</goal>
  53. </goals>
  54. </execution>
  55. </executions>
  56. <configuration>
  57. <executable>java</executable>
  58. <arguments>
  59. <argument>-Xms128m</argument>
  60. <argument>-Xmx512m</argument>
  61. <argument>-jar</argument>
  62. <!-- Copy allatori.jar to 'allatori' directory to use the commented line -->
  63. <!--<argument>${basedir}/../../../../lib/allatori.jar</argument>-->
  64. <!-- <argument>${basedir}/allatori/allatori.jar</argument> -->
  65. <argument>${project.basedir}/src/main/resources/libs/allatori.jar</argument>
  66. <argument>${project.basedir}/target/allatori.xml</argument>
  67. </arguments>
  68. </configuration>
  69. </plugin>
  70. </plugins>

5、复制配置文件(从示例:Allatori-7.7-Demo\tutorial\step12-maven\files\mouse-gestures)

6、maven打包即可

 三、第二种方案

1、方案说明

1)此方案依赖新版的allatori,8.3版本及以上版本

2)管网下载

https://allatori.com/

3)大致步骤: 正常maven打包 -> 配置allatori -> 编写脚本 -> 执行脚本

2、操作步骤

1)解压allatori

 2)复制config到lib

 3)编辑config.xml

  1. <config>
  2. <input>
  3. <!--放到项目里面,用相对路径-->
  4. <!--项目跟路径新建: allatori目录,将jar跟xml配置都放目录下-->
  5. <jar in="../admin/target/hg-admin.jar" out="../admin/target/obf-hg-admin.jar"/>
  6. </input>
  7. <keep-names>
  8. <!--指明要混淆的包-->
  9. <!--SpringBoot启动类,需要排除混淆,不然java -jar会失败-->
  10. <class access="protected+">
  11. <field access="protected+"/>
  12. <method access="protected+"/>
  13. </class>
  14. <!-- 防止部分类、方法、变量找不到名称而报错 -->
  15. <!-- 所有方法名称不变,parameters="keep"表示方法参数名也不变 -->
  16. <method template="*(**)" parameters="keep"/>
  17. <!-- com.a.b.c中的类以及其子包中的类的名称不变 -->
  18. <class template="class com.hg.admin.*"/>
  19. </keep-names>
  20. <property name="log-file" value="log.xml"/>
  21. </config>

说明1: 如果有其他三方依赖,都需要排除掉

说明2: 需要根据需求执行混淆的包

说明3: 忽略某些包

  1. <ignore-classes>
  2. <!-- 排除springboot依赖文件(springboot构建的项目需要排除,否则业务程序会报错) -->
  3. <!--<class template="class **" />-->
  4. <class template="class org**"/>
  5. <class template="class com.querydsl**"/>
  6. <class template="class cn.**"/>
  7. <class template="class *springframework*"/>
  8. <class template="class *apache*"/>
  9. <class template="class *yaml*"/>
  10. <class template="class *baomidou*"/>
  11. <class template="class *alibaba*"/>
  12. <class template="class *jeecg*"/>
  13. <class template="class *codehaus*"/>
  14. <class template="class *servlet*"/>
  15. <class template="class *mail*"/>
  16. <class template="class *tio*"/>
  17. <class template="class *quartz*"/>
  18. <class template="class *misc*"/>
  19. <!-- <class template="class **"/> -->
  20. <!-- 排除如下两个包下的类 -->
  21. <class template="class com.csp.*.entity.*"/>
  22. <class template="class com.csp.*.mapper.xml.*"/>
  23. <class template="class org.jeecg.JeecgApplication.*"/>
  24. <class template="class org.jeecg.modules.*"/>
  25. <class template="class org.jeecg.config.*"/>
  26. <class template="class cn.im.vim.*"/>
  27. </ignore-classes>

说明1: 与<keep-names>同级

 

4)编写脚本

  1. %1、正常maven打包(mvn clean package%
  2. %2、打开terminal%
  3. %3、进入到allatori目录%
  4. %4、执行decodeJar.cmd%
  5. %需要在allatori路径执行%
  6. java -jar allatori.jar config.xml

~~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/483375
推荐阅读
相关标签
  

闽ICP备14008679号