使用 ConfuserEx 混淆 clickOnce 应用程序

Tho*_*dax 2 c# obfuscation clickonce

我实际上是在尝试混淆 ClickOnce 应用程序。

我的混淆器是 ConfuserEx。我遵循了以下步骤:

  1. 单击项目属性上的“发布向导..\立即发布”按钮。这将自动在 Debug/Release 文件夹中构建您的项目。我使用它是因为它还创建了 ClickOnce 中使用的文件。我们稍后将使用这些文件。
  2. 打开 Confuser 并拖放文件 在您希望 confuser 处理的 Debug/Release 文件夹中。
  3. 这将使用混淆的程序集创建一个 Confused 文件夹(使用默认输出目录设置)。
  4. 将项目运行所需的所有依赖项/文件(如果有)复制到刚刚创建的“Confused”文件夹。
  5. 您的项目现在应该使用混淆的程序集。我运行该程序只是为了确保。:D
  6. 将 .manifest 文件从 Debug/Release 文件夹复制到 Confused 文件夹并使用 MageUI 编辑它。
  7. 在 MageUI 的“文件”部分,找到 Confused 文件夹(可能已被选中)并选中将 .deploy 放在文件上的选项,然后单击“填充”。
  8. 您的项目文件将重命名为 *.deploy
  9. 保存 .manifest 文件并使用发布项目时创建的 *TemporaryKey.pfx 对其进行签名(这应该在您的项目文件夹中)。
  10. 将 .application 文件从 Debug/Release 文件夹复制到 Confused 文件夹并使用 MageUI 编辑它。
  11. 在 MageUI 的“应用程序参考”部分单击“选择清单..”并选择您在步骤 6 中保存的 .manifest 文件。
  12. 保存 .application 文件并使用 *TemporaryKey.pfx 对其进行签名。
  13. 最后,这可能是可选的,只需将发布文件夹中的 setup.exe 和 publish.html 文件复制到 Confused 文件夹即可。

关于这个话题:

https://confuser.codeplex.com/discussions/428378

不幸的是,当我之后尝试安装 ClickOnce 应用程序时出现以下错误:

无法处理从 HTTP/HTTPS 协议到其他不同协议的重定向。

堆栈跟踪如下:

System.Net.HttpWebRequest.GetResponse() System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)

我尝试下载的 URL 是 https,这是问题吗?我应该把所有内容都放在 http 中吗?

Tho*_*dax 6

要使用混淆的 ClickOnce 应用程序,请执行以下步骤:

  1. 编译您的项目并使用 Visual Studio 发布它(右键单击项目 > 发布)

A. 混淆步骤

  1. 发布后,使用 ConfuserEx(GUI 或 CLI)然后在特定文件夹中混淆您的可执行文件和/或 DLL(即:MyProject\Confused)
  2. 一旦您的代码被充分混淆(您可以使用ILSpy 之类的工具检查您的混淆),使用代码签名证书或临时 PFX(通常在您首次发布 clickonce 应用程序时创建)签署您的可执行文件和/或您的 DLL。我目前正在使用 signtool.exe 这样做。

  3. 仍然在您的“Confused”文件夹中,将混淆和签名的文件从 .exe 重命名为 .exe.deploy,从 .dll 重命名为 .dll.deploy

  4. 转到您的已发布文件夹(在我的情况下,它是一个网络文件夹,如下所示:

\\network_disk\ClickOnceApp

  1. 通过在最近的 Application Files 文件夹中找到的文件复制/粘贴 .deploy 文件

\\network_disk\ClickOnceApp\Application Files\ClickOnceApp_x_x_x_x

B. 重新签名清单和 .application 文件

  1. 使用 MageUI 打开您的应用程序清单。就我而言:

\\network_disk\ClickOnceApp\Application Files\ClickOnceApp_1_0_0_42\ClickOnceApp.exe.manifest

仅供参考,MageUI 可以在这里找到:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\mageui.exe

单击“保存”对清单进行签名(像以前一样使用代码签名证书或您的临时 PFX),它会自动看到 .exe.deploy 和 .dll.deploy 文件的更改并重新计算正确的文件哈希。

  1. 还是用MageUI,打开文件

\\network_disk\ClickOnceApp\Application Files\ClickOnceApp_1_0_0_42\ClickOnceApp.application

在应用程序引用菜单上,单击“选择清单”并选择最近修改的清单。通过保存对您的 .application 文件进行签名(如步骤 7 所示)

  1. 对以下文件执行相同操作:

\\network_disk\ClickOnceApp\ClickOnceApp.application

现在您的 ClickOnce 应用程序包含混淆代码,可以使用 ClickOnce 进程下载。


注意事项:

  • 就个人而言,我不得不在命令行 (ConfuserEx.CLI.exe) 中使用 ConfuserEx,因为我必须混淆我的代码的一部分。混淆所有这些会返回许多关于 WinForms 的组装和加载的错误。
  • 在命令行中使用它允许开发人员使用声明性混淆,因此,只混淆代码的一些关键部分。
  • 我结束了创建自动化这些步骤的脚本。我仍在使用 mageUI.exe 对清单和应用程序文件进行签名,但您可以使用 mage.exe 在命令行中对这些文件进行签名(我还没有尝试过)。