Introducción a Allatori Ofuscation Technology
Allatori es un obfuscador de Java, que pertenece al obfuscador de segunda generación, para que pueda proteger sus derechos de propiedad intelectual en todos los aspectos. Allatori tiene los siguientes métodos de protección: ofuscación de nombres, ofuscación de la corriente, ofuscación de información de depuración, ofuscación de cuerdas y tecnología de marca de agua. Este ofuscador es gratuito para proyectos educativos y no comerciales. Se admiten formatos de archivo de guerra y JAR y permiten agregar fechas válidas a las aplicaciones que necesitan ofuscar el código. Hay proyectos que necesitan proteger el código. La solución más básica es ofuscar el código. Después de descomparar el archivo empaquetado, puede ver el efecto. Además, el tamaño de las bolsas hechas con Allatori será un poco más pequeña.
Introducción del proyecto
Un proyecto Maven muy ordinario, la diferencia es agregar el paquete JAR de Allatori en el directorio raíz.
Echemos un vistazo al archivo 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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. http://maven.apache.org/xsd/maven-4.0.0.xsd "> <modelVersion> 4.0.0 </modelversion> <MoupRoid> com.lovnx </groupid> <artifactid> confusion </artifactid> <lection> <MoupRoid> org.springframework.boot </proupid> <artifactid> spring-boot-saven-plugin </arfactid> </glugin> <!-Allatori Plugin Start-> <glugin> <MoupRid> org.apache.maven.plugins </groupid> <artifactid> maven-rescess-plugin </arthactActil </artes <Versión> 2.6 </versión> <ecursions> <secution> <id> Copy-and-Filter-Allatori-Config </id> <fase> paquete </fase> <potes> <pote> copy-recursces </poal> </metas> <figuration> <uteledDirectory> $ {BaseIR}/Target </utendirectory> <Sc Resources> <SceroCe> <Directory> $ {Basedir}/Allatori </Directory> <Incluye> <cluido> Allatori.xml </clice> </incluye> <Strining> True </Fothering> </ourters> </recursos> </figuration> </secution> </ecucesions> </tugin> <glugin> <grupo> org.codehaus.mojo </groupid> <artifactid> exec-maven-plugin </artifactid> <versión> 1.2.1 </versión> <secutesions> <cacution> <id> run-allatori </id> <fase> paquete </fase> <setals> <set> exec </meta> </sutas> </secution> </secution> </secution> </ejecution> <secutation> java </ejecutivo </ejecutor <GUNG> -XMS128M </argumento> <gunis> -xmx512m </grision> <gunish> -jar </argumento> <gunis> $ {Basedir} /lib/allatori.jar </grision> <gunis> $ {Basedir} /Target/allatori.xml </argumento> </gungums> </figuration> </glugin> <! Plugin> <! Plugin <! Plugin <! Plugin <! plugini <! plugini- </glugins> </build> <pendencies> <!-test begin-> <pendency> <MoupRiD> Junit </groupId> <AtifactId> Junit </artifactID> <AcPope> test </pope> </dependency> <!-Test end-> <-startup springBoot-> <pendency> <pendency> <grupiD> orrin <artifactid> spring-boot-starter-web </artifactid> </pendency> </dependencias> <parent> <proupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-parent </artifactid> <potlion> <potlion 1.5.8.reelease </leding> </parent> </proyecto> Uso de Maven para empacar complemento, Spring Boot construye la configuración Allatori también se explica anteriormente. Lo que es más importante en la configuración de Allatori es:
<GUNG> $ {BASEDIR} /LIB/allatori.jar </argumento> <gunish> $ {Basedir} /target/allatori.xml </argumento> Especifique la ruta de archivo Alllatori.jar de Allatori. Si su proyecto es un proyecto POM, puede colocar el directorio LIB en el proyecto matriz, y luego el proyecto infantil solo necesita:
<GRUGS> ../ lib/allatori.jar </argumento>
Hazlo.
El archivo Allatori.xml también es muy importante, eche un vistazo al contenido del mismo:
<Eftig> <put> <jar in = "confusion-0.0.1-snapshot.jar" out = "confusion-0.0.1-snapshot-obfuscated.jar"/> </ input> <Keep-names> <class access = "protegido+"> <field access = "protegido+"/> <Method Access = "Protected+"/> </scase> </Keep-Names> <product Name "Nombre de la propiedad". value = "log.xml"/> </form>
Es decir, la configuración específica del Ofuscador Allatori. Aquí puede configurar mucha información y varias estrategias, y también puede especificar qué clases no están ofuscadas. Se pueden obtener varios métodos específicos en la documentación en el archivo adjunto al final del artículo.
Lo que debe explicarse aquí es:
<input> <jar in = "confusion-0.0.1-snapshot.jar" out = "confusion-0.0.1-snapshot-obfuscated.jar"/> </put>
confusión-0.0.1-snapshot.jar es un paquete no obfusificado después del paquete, mientras que la confusión-0.0.1-snapshot-obfuscated.jar es un paquete ofuscado, que es lo que necesitamos.
Pasos de embalaje
1. Proyecto Maven limpio.
2. Copie el archivo Allatori.xml a continuación en el directorio de destino.
3. Instale el proyecto Maven, y después de ver la siguiente información, significa que tiene éxito:
#############################################################. #############################################################. ¡Versión de demostración! ## ¡No para uso comercial! ### ## La versión de demostración agrega System.out ## y dale el nombre de 'Allatori_Demo' ## a algunos campos y métodos. ## ## ## Ofuscación por Allatori Obfuscator V6.4 Demo ## ## http://www.allatori.com ## ################################################################################################################ ################################################################################################################ ################################################################################################################ #################################################################################################################
4. Proyecto exitoso:
La flecha apunta al paquete que necesitamos, y el código de este paquete ha sido ofuscado.
Vista de efecto
Aquí usamos la herramienta de descompilación para ver los paquetes ofuscados. Utilizo el software JD-Gui, que es pequeño y práctico.
Antes de TestApplication.Java Ofuscation:
importar org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; @springbootapplication classpublic testApplication {public static void main (string [] args) {springapplication.run (testApplication.class, args); }} Después de la aplicación TestApplication.Java se ofusca:
import java.io.printstream; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; @springbootapplicationpublicpuest testApplication {public string 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 = nuevo 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####################################################################################################### ######################################################### #########################################################. ######################################################### #########################################################. ######################################################### #########################################################. Allatori Obfuscator V6.4 Demo #/n # #/n #http://www.allatori.com #/n # #/n ###########################################################################################################################################################################################################################################################################################. SpringApplication.run (TestApplication.Class, a); }} Antes de que TestController.java esté confundido:
importar org.springframework.web.bind.annotation.getMapping; import org.springframework.web.bind.annotation.restcontroller; @restcontrollerpublic clase testController {@getmapping ("/test") prueba de cadena pública () {retorno "888888888888888"; }} Después de que TestController.java se ofuse:
importar org.springframework.web.bind.annotation.getMapping; import org.springframework.web.bind.annotation.restcontroller; @restcontrollerpublic testController {@getmapping ({"/test"}) 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 = nuevo 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 (?); }} Jajaja, ¿qué tal, no entiendes? Y el paquete de ofuscación se ejecuta como de costumbre sin ningún problema.
--------》 Código fuente de GitHub y dirección de documento "-------
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.