使用ConfuserEx对clickOnce应用程序进行混淆

使用ConfuserEx对clickOnce应用程序进行混淆

问题描述:

我实际上是在试图混淆ClickOnce应用程序.

I'm actually trying to obfuscate a ClickOnce application.

我的混淆器是ConfuserEx.Il遵循以下步骤:

My Obfuscator is ConfuserEx. Il followed these steps :

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

关于本主题:

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

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

Unfortunately, I get the following error when I try to install the ClickOnce app afterwards :

无法处理从HTTP/HTTPS协议到其他异种协议的重定向一个.

Cannot handle redirect from HTTP/HTTPS protocols to other dissimilar ones.

stacktrace如下:

The stacktrace is as following :

System.Net.HttpWebRequest.GetResponse()System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem下一个)

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

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

The URL I'm trying to download is in https, is that the problem ? Should I put all in http ?

要具有模糊的ClickOnce应用程序,请按照下列步骤操作:

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

A.混淆步骤

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

  1. After publishing it, Use ConfuserEx (either GUI or CLI) then obfuscate your executable and/or your DLL in a specific folder (i.e: MyProject\Confused)
  2. Once your code is sufficiently obfuscated (you can check your obfuscation with tools like ILSpy), sign your executable and/or your DLL with a code signing certificate, or with a temporary PFX (usually created when you first published your clickonce application). I'm currently using signtool.exe to do so.

仍然在混淆"文件夹中,将经过混淆和签名的文件从.exe重命名为.exe.deploy,从.dll重命名为.dll.deploy

Still in your "Confused" folder, rename the obfuscated and signed files from .exe to .exe.deploy and from .dll to .dll.deploy

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

Go to your published folder (in my case, it's a network folder, like this :

\\ network_disk \ ClickOnceApp

\\network_disk\ClickOnceApp

  1. 使用最新的应用程序文件"文件夹中的文件复制/粘贴.deploy文件

\\ network_disk \ ClickOnceApp \ Application Files \ ClickOnceApp_x_x_x_x

\\network_disk\ClickOnceApp\Application Files\ClickOnceApp_x_x_x_x

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

  1. 使用MageUI打开应用清单.就我而言:

\\ network_disk \ ClickOnceApp \ ApplicationFiles \ ClickOnceApp_1_0_0_42 \ ClickOnceApp.exe.manifest

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

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

FYI, MageUI can be found here :

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

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

单击保存"以对清单进行签名(使用Code Signing证书或以前的临时PFX),它将自动查看.exe.deploy和.dll.deploy文件的更改并重新计算正确的文件哈希.

Click on "Save" to sign the manifest (use Code Signing certificate or your temporary PFX as before), it will automatically see the change of the .exe.deploy and .dll.deploy files and recalculate the right file hash.

  1. 仍然使用MageUI,打开文件

\\ network_disk \ ClickOnceApp \ ApplicationFiles \ ClickOnceApp_1_0_0_42 \ ClickOnceApp.application

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

在应用程序引用"菜单上,单击选择清单",然后选择最近修改的清单.保存您的.application文件以对其进行签名(如第7步所述)

On the Application References menu, click 'Select a manifest' and choose the recently modified manifest. Sign your .application file by saving it (as in step 7)

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

\\ network_disk \ ClickOnceApp \ ClickOnceApp.application

\\network_disk\ClickOnceApp\ClickOnceApp.application

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

Now your ClickOnce application contains obfuscated code, and can be downloaded using ClickOnce process.

注意:

  • 个人而言,我必须在命令行(ConfuserEx.CLI.exe)中使用ConfuserEx,因为我必须混淆代码的单个部分.混淆所有这些内容将返回有关组装和加载WinForms的许多错误.
  • 在命令行中使用它允许开发人员使用声明性混淆,因此,仅混淆代码的某些关键部分.
  • 我结束了创建一个自动化这些步骤的脚本.我仍在使用mageUI.exe签名这两个清单应用程序文件,但是您可以在命令行中使用mage.exe签名这些文件(我还没有尝试过).
  • Personnally, I had to use ConfuserEx in command line (ConfuserEx.CLI.exe), because I have to obfuscate a single part of my code. Obfuscating all of it would return many errors regarding assembly and loading of WinForms.
  • Using it in command line allows developer to use Declarative Obfuscation, and consequently, obfuscate only some critical parts of the code.
  • I ended creating a script that automates those steps. I'm still using mageUI.exe to sign both manifest an application files, but you can use mage.exe to sign those files in command line (I didn't try it yet).