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”属性。代码如下:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      <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>

Dotfuscator类重命名方法解析的更多相关文章

  1. iOS项目的完整重命名方法图文教程

    原文链接:http://www.cocoachina.com/ios/20150104/10824.html iOS项目的完整重命名方法图文教程 前言:在iOS开发中,有时候想改一下项目的名字,都会遇 ...

  2. Python下OS模块重命名方法renames

    在python中有很多强大的模块,其中我们经常要使用的就是OS模块,OS模块提供了超过200个方法来供我们使用,并且这些方法都是和数据处理相关的,这里介绍下重命名这个方法. OS的重命名方法是os.r ...

  3. iOS开发-项目的完整重命名方法,图文教程。

    前言:在IOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦.直接改项目名吧,XCODE又不会帮你改所有的名字.总是有很多文件.文件夹或者是项目设置的项.而且都是不能随便改的,有时候改着改着,编译 ...

  4. centos7中的网卡一致性命名规则、网卡重命名方法

    一致性网络设备命名(Consistent Network Device Naming) 背景介绍: 在centos5的时候,我们习惯了eth0这样的网络设备命名,在centos6发现网络设备变成了em ...

  5. Labview 错误1400-打包库封装类时将对类重命名导致

    现象 今天遇到了一个神奇的BUG,主程序调用了一个包含类的打包库,打包库中将字符串还原为类句柄时报错. 调用程序结构如下:. 主程序中将类句柄转化为XML字符串程序如下: 打包库内将字符串还原为句柄程 ...

  6. SQL Server 2008数据库重命名方法

    假设SQL Server 2008中有个数据库test,现在要将其改名为zhy步骤:(1) 分离数据库:打开management studio,找到test数据库-->右键-->任务--& ...

  7. Python的程序结构[2] -> 类/Class[2] -> 方法解析顺序 MRO

    方法解析顺序 / MRO (Method Resolution Order) 关于方法解析顺序(MRO)的详细内容可以参考文末链接,这里主要对 MRO 进行简要的总结说明以及一些练习示例. 经典类和新 ...

  8. MFC工程 重命名方法

    C++ MFC工程 修改前的知识准备: 1.解决方案相关文件 AAA.sln文件和AAA.suo文件为MFC自动生成的解决方案文件,它包含当前解决方案中的工程信息,存储解决方案的设置. 2.工程相关文 ...

  9. django类视图as_view()方法解析

    使用视图函数时,django完成URL解析之后,会直接把request对象以及URL解析器捕获的参数(比如re_path中正则表达捕获的位置参数或关键字参数)丢给视图函数,但是在类视图中,这些参数不能 ...

随机推荐

  1. NOI第一天感想&小结

    嘛...中午总算是到了深圳了--在虹桥机场和飞机上和市队大神们一起讨论各种各样奇(sang)葩(bing)的算(ren)法(lei)还是非常开心的,在此再各种膜拜一下尽管没来比赛的FFT大神@陈中瑞 ...

  2. 【Eclipse高速发展-文章插件】google V8,对于调试Nodejs

    安装的的时候能够通过 Help>Eclipse Marketplace的 搜索方式安装 或者 Help>Install New Software Name:googleV8 Locatio ...

  3. SQL入门学习5-函数、为此、CASE表达式

    6-1. 各种各样的函数 函数的种类 算数函数 字符串函数 日期函数 转换函数 聚合函数 1.1算术函数 数据类型:NUMERIC 是大多数DBMS都支持的一种数据类型. 通过NUMBERIC(全体位 ...

  4. SQL Server BCP使用小结

    原文:SQL Server BCP使用小结 用法: bcp {dbtable )   );GO--输出XML格式化文件--说明一下:-t","是指定字段分隔符,稍后我们会讲到exe ...

  5. 用Maven打包成EAR远程部署JBoss(二)——部署到远程JBoss

    用Maven打包成EAR远程部署JBoss(一)讲了如何使用Maven打包,可是在文章的最后也留下了一个问题,那就是如何将包部署到远程的JBoss中呢?近期在对之前的学习进行总结,发现少了这样一篇重要 ...

  6. c# Ftp下载程序源代码解析

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. -Android的发展webservice-号码归属地查询

    代码地址:http://download.csdn.net/detail/jiangliqing1234/8027039 流程具体解释:http://blog.csdn.net/lyq8479/art ...

  8. Linux:闪光的宝石,智慧(下一个)

    2005年4月7日.Linus Torvalds公布了一款新型通用工具软件包,叫做"Git"(the Git source code management system).&quo ...

  9. 为 Oracle Database 开发 WCF Data Services 和 OData 应用程序

    为 Oracle Database 开发 WCF Data Services 和 OData 应用程序 本教程包含以下部分:   目的   所需时间   概述   先决条件   创建新的网站项目   ...

  10. T4模版引擎之基础入门

    额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又在背后默默无闻的奉献着,直到现在我们项目组的人除了我之外,其它人还是对其豪无兴趣,基本上是连看一眼都懒得看,可怜的娃啊... T4(T ...