Spring Boot怎么使用Allatori讓代碼混淆

2018.04.16 濰坊網站建設

167

Spring Boot怎么使用Allatori讓代碼混淆


  這次給大家帶來Spring Boot怎么使用Allatori讓代碼混淆,Spring Boot使用Allatori讓代碼混淆的注意事項有哪些,下面就是實戰案例,一起來看一下。

 

  Allatori混淆技術介紹

 

  Allatori是一個Java混淆器,它屬于第二代混淆器,因此它能夠全方位地保護你的知識產權。Allatori具有以下幾種保護方式:命名混淆,流混淆,調試信息混淆,字符串混淆,以及水印技術。對于教育和非商業項目來說這個混淆器是免費的。支持war和jar文件格式,并且允許對需要混淆代碼的應用程序添加有效日期。有項目需要對代碼進行保護,比較初級的方案就是對代碼進行混淆,打包之后的文件進行反編譯后,就可以看到效果。此外,使用Allatori打的包體積也會小一點。

 

  一個很普通的maven工程,不同的是在根目錄下加入Allatori的jar包。

 

  下面我們來看看pom.xml文件:

 

  <project 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">

 

  <modelVersion>4.0.0</modelVersion>

 

  <groupId>com.lovnx</groupId>

 

  <artifactId>confusion</artifactId>

 

  <version>0.0.1-SNAPSHOT</version>

 

  <packaging>jar</packaging>

 

  <build>

 

  <plugins>

 

  <plugin>

 

  <groupId>org.springframework.boot</groupId>

 

  <artifactId>spring-boot-maven-plugin</artifactId>

 

  </plugin>

 

  <!--Allatori plugin start-->

 

  <plugin>

 

  <groupId>org.apache.maven.plugins</groupId>

 

  <artifactId>maven-resources-plugin</artifactId>

 

  <version>2.6</version>

 

  <executions>

 

  <execution>

 

  <id>copy-and-filter-allatori-config</id>

 

  <phase>package</phase>

 

  <goals>

 

  <goal>copy-resources</goal>

 

  </goals>

 

  <configuration>

 

  <outputDirectory>${basedir}/target</outputDirectory>

 

  <resources>

 

  <resource>

 

  <directory>${basedir}/allatori</directory>

 

  <includes>

 

  <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.2.1</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>

 

  <argument>${basedir}/lib/allatori.jar</argument>

 

  <argument>${basedir}/target/allatori.xml</argument>

 

  </arguments>

 

  </configuration>

 

  </plugin>

 

  <!--Allatori plugin end-->

 

  </plugins>

 

  </build>

 

  <dependencies>

 

  <!--Test Begin-->

 

  <dependency>

 

  <groupId>junit</groupId>

 

  <artifactId>junit</artifactId>

 

  <scope>test</scope>

 

  </dependency>

 

  <!--Test End-->

 

  <!--springboot啟動-->

 

  <dependency>

 

  <groupId>org.springframework.boot</groupId>

 

  <artifactId>spring-boot-starter-web</artifactId>

 

  </dependency>

 

  </dependencies>

 

  <parent>

 

  <groupId>org.springframework.boot</groupId>

 

  <artifactId>spring-boot-starter-parent</artifactId>

 

  <version>1.5.8.RELEASE</version>

 

  </parent>

 

  </project>

 


濰坊網站建設


  使用maven打包插件,Spring Boot構建的工程,Allatori的配置在上面也有說明,Allatori配置里面比較重要的是:

 

  <argument>${basedir}/lib/allatori.jar</argument>

 

  <argument>${basedir}/target/allatori.xml</argument>

 

  指定Allatori的allatori.jar文件路徑,如果你的工程是一個pom工程,可以在父工程中放lib目錄,然后子工程只需要:

 

  <argument>/lib/allatori.jar</argument>

 

  即可。

 

  allatori.xml這個文件也很重要,看看其中的內容:

 

  <config>

 

  <input>

 

  <jar in="confusion-0.0.1-SNAPSHOT.jar"out="confusion-0.0.1-SNAPSHOT-obfuscated.jar"/>

 

  </input>

 

  <keep-names>

 

  <class access="protected+">

 

  <field access="protected+"/>

 

  <method access="protected+"/>

 

  </class>

 

  </keep-names>

 

  <property name="log-file"value="log.xml"/>

 

  </config>

 

  即是對Allatori混淆器的具體配置,這里可以配置很多信息,很多種策略,也可以指定哪些類不被混淆,具體的各種方式可以在在文末附件里面的文檔得到。

 

  這里需要說明的是:

 

  <input>

 

  <jar in="confusion-0.0.1-SNAPSHOT.jar"out="confusion-0.0.1-SNAPSHOT-obfuscated.jar"/>

 

  </input>

 

  confusion-0.0.1-SNAPSHOT.jar這個是打包后的未被混淆的包,而confusion-0.0.1-SNAPSHOT-obfuscated.jar是混淆后的包,這個是我們需要的。



濰坊網站建設公司

 

  打包步驟

 

  1、clean maven工程。

 

  2、將resources下面的allatori.xml文件復制到target目錄下面。

 

  3、install maven工程,看到如下信息后表示成功:

 

  ################################################

 

  ##

 

  ###################

 

  ##############

 

  ################

 

  #####################

 

  ##

 

  #DEMO VERSION!#

 

  #NOT FOR COMMERCIAL USE!#

 

  ##

 

  #Demo version adds System.out's#

 

  #and gives'ALLATORI_DEMO'name#

 

  #to some fields and methods.#

 

  ##

 

  ##

 

  #Obfuscation by Allatori Obfuscator v6.4 DEMO#

 

  ##

 

  #http://www.allatori.com#

 

  ##

 

  ################################################

 

  4、成功后的工程:

 

  Spring Boot使用Allatori代碼混淆的方法

 

  箭頭所指處即是我們需要的包,此包代碼已被混淆。

 

  效果查看

 

  這里使用反編譯工具對混淆后的包進行查看,我用的是jd-gui這個軟件,小巧實用。

 

  TestApplication.java混淆前:

 

  import org.springframework.boot.SpringApplication;

 

  import org.springframework.boot.autoconfigure.SpringBootApplication;

 

   SpringBootApplication

 

  public class TestApplication{

 

  public static void main(String[]args){

 

  SpringApplication.run(TestApplication.class,args);

 

  }

 

  }

 

  TestApplication.java混淆后:

 

  import java.io.PrintStream;

 

  import org.springframework.boot.SpringApplication;

 

  import org.springframework.boot.autoconfigure.SpringBootApplication;

 

   SpringBootApplication

 

  public class TestApplication

 

  {

 

  public static String ALLATORIxDEMO(String a)

 

  {

 

  int tmp4_3=4;

 

  int tmp7_6=1;

 

  int tmp21_18=a.length();

 

  int tmp25_24=1;

 

  tmp25_24;

 

  int j;

 

  int?=tmp25_24;

 

  int k=tmp21_18;

 

  int tmp35_31=(j=new char[tmp21_18]-1);

 

  tmp35_31;

 

  int i=5<<4^(0x2^0x5);

 

  (tmp4_3<<tmp4_3^tmp7_6<<tmp7_6);

 

  if(tmp35_31>=0)

 

  {

 

  int tmp45_44=j;

 

  j--;

 

  ?[tmp45_44]=((char)(a.charAt(tmp45_44)^i));

 

  int tmp66_63=(j--);

 

  ?[tmp66_63]=((char)(a.charAt(tmp66_63)^k));

 

  }

 

  return new String(?);

 

  }

 

  public static void main(String[]a)

 

  {

 

  System.out.println("\n################################################\n##\n###################\n##############\n################\n#####################\n##\n#Obfuscation by Allatori Obfuscator v6.4 DEMO#\n##\n#http://www.allatori.com#\n##\n################################################\n");SpringApplication.run(TestApplication.class,a);

 


濰坊網站建設


  }

 

  }

 

  TestController.java混淆前:

 

  import org.springframework.web.bind.annotation.GetMapping;

 

  import org.springframework.web.bind.annotation.RestController;

 

   RestController

 

  public class TestController{

 

   GetMapping("/test")

 

  public String test(){

 

  return"88888888888888888";

 

  }

 

  }

 

  TestController.java混淆后:

 

  import org.springframework.web.bind.annotation.GetMapping;

 

  import org.springframework.web.bind.annotation.RestController;

 

   RestController

 

  public class TestController

 

  {

 

   GetMapping({"/test"})

 

  public String test()

 

  {

 

  return ALLATORIxDEMO("*]*]*]*]*]*]*]*]*");

 

  }

 

  public static String ALLATORIxDEMO(String a)

 

  {

 

  int tmp27_24=a.length();

 

  int tmp31_30=1;

 

  tmp31_30;

 

  int j;

 

  int?=tmp31_30;

 

  int k=tmp27_24;

 

  int tmp41_37=(j=new char[tmp27_24]-1);

 

  tmp41_37;

 

  int i=(0x3^0x5)<<4^0x5;

 

  (2<<3^0x2);

 

  if(tmp41_37>=0)

 

  {

 

  int tmp51_50=j;

 

  j--;

 

  ?[tmp51_50]=((char)(a.charAt(tmp51_50)^i));

 

  int tmp72_69=(j--);

 

  ?[tmp72_69]=((char)(a.charAt(tmp72_69)^k));

 

  }

 

  return new String(?);

 

  }

 

  }


   轉載請注明:濰坊網站建設:http://www.144610.tw/newsshow/210.html

關鍵詞

最新案例

聯系電話 400-6065-301

留言

(-^O^-)MG魔术兔_官方版 足彩即时比分 微乐辽宁麻将棋牌有辅助吗 江西时时彩开奖视频直播 bg大游娱乐下载 竞彩足球比分直播网 5分赛车计划版 球棎比分足球即时比分 寻代练 闽乐游棋牌 ceo娱乐城骰宝 内蒙古时时彩开奖号码一Welcome 彩票软件永久免费 单机捕鱼游戏机 南昌麻将培训表 体育彩票7+3 刮刮乐一等奖的钱是哪来的 vr赛车是正规彩票么