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

本文主要介绍了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,有需要的传送门~~~

当你遇到 "AttributeError: 'Obfuscator' object has no attribute 'process'" 错误时,这意味着你尝试访问的对象 `Obfuscator` 并没有 `process` 属性或方法。这通常发生在试图调用该对象的一个不存在的方法名时,比如 `obfuscator.process()`。 这种情况可能由以下几个原因引起: 1. **类未定义该方法**:首先,确认在创建 `Obfuscator` 类的地方,是否有定义 `process` 方法。检查类体内的定义是否包含: ```python def process(self): # 这里是过程的具体实现 ``` 2. **拼写错误**:可能是你将方法名称拼错了。检查类名、方法名以及导入的路径是否完全正确无误。 3. **命名空间冲突**:如果 `process` 是全局范围内已存在的变量、函数或类,那么你可能会意外地引用了那个而非你想访问的 `Obfuscator` 类的方法。 4. **导入错误**:确保 `Obfuscator` 类被正确导入。如果使用了模块或其他类定义,则导入语句应当是: ```python from module_name import Obfuscator ``` 5. **动态环境或反射操作**:有时候在动态环境中(如通过反射),你可能会尝试访问不存在于当前上下文中的方法。在这种情况下,确保你的环境配置和调用流程是正确的。 解决这种错误的办法通常是: - 检查并修正类定义中的语法错误。 - 确认类名、方法名及导入路径的拼写和结构正确无误。 - 如果是在复杂的环境或框架下工作,考虑是否有可能的第三方库或框架的兼容性和版本问题,可能需要更新依赖项或调整配置。 ### 相关问题: 1. 当如何检查我的代码是否存在拼写错误或类名问题? 2. 对于大型项目,如何系统地排查类和方法的存在性问题? 3. 如果我想从其他地方引入 `process` 方法,应该怎么做?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值