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. JavaScript高级编程

             原文地址: http://www.onlamp.com/pub/a/onlamp/2007/07/05/writing-advanced-javascript.html Web应用程 ...

  2. UVA 810 - A Dicey Problem(BFS)

    UVA 810 - A Dicey Problem 题目链接 题意:一个骰子,给你顶面和前面.在一个起点,每次能移动到周围4格,为-1,或顶面和该位置数字一样,那么问题来了,骰子能不能走一圈回到原地, ...

  3. 使用Team Foundation Server 2012源代码管理基本

    原文:使用Team Foundation Server 2012源代码管理基本 本篇体验Team Foundation Server 2012安装及源代码管理.   □ 安装 搜索"team ...

  4. &quot;CoolReaper&quot; --酷派手机后门

    文章转自:http://drops.wooyun.org/tips/4342 注:译文未获得平底锅授权,纯属学习性质翻译 原文:https://www.paloaltonetworks.com/con ...

  5. Java依据Url下载图片

    package com.ronniewang.downloadpicture; import java.io.DataInputStream; import java.io.File; import ...

  6. 采用Duplicate target database在线恢复秩序oracle datagard图书馆设备

    线上oracle datagard备库由于断电以及误删除从库的归档日志文件,所以导致,备库主库数据不一致,备库须要紧急恢复.以下是大概恢复过程 1,从主库上面备份控制文件[oracle@localho ...

  7. PS多形式的部分之间复制“笨办法”

    PS剪切页面,有时候你可能会遇到这样的情况:设计改进,但是,我们要具有相同的切片. 在此假设,可以直接用于切割片.我们可以节省大量的时间,又分为片. 但是,人们一般不会在你的上跨片设计PSD在变化,但 ...

  8. 计数排序(C语言版本)

    让我们来谈谈数的排序思维: 计数排序假定待排序的全部元素都是介于0到K之间的整数.计数排序使用一个额外的数组countArray.当中第i个元素是待排序数组array中值等于i的元素的个数.然后依据数 ...

  9. 我展示了视频采集前端vfe和camera,decode等交互驱动的体系结构

    到现在都与处理器接触较多.更深入的驱动主要是前端视频采集.控制TI的DM64xx,DM3730.纪氏A31等待.他们发现,它们的使用的基本框架的是不一样的. 当然,典型camera例如ov系列,dec ...

  10. Android Fragment 真正彻底的解决(下一个)

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因.以及一些主要的使用方 ...