.NET混淆器Dotfuscator使用教程:模糊处理的输出

2016-12-12 14:43    188人浏览        1 条评论

.NET混淆器Dotfuscator的专利技术通过重命名,字符串加密以及控制流以便混淆后的.NET代码更难理解。本节向您介绍如何使用.NET混淆器Dotfuscator对代码进行模糊处理。

Step 1:使用反汇编程序

.NET Framework SDK自带了一个称为ildasm 的反汇编程序实用工具。它允许您将 .NET 程序集反汇编为 IL 程序集语言语句。启动ildasm 前,请确保 .NET Framework SDK 已经安装在你的路径中。在命令行中键入ildasm。

注:如果你安装了Visual Studio,但这又不起作用,那说明ildasm的路径不正确。点击 start > Visual Studio [version] > Visual Studio Tools > Visual Studio [version] Command Prompt,打开Visual Studio命令提示符,键入 ildasm。

  • 点击File > Open,然后浏览下列路径:

C:\Program Files (x86)\PreEmptive Solutions\Dotfuscator Professional Edition 4.x\samples\GettingStarted\bin\Debug

  • 选择GettingStarted.exe。
  • 点击Open。反汇编程序集视图如下:

.NET混淆器Dotfuscator使用教程:模糊处理的输出

  • 若要将当前的所示的未模糊处理的HelloWorld 应用程序与经模糊处理的版本进行比较,请启动ildasm的另一副本。浏览至路径:
    C:\Program Files (x86)\PreEmptive Solutions\Dotfuscator Professional Edition 4.x\samples\GettingStarted\Dotfuscated
  • 选择GettingStarted.exe。
  • 点击Open。

.NET混淆器Dotfuscator使用教程:模糊处理的输出

  • 将每个反汇编窗口并排。对比两个视图有何差异。
  • 注意,未进行模糊处理的程序集包含了相当容易理解的方法名。例如,当点击Converse时,基本上可以认定调用了ConverseButton_Click: void (object, class [mscorlib]System.EventArgs) 。现在看一下模糊处理的版本,单击 Converse 按钮很难判断到底调用了哪个方法。另外,你还会注意到SaySomething 方法不见了。该方法被移除了,因为代码中的任何地方都没有用到该方法。
  • 从原始程序集中双击SayHello:string()方法,从模糊处理程序集中双击a:string()方法。这两种方法是相同的。然而,当进一步检测反汇编的 IL 代码时,你会发现这些字符串在模糊处理的版本中已经过加密,使得代码更难阅读。例如,请在未模糊处理的版本中找到下面一行:

IL_0000: ldstr "Hello, my name is "

查看模糊处理后的版本,尝试查找上面的字符串。如果找不到该字符串,那是因为它已被加密并且可能显示如下:

IL_0000: ldstr bytearray (09 42 26 44 29 46 2B 48 26 4A 67 4C 6D 4E 22 50
28 52 73 54 3B 56 36 58 34 5A 3E 5C 7D 5E 36 60
12 62 43 64 )

您可以想像,对于试图对代码进行反向工程处理的人而言,这是多么令人费解,尤其是对于更加复杂的应用程序更是如此。

Step 2:反编译

如果您现在认为您的源代码将只能由少数实际懂得 IL 汇编语言的技术人员访问,那么请再考虑一下。您可以做进一步的试验,使用 Reflector 和 Anakrino 之类的反编译器从我们的应用程序重新创建源代码。这些实用工具可将 .NET 程序集直接反编译为 C#、VB .NET 或 C++ 之类的高级语言。

对经过 Dotfuscator 处理的 GettingStarted.exe 文件运行 .NET Reflector 并尝试检查 a() 之类的方法将引发以下异常:

This item appears to be obfuscated and can not be translated.

因此,Dotfuscator Professional 能够成功阻止两种主要的反编译器对经过 Dotfuscator 模糊处理的代码进行反向工程。

相关资讯

留言评论

一条回应:“.NET混淆器Dotfuscator使用教程:模糊处理的输出”

  1. zoujiajun说道:

    不错,分享了~~

发表评论

电子邮件地址不会被公开。 必填项已用*标注

慧都2016年终促销
系统推荐