常用软件 > 正文

软加密工具dotfuscator 反混淆、反编译与使用方法

亮术网 2014-05-21 本网原创

  软件程序加密工具很多,在前面的文章中,介绍了 Xenocode 和 .NET Reactor 混淆加密软件源代码的方法及一些注意问题,本篇继续介绍 Visual Studio 自带的 dotfuscator使用方法及混淆加密注意事项。dotfuscator分社区版和专业版,后者功能多需要下载安装。

   dotfuscator 也有与其它专业软件加密工具相似的功能:加密字符、重命名、混淆流程、加水印、程序签名、移除代码等,这些功能可以设置是否启用,接着就开始看如何用 dotfuscator 混淆加密软件程序源代码。

 

  dotfuscator 使用方法

  1、下载安装好 dotfuscator 后,打开它如果弹出“发现免费的新版本 Dotfuscator 程序”窗口,单击 OK 或右上角的 X 把它关闭,一会后进 dotfuscator 主界面并弹出 Select Project Type(选择工具类型)窗口,如图1所示:

dotfuscator使用方法

图1

  2、有两个选项,即 Create New Project(创建新工程) 和 Open Existing Project(打开已有工程),没创建过工程选择第一项,否则选择第二项,我们选择第一项,点击 Ok,然后单击打开文件图标,如图2所示:

dotfuscator使用教程

图2

  3、点击 Browse... 选择待加密的 exe 或 dll 文件,点击 Ok 文件被导入 dotfuscator。

 

  4、选择 Settings 选择卡,需要设置的选项如下(图3):

dotfuscator 反混淆

图3

  Disable Control flow(禁用控制流程):No

  Disable Linking(禁用连接):Yes

  Disable PreMark(禁用水印):Yes

  Disable Removal(禁用移除代码):No

  Disable Renaming(禁用重命名):No

  Disable String Encryption(禁用字符加密):No

  以上选项可根据需要设置,加密后再次测试代码有无问题即可。

 

  5、选择 Rename 选项卡,勾选要加密文件,如图4所示:

dotfuscator反编译

图4

  选择 Option 选项卡,勾选 Use Enhanced Overload Induction”(使用增强重载模式),不勾 Include serializable types in Enhanced Overload Induction(增强重载模式不用于序列化类型变量),Renaming Scheme(重命名方案)选择 Unprintable(不可打印字符),如图5所示:

dotfuscator加密源码

图5

  Keep NameSpace:保持命名空间;

  Keep Hierarchy:保持层次结构;

  Compatibility with XML serializer:与 XML 序列化兼容;

  Introduce explicit method overrides when renaming:重命名时,采用易于理解的方法重写;

  Type Name Prefix:类型名称前缀;

  Apply to members:用于所有成员。

 

  6、选择 String Encryption 选项卡,勾选要加密的文件,如图6所示:

dotfuscator混淆字符串

图6

  7、选择 Control Flow 选项卡,勾选要加密的文件,如图7所示:

dotfuscator混淆控制流程

图7

   8、其它选可根据需要设置。

   9、设置好后,单击“绿色小三角”开始混淆加密源码,也可以按 Ctrl + B。

 

  10、如果没有保存,会弹出询问是否保存窗口(The project has changed. Do you wang to save the project?),如图8,选择“是”并选择保存文件夹,然后开始加密。

dotfuscator工程

图8

  11、加密完成后,输出文件保存在“刚才选择保存工程的文件夹”。如果没有保存工程,则输出文件保存在安装目录下的 Dotfuscated 文件夹,如 D:\Program Files (x86)\PreEmptive Solutions\Dotfuscator Professional Edition 4.9\Dotfuscated。

  以上就是 dotfuscator 使用方法,步骤看起蛮繁锁,不过使用也简单。

 

  注意问题:

  1、如果混淆加密参与循环次数很多的字符串,程序执行效率会明显下降。

  2、混淆加密后,一定要每个功能再测试一遍,因为混淆后程序很可能会出错。

 

  至于 dotfuscator 反混淆和反编译能力如何,可以用一些反混淆和反编译工具测试,看能不能反编译出源代码。