本文主要介绍了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”等。 |
Windows | Allatori将使用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,有需要的传送门~~~