>웹 프론트엔드 >JS 튜토리얼 >Spring Boot가 Allatori를 사용하여 코드를 난독화하는 방법

Spring Boot가 Allatori를 사용하여 코드를 난독화하는 방법

php中世界最好的语言
php中世界最好的语言원래의
2018-04-12 13:56:114151검색

이번에는 Spring Boot가 Allatori를 사용하여 코드를 난독화하는 방법을 보여 드리겠습니다. Spring Boot가 코드를 난독화하기 위해 Allatori를 사용하는 주의 사항은 무엇입니까?

Allatori 난독화 기술 소개

Allatori는 Java 난독처리기로서 귀하의 지적 재산을 완벽하게 보호할 수 있는 2세대 난독처리기입니다. 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 obfuscator의 구체적인 구성입니다. 여기에서 많은 정보와 많은 전략을 구성할 수 있으며, 구체적인 방법은 마지막에 첨부된 문서에서 확인할 수 있습니다. 기사.
여기서 설명해야 할 내용은 다음과 같습니다.

 <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. Maven 프로젝트를 정리합니다.
2. 리소스 아래의 allatori.xml 파일을 대상 디렉터리에 복사합니다.
3. 다음 정보를 확인한 후 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(?);
 }
}

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트에 있는 다른 관련 기사에 주목하세요.

추천 자료:

파일 업로드를 구현하는 AjaxUpLoad.js

JS 바이너리 데이터 작업 방법 요약

위 내용은 Spring Boot가 Allatori를 사용하여 코드를 난독화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.