Dotfuscator类重命名方法解析
Dotfuscator是专业的.NET程序代码混淆工具,拥有重命名、字符串加密、流程模糊、自定义规则和水印等功能,倍受开发人员喜爱。其中类重命名的使用方法非常普遍,涉及到既要保护代码信息,又要在以后能实现运行维护及多程序协同工作。
那么类重命名到底有几种方法?每种方法是如何实现的?接下来将解析各种类重命名方法及其实现过程。
整体重命名
默认的类重命名方法是整体重命名,会把类命名为一个新的、简单的名字。这是最简单的一种重命名方式。举例如下:
原来名字 |
新名字 |
Preemptive.Application.Main |
a |
Preemptive.Application.LoadData |
b |
Preemptive.Tools.BinaryTree |
c |
Preemptive.Tools.LinkedList |
d |
保留命名空间
当需要维持命名空间层次结构时,使用保留命名空间重命名方法是很重要的。虽然放弃了一些混淆处理的潜力,但可以使混淆代码链接回代码库让其他应用程序可以调用混淆代码。保证应用程序的兼容性。其重命名实现是通过设置选项为保留命名空间层次。简单举例如下:
原来名字 |
新名字 |
Preemptive.Application.Main |
Preemptive.Application.a |
Preemptive.Application.LoadData |
Preemptive.Application.b |
Preemptive.Tools.BinaryTree |
Preemptive.Tools.a |
Preemptive.Tools.LinkedList |
Preemptive.Tools.b |
保留命名结构
类似于保留命名空间,都是能维持命名空间层次结构,但保留命名结构只是保留了命名结构,对代码保护比保留命名空间强多了。简单举例如下:
原来名字 |
新名字 |
Preemptive.Application.Main |
a.a.a |
Preemptive.Application.LoadData |
a.a.b |
Preemptive.Tools.BinaryTree |
a.b.a |
Preemptive.Tools.LinkedList |
a.b.b |
重命名前缀
重命名前缀方法是一种高水平的复合重命名类型。可以结合上面说的三种方法,复合型重命名安全指数非常高。简单举例如下:
原来名字 |
前缀 |
重命名类型 |
新名字 |
Application.Main |
|
默认 |
MyApplicationa |
Application.LoadData |
myprefix |
默认 |
myprefixa |
Tools.BinaryTree |
myprefix |
保留命名结构 |
a.myprefixa |
Tools.LinkedList |
myprefix |
保留命名空间 |
Tools.myprefixa |
Tools.Proxy |
mynamespace. |
保留命名空间 |
Tools.mynamespace.a |
有三种方式来设置重命名前缀:
- 在Dotfuscator界面选择重命名中的重命名前缀选项按钮,出现选择/输入前缀和重命名类型对话框,完成设置执行即可。
- 在命令行使用/prefix:[on > off]选项。命令如下:
Dotfuscator /p=prefix=MY_PREFIX /pref:on [other options...] -
使用文本或XML编辑,手动添加“prefix”选项到重命名区域,如在propertylist区域添加自定义“prefix”属性。代码如下:
12345678910<
propertylist
>
<!-- defining prefix here tells the renamer to use the value as the
renaming prefix, if renaming prefix is enabled -->
<
property
name
=
"prefix"
value
=
"MY_PREFIX"
/>
</
propertylist
>
<
renaming
>
<!-- this turns on the renaming prefix feature -->
<
option
>prefix</
option
>
...
</
renaming
>