【问题标题】:Obfuscator for .NET Core Single Publish Files.NET Core 单一发布文件的混淆器
【发布时间】:2020-05-19 16:46:16
【问题描述】:

是否有一种混淆工具可以很好地处理由 dotnet 核心单文件发布产生的 exepdb 文件?

我正在使用 dotnet core 单文件发布命令:dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true。这非常适合给我两个整洁的文件,一个 exe 和一个 pdb 文件,我可以将它们提供给客户端来运行我的应用程序。

但是,我仍然担心它的反编译能力。

我尝试在这两个文件上使用 ILSpy 和 JustCompile,幸运的是它们无法使用这些工具进行反编译。那是我的文件是安全的,还是工具还没有跟上?

如果是后者,我可以使用什么混淆工具来保护这些文件?我尝试使用Obfuscar,它不适用于单个文件发布输出,exepdb

对用于此的混淆工具有什么建议吗?

【问题讨论】:

  • "工具还没跟上?"是的,这个。当前 (3.x) 单个文件基本上是一个压缩文件,其中包含您的程序集以及 .NET Core 运行时。第一次运行它时,它会将自己解压缩到另一个目录中。尝试针对该未压缩版本运行您的工具。
  • 但是压缩版是我要交给客户的。如果我对未压缩版本运行它,例如使用 Obfuscar,这只会给我其他未压缩的 dll。但这不会影响单个文件发布输出,即我提供给客户端的 exe 和 pdb 文件。
  • 我想你误会了:单个文件压缩版。当您在客户端机器上运行它时,它会自行解压缩。
  • 我明白了,但要清楚一点。当应用程序运行且未压缩时,我无权访问客户端的计算机。因此,我如何混淆我的文件,然后使用单个文件发布来压缩它们,然后当它在客户端机器上运行时,它将被混淆。有没有这样的解决方案?
  • 哦。抱歉,我没有找到适合这里工作的正确工具的答案。我只是指出,当前的工具不能用于单次发布并不一定意味着您的代码无法恢复。

标签: .net-core obfuscation .net-core-publishsinglefile


【解决方案1】:

披露:我在 PreEmptive 的 Dotfuscator 团队工作。

我们已经测试并验证了 Dotfuscator Professional 在 .NET Core 3 和 .NET 5 上都能处理这种情况。 具体来说,您必须使用 Dotfuscator Professional 的 MSBuild 集成,现在是我们的recommended method of using Dotfuscator Professional for new projects。但是,Dotfuscator 不会更新 .NET Core 或 .NET 5 上的 .pdb 文件,因此您将无法调试使用 Dotfuscator 的构建(例如,Release 构建)。您不应将 .pdb 文件发送给不受信任的用户。

【讨论】:

    【解决方案2】:

    您可以使用混淆器。
    目标编译后在obj目录中使用,然后将混淆后的文件复制到目录中。(替换为原始文件)

    【讨论】:

    • 很多错误。例如,它会混淆在您的内部类中实现的IDisposable.Dispose,这会使您的应用程序崩溃。
    【解决方案3】:

    如果您手动解压缩它们,您可以反编译 .NET Core 自包含的可执行文件: Can .Net Core 3 self-contained single executable be decompiled?

    在将单个程序集压缩到单个文件之前,您必须在构建过程中运行混淆器。如果您添加执行混淆器的自定义 MSBuild 目标,并使用 BeforeTargets 属性将其集成到构建过程中的正确位置,这可能是可能的。但是我没有详细研究过 .NET core 构建系统。

    【讨论】:

    • 我在github.com/obfuscar/obfuscar/issues/301 做了一些工作。在这一点上,问题是即使 dll 在检查时被混淆了。运行 .exe 后检查临时文件夹时,.dll 仍未被混淆。
    • 有进展,终于可以在这里发表了。需要复制到 obj/Release 文件夹以将其包含在 Single Published 文件中。
    猜你喜欢
    • 2011-03-22
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 2022-06-16
    相关资源
    最近更新 更多