.net-core - .Net Core 3 自包含的单个可执行文件可以反编译吗?

标签 .net-core obfuscation decompiling ilspy

我尝试使用 Dotpeek 和 ILSpy.Net 反编译(我自己的代码),它们失败了。

Do I need special obfuscation on distributed binaries of .Net Core 3 self-contained single executable ?

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PublishTrimmed>true</PublishTrimmed>
    <PublishReadyToRun>true</PublishReadyToRun>
    <PublishSingleFile>true</PublishSingleFile>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
  </PropertyGroup>
</Project>

最佳答案

单文件 exe 实际上是一个 非托管 包装器,ILSpy 不支持对它进行反编译。但是当您运行 exe 时,它​​会将其内容解包到一个临时文件夹中。因此,您可以在那里找到托管 dll 并使用 ILSpy 对其进行反编译。

要查找临时文件夹,您可以使用任何显示进程加载的程序集位置的工具。 SysInternals Process Monitor (procmon) 是一个很好的。

您可以将 procmon 设置为按您的 exe 名称进行过滤,当您启动 exe 时,procmon 应该显示一些从临时文件夹加载的程序集的事件:

screenshot

您可以浏览到该文件夹​​并在那里找到您的托管 dll。您可以从该位置使用 ILSpy 进行反编译。

我写了一篇博文:https://eersonmez.blogspot.com/2020/02/ilspy-decompiling-net-core-self.html

关于.net-core - .Net Core 3 自包含的单个可执行文件可以反编译吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60026667/

相关文章:

vb.net - 从exe文件中提取VB.NET代码

c# - .NET Core EF,清理 SqlConnection.CreateCommand

asp.net-core - 哪些版本的 Windows Server 与 .NET Core 运行时 RID 匹配

.net-core - 无法使用表 API 在 CosmosDB 中按时间戳查询

java - 目录层次结构必须与包层次结构相对应

java - 如何混淆 ProGuard 中的库 jar?

vb6 - 有 Visual Basic 6 反编译器吗?

java - 反编译混淆代码 "Cannot return from within an initializer"

ios - Visual Studio 不会在 Debug模式下将配置文件应用于 MAUI iOS 应用程序

windows-8 - WinRT应用程序可以使用混淆吗?