是否可以将.NET Reactor与ClickOnce部署一起使用?

时间:2009-05-14 04:36:44

标签: .net encryption clickonce protection net-reactor

阅读this post并遇到同样的问题(尝试构建清单时):

MSB3171: Problem generating manifest. Could not load file or assembly or one of its dependencies. An attempt was made to load a program with an incorrect format.

我想知道任何人是否已成功使用带有ClickOnce部署的.NET Reactor(加密/混淆工具)。我整个上午都在尝试使用不同的技术进行网络搜索,有些技术可以使用Dotfuscator和Xenocode,所以我读了,但我无法从.NET Reactor那里得到任何爱。

我真的认为收到此邮件是因为ClickOnce正在尝试针对加密文件生成清单(其中甚至无法在.NET Reflector中打开)...

我有什么选择?

2 个答案:

答案 0 :(得分:4)

我们遇到了与ClickOnce和.NET Reactor相同的问题。我们拒绝混淆。

是的,你是对的。 ClickOnce需要从文件中提取程序集版本,其依赖项,制造商等。在完成模糊处理后,ClickOnce正在尝试加载不再是程序集的程序集。它现在是一个常规的二进制.exe文件。

有一个糟糕的解决方法对我来说很好,但项目管理层拒绝了这个想法。

构建并混淆所有二进制文件。在AfterBuild事件的基础上将它们打包到zip(或其他)文件中。将您的zip标记为“数据文件”(项目设置 - >发布 - >应用程序文件... - >发布状态 - >数据文件)。之后创建单个未混淆的可执行(.exe)程序集。这只是解压缩并运行一个混淆的可执行文件。设置ClickOnce发布该新可执行文件的部署。

编辑:请问我是否不够清楚。

答案 1 :(得分:0)

如果发生清单部署问题,则需要禁用默认情况下启用的“注入无效的元数据”选项。命令行参数如下:

-invalid_metadata 0

您也可以通过以下方式禁用“反ILDASM”(因为“注入无效的元数据”是一个子选项)

-suppressildasm 0

当然,如果您定义了.NET Reactor项目文件,则无需使用命令行参数。

为保护ClickOnce项目,建议通过以下方式使用.NET Reactor Visual Studio加载项:

  • 打开.NET Reactor并安装Visual Studio加载项(.NET Reactor主菜单项“帮助->安装Visual Studio 20xx加载项”)。
  • 打开Visual Studio项目并打开加载项(Visual Studio主菜单项“工具”-> .NET Reactor)。
  • 选中“启用”
  • 选中“项目输出是部署项目的一部分(设置,ClickOnce)”
  • 您可以通过定义.NET Reactor项目文件或通过命令行开关来定义保护设置
  • 添加'-invalid_metadata 0'作为命令行参数
  • 单击“确定”并允许.NET Reactor修改您的Visual Studio项目文件

enter image description here

通过这种方式,Visual Studio项目文件被修改为在正确的时间访问.NET Reactor的方式(在编译程序集之后但仍在将其添加到ClickOnce程序包之前)。