【问题标题】:Is it possible to obfuscate a ClickOnce application created in Visual Studio 2008?是否可以混淆在 Visual Studio 2008 中创建的 ClickOnce 应用程序?
【发布时间】:2017-04-15 21:34:49
【问题描述】:

我创建了一个 WPF 应用程序并使用外部工具对主 .exe 进行了混淆。

现在我无法将其发布为 ClickOnce 应用程序,因为 Visual Studio 以某种方式重新编译了主可执行文件。

我禁用了解决方案 → 配置管理器下的构建复选框,但它不起作用:当我将应用程序发布到 http://localhost/MyApplication 时,可执行文件不断被重建

是否可以在不重新编译当前项目的情况下部署我的 ClickOnce 应用程序?

如果不行,是否有免费工具可以生成带有特定所需文件的 ClickOnce 应用程序?

【问题讨论】:

标签: visual-studio visual-studio-2008 clickonce obfuscation


【解决方案1】:

免责声明:我为 Dotfuscator 的制造商 PreEmptive Solutions 工作。

Jared 解决方案的问题在于,构建过程中的构建后任务执行得太晚,因为 ClickOnce 构建步骤在构建后触发之前很久就创建了清单(包括程序集签名,混淆会发生变化)。您可以破解 MSBuild 文件(您的 .csproj/.vbproj)文件以在 AfterCompile 步骤中调用混淆任务,并让混淆器将混淆的程序集转储到构建 bin 目录中,但这很麻烦。

第二种选择是使用 Mage/MageUI 工具重新创建 ClickOnce 清单,方法是发布您的应用程序、混淆程序集、用混淆版本覆盖已发布的程序集,然后运行 ​​Mage 以重新创建清单,如 here 所示。 Mage 实用程序的文档是 here

第三种选择是如果您的混淆器是 Dotfuscator Professional 版本 4.6.1010 或更高版本。 Dotfuscator 能够直接读取 ClickOnce 部署清单作为输入、混淆程序集并输出混淆程序集和完全更新的清单文件。请参阅here 了解起点。

【讨论】:

    【解决方案2】:

    我不完全理解为什么 ClickOnce 有这种明显的行为。但是,您应该能够通过将混淆步骤插入构建系统来解决此问题。尝试定义一个针对 EXE / DLL 运行混淆器的构建后任务。由于这将作为构建的一部分运行,因此 ClickOnce 将选择是否重新构建混淆的 DLL。

    还可以省去手动运行的麻烦:)

    【讨论】:

      【解决方案3】:

      仅供参考,这是在 Visual Studio 2010 中处理的。

      与此同时,您必须发布到一个文件夹,对程序集进行模糊处理,并使用 Mage 或 MageUI 重新签署部署。这是因为 ClickOnce 会对程序集进行哈希处理,当您对其进行混淆时,它会更改哈希值,并且它们不再与清单中的信息匹配。

      RobinDotNet

      【讨论】:

        【解决方案4】:

        我的公司编写了一款名为 ClickOnceMore 的软件,非常适合这种情况。 ClickOnceMore 是 ClickOnce 工具,可用于自动化 ClickOnce 作为大型构建过程的一部分。

        使用文件包含规则,您可以在 ClickOnceMore 项目中包含您的混淆程序集,然后使用 ClickOnceMore 命令行工具构建 ClickOnce 清单。

        我们的许多客户使用 ClickOnceMore 来构建带有混淆程序集的 ClickOnce 清单。您可以在www.clickoncemore.net 找到该软件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多