【问题标题】:.NET 6 obfuscation.NET 6 混淆
【发布时间】:2022-06-16 22:32:30
【问题描述】:

我正在尝试使用“生成单个文件”选项对编译我的 .NET 6 项目后获得的 .exe 文件进行混淆处理,问题是没有混淆器对其进行处理,我想知道是否有人知道为什么?

提前感谢您的回答

【问题讨论】:

  • “没有混淆器在它上面工作” - 你试过哪个?
  • @KlausGütter ConfuserEx、Beds Protector、Dotfuscator 和 Figma 以及另外 2 位朋友尝试使用他们的混淆器,他们说这是一个原生文件,他们无法对其进行混淆
  • Produce a single file 发布的 .exe 不是您的应用程序。这是一个包含应用程序的档案。没什么好混淆的。要实现目标,您必须改变构建过程。

标签: c# .net obfuscation .net-6.0


【解决方案1】:

您必须对位于“obj\Release\net6.0-windows\win-x64”文件夹中的主应用程序 dll 进行混淆,并将混淆后的 dll 复制到该路径。

这是一个使用 Obfuscar 的工作示例。这些行位于 .csproj 文件中。

    <Target Name="Obfuscation" AfterTargets="AfterCompile" Condition="'$(PublishProtocol)'!=''">
        <Exec Command="&quot;$(Obfuscar)&quot; obfuscar.xml" />
    </Target>
    <Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(PublishProtocol)'!=''">
        <Exec Command="COPY &quot;C:\Users\Application\obj\Release\net6.0-windows\win-x64\Obfuscated\Application.dll&quot; &quot;C:\Users\Application\obj\Release\net6.0-windows\win-x64\Application.dll&quot;" />
    </Target>

之后,当您发布单个文件 exe 时,您在存档中的应用程序代码将被混淆。

【讨论】:

    【解决方案2】:

    Skater Obfuscator 保护 .NET 6 程序集。它支持发布输出为 DLL 文件(框架相关部署)的 .NET 6 项目。当发布输出是调用 .NET 6.0 DLL(自包含部署)的 EXE 文件时,最终的 DLL 也必须被混淆。可以构建两种类型的 .NET 6.0 应用:

    依赖于框架的部署。顾名思义,依赖于框架的部署 (FDD) 依赖于目标系统上存在的共享系统范围版本的 .NET 6。由于 .NET 6 已经存在,因此您的应用程序也可以在 .NET 6 的安装之间移植。您的应用程序仅包含其自己的代码和 .NET 6.0 库之外的任何第三方依赖项。 FDD 包含 .dll 文件,可以使用命令行中的 dotnet 实用程序启动这些文件。例如,dotnet app.dll 运行名为 app 的应用程序。

    独立部署。与 FDD 不同,独立部署 (SCD) 不依赖于目标系统上是否存在共享组件。所有组件,包括 .NET 6 库和 .NET 6 运行时,都包含在应用程序中,并且与其他 .NET 6 应用程序隔离。 SCD 包括一个可执行文件(例如 Windows 平台上名为 app 的应用程序的 app.exe),它是特定于平台的 .NET 6 主机的重命名版本,以及一个 .dll 文件(例如 app.dll),它是实际应用。 .NET 6 应用程序开发遵循 自包含部署 (SCD) 概念。 让我们看看在 WindowsFormsApp 项目的输出文件夹中编译的最终二进制文件是什么。 您可以在输出文件夹中看到两个主要程序集: WindowsFormsApp.exe WindowsFormsApp.dll 这对文件代表 .NET 6 自包含部署 (SCD) 概念。 该 Windows 窗体应用程序的最终输出包括 WindowsFormsApp.exe 可执行文件,它是特定于平台的 .NET 6 主机的重命名版本,以及 WindowsFormsApp.dll 库文件,它是实际应用程序。因此,WindowsFormsApp.exe 可执行文件是应用程序的启动器,其中包含在 exe 中编译的必要的预定义 .NET 6 实用程序。理想情况下,exe 文件是跨平台可执行文件。可执行文件是用机器代码编译的二进制文件。该文件无法反编译,无需混淆。

    最后,您必须专注于 WindowsFormsApp.dll 程序集保护。 Read instructions how Skater secures .NET 6 source codes

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    猜你喜欢
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 2010-11-19
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多