当前位置: 首页 > 后端技术 > Java

Java代码混淆工具入门-Allatori~

时间:2023-04-02 02:03:59 Java

作者:threedayman来源:恒生LIGHT云社区什么是Allatori?代码混淆使得代码的逆向工程几乎不可能。除了代码混淆,Allatori还可以最小化应用程序代码大小并提高应用程序启动速度。用例创建mixupmaven项目如上图在根目录下创建allatori文件夹,放置配置文件allatori.xml,创建lib文件夹,其下放置allatori.jar和allatori-annotations.jar。allatori.xml配置详情见注释。pom.xml中加入编译时需要用到的插件org.apache.maven.pluginsmaven-resources-plugin2.6<执行><执行>复制和过滤-allatori-configpackagecopy-resourcesoutputDirectory>${基础}/targetallatorialatori.xml>org.codehaus.mojoexec-maven-plugin1.2.1run-allatoripackageexecexecjava-Xms128m-Xmx512m-jarment${basedir}/target/allatori.xml</argument>通过mavenpackage命令打包,在taget中生成mixup-0.0.1-SNAPSHOT.jar和mixup-0.0.1-SNAPSHOT-obfuscated目录。jar(混淆后)文件通过反编译工具查看为mixup-0.0.1-SNAPSHOT-obfuscated.jar。混合前代码packagecom.example.mixup.controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassHelloController{privatePersonperson;@RequestMapping("/hello")publicStringsayHello(Stringname){return"hello"+name;}}混合后通过反编译工具查看packageBOOT-INF.classes.com.example.mixup.controller;importcom.example.mixup.controller.Person;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassHelloController{privatePersonh;@RequestMapping({"/hello"})publicStringsayHello(Stringname){return(newStringBuilder()).insert(0,a("D@@IC\005")).append(name).toString();}publicstaticStringa(Objects){//字节码://0:iconst_4//1:iconst_3//2:ishl//3:iconst_5//4:ixor//5:iconst_4//6:iconst_3//7:ishl//8:iconst_5//9:iconst_3//10:ishl//11:iconst_4//12:ixor//13:aload_0//14:checkcastjava/lang/String//17:dup//18:astore_0//19:invokevirtuallength:()I//22:dup//23:newarraychar//25:iconst_1//26:dup//27:pop2//:swap//29:iconst_1//30:isub//31:dup_x2//32:store_3//33:astore_1//34:store#4//36:dup_x2//37:pop2//38:store_2//39:iflt->79//42:aload_1//43:aload_0//44:iload_3//45:dup_x1//46:invokevirtualcharAt:(I)C//49:iinc#3,-1//;52:iload_2//53:ixor//54:i2c//55:castore//56:iload_3//57:iflt->79//60:aload_1//61:aload_0//62:iload_3//63:iinc#3,-1//66:dup_x1//67:invokevirtualcharAt:(I)C//70:iload#4//72:ixor//73:i2c//74:castore//75:iload_3//76:goto->39//79:newjava/lang/String//82:dup//83:aload_1//84:invokespecial:([C)V//87:areturn//局部变量表://起始长度槽名称描述符//0880sLjava/语言/对象;}}混淆后的代码很难阅读。通过java-jarmixup-0.0.1-SNAPSHOT-obfuscated.jar命令,混淆后的代码可以正常运行PS:在allatori.xml中添加如下代码,不要混淆spring框架中的代码,否则会影响启动springboot项目,会出现ClassNotFoundException错误。参考allatori官网

猜你喜欢