【发布时间】:2009-02-22 22:03:31
【问题描述】:
我有一个包含安装项目的 VS.NET 2008 解决方案。此安装项目获取我的其他项目(在同一解决方案中)的输出并生成 MSI。到目前为止,一切都很好......我希望 MSI 中包含的程序集被混淆。这种混淆本身很简单,但是如何将这个前置步骤(混淆)引入 MSI 构建?有人有想法吗?
谢谢!
【问题讨论】:
标签: .net-3.5 installation windows-installer obfuscation
我有一个包含安装项目的 VS.NET 2008 解决方案。此安装项目获取我的其他项目(在同一解决方案中)的输出并生成 MSI。到目前为止,一切都很好......我希望 MSI 中包含的程序集被混淆。这种混淆本身很简单,但是如何将这个前置步骤(混淆)引入 MSI 构建?有人有想法吗?
谢谢!
【问题讨论】:
标签: .net-3.5 installation windows-installer obfuscation
使用Finalbuilder 等构建工具自动执行此过程。
例如构建程序集,然后对其进行混淆,最后构建设置项目。
【讨论】:
如果您使用的是 Dotfuscator Professional,则可以轻松实现这一点,因为它附带了一个 Visual Studio 项目,该项目会在安装时添加到您的系统中。
您需要做的就是向您的解决方案添加一个新的 Dotfuscator 项目,将其他项目的输出添加为 Dotfuscator 项目的输入(使用添加程序集/添加项目输出功能),设置任何必要的混淆设置和然后将设置项目的输入更改为 Dotfuscator 项目。现在,当您构建解决方案时,您的代码文件会被编译、混淆,然后交给安装项目以构建到 MSI 中。
【讨论】:
混淆器需要支持 MSBuild 集成才能工作,以便编译器的构建输出可以被混淆并作为输入传递给 MSI 项目。
Crypto Obfuscator 就是支持此类场景的工具之一。
【讨论】:
Eazfuscator.NET 专为处理此类情况而设计。要在您的程序集进入 MSI 之前对其进行模糊处理,只需执行以下操作:
其他一些混淆器也处理这个问题。例如,Dotfuscator 为 Visual Studio 提供了混淆项目类型,您可以在其中定义输入和输出,从而形成构建管道。管道可以获取组装项目的输出,对其进行混淆,然后将其传递给设置项目。
【讨论】:
我会考虑使用 WiX 或类似的东西(一些其他构建工具)来创建 MSI 文件。可以使用windows工具反编译MSI,然后混淆,放回MSI中。
另一种选择是在构建过程中添加混淆工具。我已经用 CodeVeil 完成了这篇文章的构建。如果您可以将其分支到所有项目的 Post Build 步骤中,无需设置项目(最后构建),您应该能够做到这一点。由于没有大量使用设置项目,我不确定这是否会起作用,但我认为它没有理由不起作用。
【讨论】: