17

如果要发布一个ClickOnce版本,它如何被Dotfuscator混淆?

4

9 回答 9

24

您可以使用 Dotfuscator 的商业版本通过将部署清单(“foo.application”)添加为 Dotfuscator 项目的输入来自动混淆 ClickOnce 应用程序。Dotfuscator 将允许您向 ClickOnce 应用程序中包含的程序集添加任何必要的排除项,并将创建包含混淆程序集的更新部署和应用程序清单。

Visual Studio(包括 Visual Studio 2010)中包含的免费版 Dotfuscator 没有自动混淆 ClickOnce 应用程序的功能。为了获得功能正常的混淆 ClickOnce 应用程序,您需要重新创建或更新 ClickOnce 清单,因为混淆会更改程序集的签名。

您可以使用mage.exemageui.exe(包含在 Windows/.NET SDK 中)来更新 ClickOnce 清单。如果您要使用 mage.exe,您需要注意不能在 ClickOnce 选项中使用“使用 .deploy 文件扩展名”选项,因为它无法识别它。

假设您的 ClickOnce 应用程序名为“Foo”并且版本为 1.0.0.0,您将要遵循的过程是:

  1. 将 ClickOnce 应用程序发布到磁盘上的目录
  2. 运行 Dotfuscator CE 并从项目的 bin 目录中添加要混淆的程序集
  3. 混淆程序集。默认情况下,经过混淆的程序集将放入名为“Dotfuscated”的子目录中。
  4. 使用 sn.exe 退出您的混淆程序集(仅当您最初对它们进行强命名时)
  5. 将混淆的程序集复制到 ClickOnce publish\Application Files\Foo_1_0_0_0 目录中的程序集之上
  6. 更新应用程序清单并将其退出:

    mage.exe -Update "Application Files\Foo_1_0_0_0\Foo.exe.manifest" -CertFile "c:\Foo\foo.pfx" -Password 密码

  7. 更新部署清单并将其退出:

    mage.exe -Update Foo.application -AppManifest "Application Files\Foo_1_0_0_0\Foo.exe.manifest" -CertFile "c:\Foo\foo.pfx" -Password 密码

您现在拥有使用混淆程序集的有效应用程序和部署清单。您也可以使用 MageUI.exe 工具来完成相同的任务(它知道如何处理带有 .deploy 扩展名的程序集),但自动化并不容易。

于 2010-08-09T18:44:49.353 回答
5

我有一个类似于 Joe Kuemerle 的解决方案,但在发布过程之前。这适用于在Visual StudioMSBuild命令行中发布。

BeforePublish目标添加到项目文件中。

<ItemGroup>
    <ClickOnceFiles Include="bin\Release\ClickOnce.*"/>
</ItemGroup>
<Target Name="BeforePublish">
    <Exec Command="{path to dotfuscator}\dotfuscator.exe Dotfuscator.xml" />
    <Exec Command="mage.exe -u bin\Release\ClickOnce.exe.manifest" />
    <Exec Command="mage.exe -u bin\Release\ClickOnce.application -AppManifest bin\Release\ClickOnce.exe.manifest" />
    <Copy SourceFiles="@(ClickOnceFiles)" DestinationFolder="obj\Release" OverwriteReadOnlyFiles="True" />
</Target>

ClickOnce 文件是ClickOnce.applicationClickOnce.exeClickOnce.exe.manifest. Mydotfuscator.xml与项目文件位于同一文件夹中。关键是最后一条命令,将 ClickOnce 文件复制到obj文件夹中。

于 2011-05-08T07:33:58.243 回答
1

是的,这些是兼容的技术。ClickOnce 只关注将应用程序及其相关二进制文件部署到目标机器上。Dotfuscator 会混淆 DLL 和 EXE 文件。只要您在发布应用程序之前运行 Dotfuscator,它们就会一起工作。

于 2010-08-05T15:30:44.867 回答
1

我不知道这是否仅在更高版本的 Visual Studio 中才有可能,但对我来说它工作得很好:

  1. 在发布模式下构建可执行文件
  2. 启动您选择的 exe 修改器并修改obj/Release/<filename>.exe中的文件(注意:不是bin/而是obj/
  3. 按下 Visual Studio 的Publish Now按钮,它假定上次构建是最新的
  4. 利润:D
于 2012-08-20T11:08:59.810 回答
0

如果您使用的是 VS2010,它附带的 Dotfuscator 会混淆文件,然后为您重新签署清单。[编辑——除非你购买完整版,否则这不是真的;它就像 VS2008 一样工作。]

如果您使用的是 VS2008,则需要发布、混淆文件,然后使用 Mage 或 MageUI 重新签署清单。

于 2010-08-05T20:56:26.293 回答
0

deepsea 混淆器与 clickonce 一起工作

于 2014-02-13T11:52:13.877 回答
0

Eziriz .NET Reactor 具有出色的 ClickOnce 集成。

于 2015-12-15T13:03:08.067 回答
-1

see microsoft onling document:Walkthrough: Manually Deploying a ClickOnce Application

于 2014-04-10T08:02:40.447 回答
-1

我是从论坛帖子How to deal with ClickOnce的回答中得到的。

于 2010-08-11T00:23:44.213 回答