C# 用ConfuserEx混淆clickOnce应用程序

C# 用ConfuserEx混淆clickOnce应用程序,c#,clickonce,obfuscation,C#,Clickonce,Obfuscation,我实际上是在试图混淆ClickOnce应用程序 我的混淆器是ConfuserEx。Il遵循以下步骤: 单击项目属性上的发布向导..\Publish Now按钮。这将自动在上生成您的项目 调试/发布文件夹。我之所以使用它,是因为它还创建了在中使用的文件 单击一次。我们稍后将使用这些文件 在您希望Confuser使用的调试/发布文件夹上打开Confuser并拖放文件 这将创建一个带有模糊程序集的混乱文件夹(使用默认输出目录设置) 将项目运行所需的所有依赖项/文件(如果有)复制到“刚刚创建”文件夹 您

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

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

  • 单击项目属性上的发布向导..\Publish Now按钮。这将自动在上生成您的项目 调试/发布文件夹。我之所以使用它,是因为它还创建了在中使用的文件 单击一次。我们稍后将使用这些文件
  • 在您希望Confuser使用的调试/发布文件夹上打开Confuser并拖放文件
  • 这将创建一个带有模糊程序集的混乱文件夹(使用默认输出目录设置)
  • 将项目运行所需的所有依赖项/文件(如果有)复制到“刚刚创建”文件夹
  • 您的专案现在应该可以使用模糊的组件。我运行该程序只是为了确保:D
  • 将.manifest文件从调试/发布文件夹复制到混乱的文件夹,并使用MageUI对其进行编辑
  • 在MageUI的“文件”部分,找到混乱的文件夹(可能已经被选中),并选中将.deploy放在文件上的选项 然后单击“填充”
  • 您的项目文件将重命名为*.deploy
  • 保存.manifest文件,并使用发布项目时创建的*TemporaryKey.pfx对其进行签名(这应该在 项目文件夹)
  • 将.application文件从Debug/Release文件夹复制到Middle文件夹,并使用MageUI对其进行编辑
  • 在MageUI的“应用程序参考”部分,单击“选择清单…”,然后选择在步骤6中保存的.Manifest文件
  • 保存.application文件并使用*TemporaryKey.pfx对其进行签名
  • 最后,这可能是可选的,只需将发布文件夹中的setup.exe和publish.html文件复制到该文件夹中即可
  • 关于这一主题:

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

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

    stacktrace如下所示:

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

    我试图下载的URL是https格式的,这是问题所在吗?我是否应该将所有内容都放在http中?

    若要使用模糊的ClickOnce应用程序,请执行以下步骤:
  • 编译项目并使用Visual Studio发布(右键单击项目>发布)
  • A.混淆步骤
  • 发布后,使用ConfuserEx(GUI或CLI),然后在特定文件夹(即:MyProject\Middle)中混淆可执行文件和/或DLL
  • 一旦代码被充分模糊化(您可以使用以下工具检查模糊化),使用代码签名证书或临时PFX(通常在首次发布clickonce应用程序时创建)对可执行文件和/或DLL进行签名。我目前正在使用signtool.exe执行此操作

  • 仍然在“混乱”文件夹中,将模糊和签名文件从.exe重命名为.exe.deploy,从.dll重命名为.dll.deploy

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

  • \\网络\u磁盘\clickonceap

  • 按最新的应用程序文件文件夹中的文件复制/粘贴.deploy文件
  • \\网络磁盘\ClickOnceApp\Application Files\ClickOnceApp\u x\u x\u x

    B.重新签署清单和.application文件
  • 使用MageUI打开应用程序清单。在我的情况下:
  • \\网络\u磁盘\clickonceap\Application 文件\ClickOnceApp\u 1\u 0\u 0\u 42\ClickOnceApp.exe.manifest

    供参考,MageUI可在以下位置找到:

    C:\ProgramFiles(x86)\Microsoft SDK\Windows\v7.0A\bin\mageui.exe

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

  • 仍然使用MageUI打开文件
  • \\网络\u磁盘\clickonceap\Application 文件\ClickOnceApp\u 1\u 0\u 0\u 42\ClickOnceApp.application

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

  • 对以下文件执行相同操作:
  • \\网络\u磁盘\ClickOnceApp\ClickOnceApp.application

    现在,您的ClickOnce应用程序包含模糊代码,可以使用ClickOnce流程下载


    注:

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

    这一功能现在已经很老了,但我想指出的是,Visual Studio中有一个使用ConfuserEx的扩展,它可以与ClickOnce一起使用:

    ConfuserEx for Visual Studio集成了免费和开源 将ConfuserEx protector导入Visual Studio,以方便自动混淆 发布版本和ClickOnce应用程序


    按照Thordax指令第3步

    一旦代码变得足够模糊(您可以检查 使用ILSpy等工具进行模糊处理),对可执行文件和/或 具有代码签名证书或临时PFX(通常为 在您首次发布clickonce应用程序时创建)。我 目前正在使用signtool.exe执行此操作

    您需要像这样使用签名工具: cd C:\Program Files(x86)\Microsoft SDK\ClickOnce\SignTool