Heim  >  Artikel  >  Web-Frontend  >  Wie Spring Boot Allatori verwendet, um Code zu verschleiern

Wie Spring Boot Allatori verwendet, um Code zu verschleiern

php中世界最好的语言
php中世界最好的语言Original
2018-04-12 13:56:113963Durchsuche

Dieses Mal zeige ich Ihnen, wie Spring Boot Allatori verwendet, um den Code zu verschleiern. Was sind die Vorsichtsmaßnahmen, die Spring Boot verwendet, um den Code zu verschleiern? Schauen Sie mal rein.

Einführung in die Allatori-Verschleierungstechnologie

Allatori ist ein Java-Obfuskator der zweiten Generation, der Ihr geistiges Eigentum vollständig schützen kann. Allatori verfügt über die folgenden Schutzmethoden: Namensverschleierung, Stream-Verschleierung, Debugging Informationsverschleierung, String--Verschleierung und Wasserzeichentechnologie. Dieser Obfuscator ist für Bildungs- und nichtkommerzielle Projekte kostenlos. Unterstützt WAR- und JAR-Dateiformate und ermöglicht das Hinzufügen gültiger Daten für Anwendungen, die verschleierten Code erfordern. Es gibt Projekte, die den Code schützen müssen. Eine relativ einfache Lösung besteht darin, den Code zu verschleiern. Nach dem Dekompilieren der gepackten Dateien können Sie den Effekt sehen. Darüber hinaus werden die mit Allatori hergestellten Taschen kleiner.

Ein ganz gewöhnliches Maven-Projekt. Der Unterschied besteht darin, dass das JAR-Paket von Allatori zum Stammverzeichnis hinzugefügt wird.

Werfen wir einen Blick auf die pom.xml-Datei:

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

Für Projekte, die mit Maven-Verpackungs-Plug-Ins und Spring Boot erstellt wurden, wird oben auch die Allatori-Konfiguration erläutert. Die wichtigeren in der Allatori-Konfiguration sind:

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

Geben Sie den Pfad der allatori.jar-Datei von Allatori an. Wenn Ihr Projekt ein POM-Projekt ist, können Sie das lib-Verzeichnis im übergeordneten Projekt ablegen, und das Unterprojekt benötigt dann nur:

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

Das ist es.

Die Datei allatori.xml ist ebenfalls sehr wichtig, schauen Sie sich ihren Inhalt an:

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

Das ist die spezifische Konfiguration des Allatori-Obfuscators. Hier können Sie viele Informationen und Strategien konfigurieren und auch festlegen, welche Klassen nicht verschleiert werden sollen. Die spezifischen Methoden finden Sie im Dokument am Ende Artikel.
Was hier erklärt werden muss ist:

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

verwirrt-0.0.1-SNAPSHOT.jar ist das unverschleierte Paket nach dem Verpacken, und verwirrung-0.0.1-SNAPSHOT-obfuscated.jar ist das verschleierte Paket. Das ist es, was wir brauchen.

Paketierungsschritte
1. Sauberes Maven-Projekt.
2. Kopieren Sie die Datei allatori.xml unter resources in das Zielverzeichnis.
3. Installieren Sie das Maven-Projekt. Es bedeutet Erfolg, nachdem Sie die folgenden Informationen gesehen haben:

################################################
#                       #
#    ## #  #  ## ### ### ## ###    #
#    # # #  #  # # # # # # # #     #
#    ### #  #  ### # # # ##  #     #
#    # # ### ### # # # ### # # ###    #
#                       #
#        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. Projekt nach Erfolg:

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

Der Pfeil zeigt auf das Paket, das wir benötigen, und der Code dieses Pakets wurde verschleiert.

Sehen Sie sich den Effekt an

Hier wird ein Dekompilierungstool verwendet, um das verschleierte Paket anzuzeigen. Ich verwende die Software jd-gui, die klein und praktisch ist.

TestApplication.java vor der Verschleierung:

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 nach der Verschleierung:

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 vor der Verschleierung:

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";
 }
}

Nachdem TestController.java verwirrt ist:

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(?);
 }
}

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

AjaxUpLoad.js zum Hochladen von Dateien

Zusammenfassung von js-Operationen auf Binärdatenmethoden

Das obige ist der detaillierte Inhalt vonWie Spring Boot Allatori verwendet, um Code zu verschleiern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn