Introduction à la technologie d'obscurcissement allatori
Allate est un obfuscateur Java, qui appartient à l'obfuscateur de la deuxième génération, il peut donc protéger vos droits de propriété intellectuelle dans tous les aspects. Alllate a les méthodes de protection suivantes: nommer l'obscurcissement, l'obscurcissement des cours d'eau, l'obscurcissement des informations de débogage, l'obscurcissement des cordes et la technologie du filigrane. Cet obfuscateur est gratuit pour les projets éducatifs et non commerciaux. Les formats de fichiers de guerre et de jar sont pris en charge et permettent d'ajouter des dates valides aux applications qui doivent obscurcir le code. Il existe des projets qui doivent protéger le code. La solution la plus basique consiste à obscurcir le code. Après avoir décompilé le fichier emballé, vous pouvez voir l'effet. De plus, la taille des sacs fabriqués avec Alllate sera un peu plus petite.
Introduction du projet
Un projet Maven très ordinaire, la différence est d'ajouter le package JAR d'Alllate dans le répertoire racine.
Jetons un coup d'œil au fichier pom.xml:
<project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <ModelVersion> 4.0.0 </ ModelVersion> <proupId> com.lovnx </proupId> <ArtifActid> Confusion </ Artifactid> <Dersion> 0.0.1-Snapshot </Dection> <packaging> jar </ Package> <GroupIdId> Org.SpringFramework.boot </proupId> <ArtifactId> Spring-Boot-Maven-Plugin </ Artifactid> </Glugin> <! - Alllate Plugin Start -> <Glugin> <ProupId> Org.apache.Maven.plugins </prounid> <Artifactid> Maven-Resources-Plugin </ Artiford> <ArtifAtid> Maven-Resources-Plugin </ ArtiFactid> <version> 2.6 </ version> <Executions> <Deamution> <id> copier-and-filter-allateri-Config </id> <masing> package </stase> <proacs> <but> Copy-resources </ but> </puct> <figuration> <putputDirectory> $ {basasedir} / cible </utputDirectory> <salice> <esource> <Arylogicain> $ {basasedir} / allatori </ Directory> <clure> <clure> allatori.xml </ include> </cluns> <filterring> true </ filter> </ ressources> </ ressources> </cilguration> </ exécution> </ exécutions> </vrigumd> <ArtefactId> EXEC-MAVEN-PLUGIN </ ArfactId> <DERVIÈRE> 1.2.1 </ Version> <Cecourties> <Cecution> <Id> Run-Allate </ Id> </ Execution> </ Execution> </ Execution> </EXECTIVTION> </ Configuration> </ Execution> <Ugarfing> -xms128m </ argument> <Usgunt> -xmx512m </ argument> <argument> -jar </ argument> <argument> $ {basasedir} /lib/allateri.jar </ argument> <argument> $ {basasedir} /target/allati. </glugins> </ build> <Detendances> <! - Test Begin -> <dependency> <ProupId> JUnit </prolsid> <Artifactid> JUnit </ Artifactid> <Ccope> Test </cope> </ Dependency> <! - Test End -> <! - Springboot Startup -> <Dedency> <Dedency> <ProupId> Org.spring <ArtefactId> printemps-boot-starter-web </ artifactid> </dependency> </dpendance> <parent> <proupId> org.springframework.boot </proupId> <prefactid> printemps-boot-starter-parent </ artifactid> <version> 1.5.8.release </De version> </parent> </prèfactive> En utilisant le plug-in maven dans le package, Spring Boot construit la configuration allative est également expliquée ci-dessus. Ce qui est le plus important dans la configuration Alllate est:
<rargument> $ {basaseIr} /lib/allateri.jar </gunt> <argument> $ {basasedir} /target/Allati.xml </argument> Spécifiez le chemin de fichier allatori.jar d'Alllate. Si votre projet est un projet POM, vous pouvez placer le répertoire Lib dans le projet parent, puis le projet enfant n'a besoin que:
<Histant> ../ lib / allatori.jar </rgument>
Fais-le c'est tout.
Le fichier allori.xml est également très important, jetez un œil à son contenu:
<FIGIG> <prening> <jar in = "confusion-0.0.1-snapshot.jar" out = "confusion-0.0.1-snapshot-obfuscatecated.jar" /> </ entrée> <embar-names> <class Access = "Protected +"> <champ accès = "Protected +" /> <méthode Access = "Protected +" /> </> </ classe> </ keep-names> value = "log.xml" /> </ config>
C'est-à-dire la configuration spécifique de l'obfuscateur allori. Ici, vous pouvez configurer de nombreuses informations et diverses stratégies, et vous pouvez également spécifier quelles classes ne sont pas obscurcies. Diverses méthodes spécifiques peuvent être obtenues dans la documentation dans la pièce jointe à la fin de l'article.
Ce qui doit être expliqué ici est:
<fort> <jar dans = "confusion-0.0.1-snapshot.jar" out = "confusion-0.0.1-snapshot-obfuscatecated.jar" /> </fut>
Confusion-0.0.1-Snapshot.jar est un package Unobfuscated après le package, tandis que Confusion-0.0.1-Snapshot-Obfuscatecated.jar est un package obscurci, ce dont nous avons besoin.
Étapes d'emballage
1. Projet Maven propre.
2. Copiez le fichier allori.xml ci-dessous des ressources dans le répertoire cible.
3. Installez le projet Maven, et après avoir vu les informations suivantes, cela signifie qu'il est réussi:
######################################################################################### ######################################################################################### Version de démonstration! ## Pas pour un usage commercial! ### ## La version démo ajoute le nom de System.out ## et donne «Alllate_demo» ## à certains champs et méthodes. ## ## ## Obfuscation par Alllate Obfuscator V6.4 Demo ## ## http://www.allatori.com ## ###############################################################################################################################Ch ###############################################################################################################################Ch ###############################################################################################################################Ch #####################################################################################################################################################Ch
4. Projet réussi:
La flèche pointe vers le package dont nous avons besoin et le code de ce package a été obscurci.
Vue d'effet
Ici, nous utilisons l'outil de décompilation pour afficher les packages obscurcis. J'utilise le logiciel JD-Gui, petit et pratique.
Avant l'obscurcissement TestApplication.Java:
import org.springframework.boot.springApplication; import org.springframework.boot.autoconfigure.springbootapplication; @springbootapplicationpublic class testApplication {public static void main (string [] args) {springapplication.run (testapplication.class.class, args); }} Après TestApplication.Java est obscurci:
import java.io.printstream; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; @springbootapplicationpublic 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 #########################################################################################################################################################################################################################################ch ############################################################## ############################################################### ############################################################## ############################################################### ############################################################## ############################################################### ALLATERI OBFUSCATOR V6.4 Demo # / n # # / n # http://www.allate.com # / n # # # / n ############################################################################################################################################################################ SpringApplication.Run (TestApplication.Class, A); }} Avant que TestController.java soit confus:
import org.springframework.web.bind.annotation.getMapping; import org.springframework.web.bind.annotation.restController; @RestControllerPublic Class TestController {@getMapping ("/ test") public String test () {return "888888888888888";;) {return "88888888888888";; }} Une fois TestController.java est obscurci:
import org.springframework.web.bind.annotation.getmapping; import org.springframework.web.bind.annotation.restController; @RestControllerPublic 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 = nouveau 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 (?); }} Hahaha, et ça, tu ne comprends pas? Et le package d'obscurcissement s'exécute comme d'habitude sans aucun problème.
--------》 Code source GitHub et adresse de document "-------
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.