明天的明天 永远的永远 未知的一切 我与你一起承担 ??

是非成败转头空 青山依旧在 几度夕阳红 。。。
  博客园  :: 首页  :: 管理

.NET Obfuscator -- Dotfuscator 入门

Posted on 2008-10-16 23:50  且行且思  阅读(1918)  评论(0编辑  收藏  举报
http://msdn.microsoft.com/zh-cn/library/ms227241.aspx

.NET Obfuscator -- Dotfuscator Community Edition by PreEmptive Solutions
独立 GUI 快速入门

本节向您介绍如何使用 Dotfuscator 的独立 GUI。有关 Dotfuscator 用户界面的完整指南,请参见 GUI 参考

步骤 1 -- 启动 Dotfuscator GUI

  • 单击“开始”|“程序”|“PreEmptive Solutions”|“Dotfuscator Professional Edition 4.0”|“Dotfuscator”。
  • 将出现“关于 Dotfuscator Professional”对话框。单击或按任意健继续,或等待 5 秒钟。

步骤 2 -- 创建一个默认项目

  • 选择“创建新项目”,并单击“确定”。将出现 Dotfuscator 主项目窗口,其中“输入”选项卡已选中。
  • 在此,请选择您希望进行模糊处理的程序集。
  • 单击“浏览”。
  • 浏览至:
C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\bin\Debug 
  • 选择 GettingStarted.exe。
  • 单击“打开”。该可执行文件的路径现在显示在“输入文件”下的列表框中。
  • 选择“文件”|“保存项目”以保存该项目。
  • 在“保存项目”对话框中,定位至:
C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\
  • 在“文件名”字段中,输入“Dotfuscator.xml”并单击“保存”。

步骤 3 -- 生成项目

  • 单击“生成”选项卡。“目标目录”默认填充为:${configdir}\Dotfuscated。注意:${configdir} 是一个变量,它保存指向 Dotfuscator 配置文件的路径。
  • 现在就可以对项目进行模糊处理了。单击“生成”。稍等片刻,等待 Dotfuscator 生成 HelloWorld 应用程序的模糊处理版本。经模糊处理的程序集现在存储在:
C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\Dotfuscated

现在,您可以转至“输出”选项卡,并浏览经模糊处理的符号,或者查看 Dotfuscator 在输出目录中创建的重命名映射文件 (map.xml)。如果您愿意,甚至可以运行这个模糊处理后的程序。一切都已事先准备好,您只需稍加配置就可以成功地对应用程序进行模糊处理。

接下来,只需再进行少许配置,便可使用 Dotfuscator 的一些更强大的功能。

步骤 4 -- 配置项目

  • 单击“选项”选项卡。
  • 将“生成进度”属性设置为“详细”。这将使 Dotfuscator 在“生成”选项卡的底部提供有关其执行进度的更多信息。
  • 将“发出调试符号”设置为“是”。设置此属性将告知 Dotfuscator 为每一个输出程序集创建 PDB 格式的符号文件。调试器随后可使用这些文件在调试会话中提供有用的信息。通常,这些符号文件包含行号、源文件名和局部变量名之类的信息。这些 PDB 文件与输出程序集都位于输出目录中。
  • 将“禁用重命名”、“禁用控制流”、“禁用字符串加密”和“禁用移除”的值都设置为“否”。可以精细地控制 Dotfuscator 将向程序集应用何种转换;以上是我们将在接下来的步骤中配置和使用的功能。
  • 单击“重命名”选项卡。重命名通过将方法和字段重命名为不可理解的名称来对代码进行模糊处理。默认情况下,该选项是启用的,如果要将某些项排除在重命名过程之外,则必须选择这些项。对于本应用程序,您无需排除任何项。
  • 单击“重命名选项”子选项卡。选中“使用增强的重载归纳”。该功能允许在方法和字段重命名中最多有 15% 的冗余。因为源语言(如 C# 和 VB)中通常不允许对方法返回类型或字段类型进行重载,所以这将进一步阻碍反编译器的使用。
  • 请注意,“映射输出文件”文本框已默认为:${configdir}\Dotfuscated\Map.xml
  • 选中“作为 HTML 输出”获取包含有关您的应用程序的重命名信息和统计信息的有用报告。此报告将输出到与映射文件相同的目录。默认位置为 ${configdir}\Dotfuscated\Map.html。
  • 单击“控制流”选项卡。控制流模糊处理对可产生有效前向(可执行的)逻辑的分支、条件和循环构造(例如 if、for 和 while)进行综合,但其结果在反编译时将产生非确定性的语义结果。换言之,代码与以前一样运行,但是反编译器无法重新生成原始代码。
  • 单击“字符串加密”选项卡。字符串加密将打乱应用程序中的字符串。例如,一些设法跳过注册和验证过程的人可以搜索程序要求用户输入序列号的字符串。找到该字符串后,他们就可查找其附近的指令并更改逻辑。字符串加密技术使这一过程很难进行,因为他们的搜索结果将为空。
  • 字符串加密是基于包含的,因此您必须在左窗格中显示的树的根部标记程序集的复选框,以包含输入程序集中的所有方法。
  • 单击“移除”选项卡。移除操作指示 Dotfuscator 检测并移除未使用的类型、方法和字段。这可能在最终的应用程序中节省大量空间。
  • 为了使移除操作生效,Dotfuscator 需要知道应用程序的入口点在何处。在本例中,入口点是标准“Main”方法,并且 Dotfuscator 无需额外配置即可确定这一点。

步骤 5 -- 重新生成项目

  • 单击“生成”;现在即可重新对项目进行模糊处理。与前面一样,经模糊处理的程序集存储在以下目录中:
C:\Program Files\PreEmptive Solutions\Dotfuscator Professional Edition 4.0\samples\cs\GettingStarted\dotfuscated

步骤 6 -- 浏览输出

  • 单击“输出”选项卡。现在,您可以在树中导航,该树显示了 Dotfuscator 如何对代码进行模糊处理。
  • 展开根树和所有子树。请注意蓝色钻石形的图标。这些是重命名的方法和字段。这些图标中每个图标的父级显示了它们的原始名称。Dotfuscator 已经重命名了每个方法和字段,使得解读每个方法的用途几乎不可能实现。这可以极大地影响对代码进行反向工程处理的过程。

  • 注意当前突出显示的 SaySomething 和 set_Name 方法,还有 Name 属性。Dotfuscator 检测到这些项未在此应用程序中使用。其结果是,Dotfuscator 的精简功能能够移除这些项,从而产生更小巧的应用程序。

后续步骤

至此,您已经使用 GUI 成功进行了模糊处理,接下来您可以了解一下如何使用命令行接口执行相同的任务。或者,您可以详细检查经模糊处理的输出程序集并查看模糊处理的效果如何。