当前位置: 首页 > 工具软件 > Allatori > 使用案例 >

Allatori系列教程:Java obfuscator重命名属性

夏长卿
2023-12-01

本文主要介绍了Allatori Java obfuscator重命名属性中的第一部分内容,包括默认软件包、force-default-package、软件包命名和类命名。

类命名

默认软件包

描述
软件包名称完整的软件包名称,现有或新的。

如果某个程序包中的所有类都被重命名,则Allatori会将它们移至默认程序包。要将绝对所有重命名的类移至默认包,应启用force-default-package属性。将“”用作默认软件包将减小生成的jar的大小。 

例子:

    <property name =“ default-package” value =“” /> 
    <property name =“ default-package” value =“ com.company.product” />

force-default-package

描述
禁用(默认)仅将重命名所有类的包中的类移动到默认包中。
使能绝对启用所有重命名的类都将移至默认包。

应设置默认程序包以使该属性生效。 

例子:

    <property name="force-default-package" value="enable"/>

软件包命名

描述
abc(默认)程序包将重命名为“a”,“b”,“c”,“d”,...,“ aa”,“ ab”等。名称仅具有小写字母。
123软件包将重命名为'1','2','3',...,'00','01'等。
保持软件包将保留其原始名称。
自定义(filename.txt)名称将使用提供的文本文件构造。文件的每一行代表一个名称元素。如果文件有两行“0”和“1”,则生成的名称将是“0”,“1”,“00”,“01”,“10”,“11”,“000”等。

例子:

    <property name="packages-naming" value="abc"/>

类命名

描述
紧凑(默认) Allatori将尽可能使用单字符名称,从而使生成的jar变小。类可能具有大小写不同的混合大小写名称(a.class和A.class)。Jar文件允许使用大小写混合的文件名,而Windows文件系统则不允许,因此解压缩某些类会很棘手(解压缩后,a.class在Windows上将覆盖A.class)。具有大小写混合的jar文件将在包括Windows在内的所有平台上正常工作。
iii所有名称将具有相同的长度,并且仅大小写不同-iiii,iiiI,iiIi等。与其他重命名选项相比,生成的jar文件将更大。
abc类将重命名为“a”,“b”,“c”,“d”,...,“aa”,“ab”等。名称仅具有小写字母。
123类将重命名为“1”,“2”,“3”,...,“00”,“01”等。
WindowsAllatori将使用Windows禁止使用的名称(“con”,“prn”,“aux”,“nul”等)作为类名。在jar中有con.class是可以的,但是在Windows上不能解压缩此类。类也可能具有大小写不同的混合大小写名称。具有此类文件名的jar文件将在包括Windows在内的所有平台上正常运行。与压缩或abc命名相比,此选项使生成的jar文件更大。
自定义(filename.txt)名称将使用提供的文本文件构造。文件的每一行代表一个名称元素。如果文件有两行“0”和“1”,则生成的名称将是“0”,“1”,“00”,“01”,“10”,“11”,“000”等。
独特所有重命名的类将具有唯一的名称。在不同的程序包中将没有匹配的类名。可以与其他类的命名选项结合使用。
保持美元符号重命名的类将保留Java内部类的命名符号,即类Foo和Foo $ Bar将重命名为a和a $ b。默认情况下,Allatori将Foo和Foo $ Bar重命名为a和b。可以与其他类的命名选项结合使用。

例:

    <property name="classes-naming" value="abc"/>

方法命名

描述
紧凑(默认) Allatori将尽可能使用单字符名称,从而使生成的jar变小。
iii所有名称将具有相同的长度,并且仅大小写不同-iiii,iiiI,iiIi等。与其他重命名选项相比,生成的jar文件将更大。
abc方法将重命名为“a”,“b”,“c”,“d”,...,“aa”,“ab”等。
123方法将重命名为“1”,“2”,“3”,...,“00”,“01”等。
关键字Allatori将使用Java保留关键字(“if”,“for”,“int”等)作为方法名称。这种命名在类文件格式中是合法的,但会使许多反编译器感到困惑。但是,与紧凑命名相比,这会使生成的jar文件更大。
真实通常,某些方法不会根据配置规则重命名。Allatori将采用这些方法的名称,并将其命名为重命名的方法,这使得新名称与原始名称之间的区别不清楚。可以与其他方法命名选项结合使用(如果名称用尽,则将使用第二个选项)。
自定义(filename.txt)名称将使用提供的文本文件构造。文件的每一行代表一个名称元素。如果文件有两行“0”和“1”,则生成的名称将是“0”,“1”,“00”,“01”,“10”,“11”,“000”等。
独特唯一重命名属性的快捷方式。可以与其他方法命名选项结合使用。如果任何两个方法具有相同的名称和签名,则这些方法将重命名为相同的新名称。如果任何两个方法具有不同的名称/签名,则重命名后这些方法将具有不同的名称。它确保后续增量混淆运行期间的一致性。

字段命名

描述
紧凑(默认) Allatori将尽可能使用单字符名称,从而使生成的jar变小。
iii所有名称将具有相同的长度,并且仅大小写不同-iiii,iiiI,iiIi等。与其他重命名选项相比,生成的jar文件将更大。
abc字段将重命名为“a”,“b”,“c”,“d”,...,“aa”,“ab”等。
123字段将重命名为“1”,“2”,“3”,...,“00”,“01”等。
关键字Allatori将使用Java保留关键字(“if”,“for”,“int”等)作为字段名称。这种命名在类文件格式中是合法的,但会使许多反编译器感到困惑。与紧凑命名相比,这会使生成的jar文件更大。
真实通常,某些字段不会根据配置规则重命名。Allatori将使用这些字段的名称,并将它们赋予重命名的字段,这使得新名称和原始名称之间的区别不清楚。可以与其他字段命名选项组合(如果名称用尽,则将使用第二个选项)。
自定义(filename.txt)名称将使用提供的文本文件构造。文件的每一行代表一个名称元素。如果文件有两行“0”和“1”,则生成的名称将是“0”,“1”,“00”,“01”,“10”,“11”,“000”等。

classes-naming-prefix

描述
任何字符串指定的字符串将用作所有重命名类的名称前缀。

一些反编译器会将重命名的类视为MainClass的内部类。

字段命名前缀

描述
任何字符串指定的字符串将用作所有重命名字段的名称前缀。

例:

<property name =“ fields-naming-prefix” value =“ f _” />

局部变量命名

描述
优化(默认)Allatori执行优化以减少方法中局部变量的总数。其余的局部变量将具有相同的名称(单名称重命名选项)。这是默认和推荐的选项。
单名几乎所有局部变量都具有相同的名称。Java虚拟机允许使用它,但是会“迷惑”许多反编译器。
abc局部变量将重命名为唯一名称“ a”、“ b”、“ c”、“ d”等。
删除原始的局部变量名称将被删除(可以减小生成的jar的大小)。
保留参数参数名称将保持不变,所有其他局部变量将被重命名,这对于公共API中包含的方法来说很有用。还有一个选项,可以使用keep-names部分中的method标记只保留指定方法中的参数。
保持所有局部变量名将保持不变(不建议使用此选项)。

例:

<property name =“ local-variables-naming” value =“单名” />
单名称和优化重命名选项 的默认单名称为“ a”。您可以使用以下几行之一进行更改:
    <property name =“ local-variables-naming” value =“ optimize:ANY_OTHER_NAME” />
    <property name =“ local-variables-naming” value =“ optimize:int” />
    <property name =“ local-variables-naming” value =“单名:4” />

跳过重命名

描述
禁用(默认) Allatori根据保持名称规则执行类、方法和字段的重命名。
启用所有类、方法和字段都不会重命名。局部变量的命名由local-variables-naming属性单独控制。字符串加密、流混淆等将根据配置文件中的设置正常应用。

例:

<property name =“ skip-renaming” value =“启用” />

update-resource-names

描述
禁用(默认)不会更改资源文件名。
启用资源文件将被重命名以反映类名称的更改。如果资源文件名基于类名,并且该类已重命名,则该资源文件也将被重命名。

例:

<property name =“ update-resource-names” value =“启用” />

update-resource-contents

描述
禁用(默认)不会更改资源文件内容。
启用资源内容将被更新以反映类名称的更改。
启用:编码资源内容将使用指定的编码进行更新,以反映类名称的更改。默认编码为UTF-8。
   <property name =“ update-resource-contents” value =“启用” />
    <property name =“ update-resource-contents” value =“ enable:UTF-8” />
可以使用apply2file属性将该属性应用于指定的文件:

    <property name =“ update-resource-contents” value =“启用” apply2file =“ *。xml” />

2021年Allatori更新到7.8版本,内含官方Demo,有需要的传送门~~~

 类似资料: