【问题标题】:Can't Decompile .NET-built executable无法反编译 .NET 构建的可执行文件
【发布时间】:2012-01-31 20:46:50
【问题描述】:

我有一个需要 .NET Framework 才能运行的可执行文件;我使用了反射器和一些流行的反编译器,但无法读取可执行文件;

这是使用 Resource Hacker 获得的清单;

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

谁能告诉我用于反编译此程序集或可执行文件的适当工具?它需要.NET 才能运行。谢谢。 我将其用于教育目的。

【问题讨论】:

  • “但无法读取可执行文件” - 任何可能提供任何信息的错误或警告??
  • 谢谢大家。 De4Dot 做到了。

标签: c# .net


【解决方案1】:

听起来可执行文件可能已针对 .NET 反编译/反射工具(例如 Reflector、ILSpy、dotPeek 等)进行了混淆(保护)。

有多种工具可以执行此类保护,包括Babel.NETDotfuscator

您可以尝试de4dot,它可以“反混淆”已使用多种工具(包括 Crypto Obfuscator、Dotfuscator、NET Reactor 和 SmartAssembly)保护的 .NET 程序集。

【讨论】:

    【解决方案2】:

    这是一个 clickonce 应用。

    首先,您需要提取内容(不记得“.app”是 CAB 还是 ZIP)。 然后使用 Reflector 或您喜欢的反编译器。

    【讨论】:

    • 应用是.exe;如何提取?
    • 不,clickonce 安装程序可能是一个 EXE。
    【解决方案3】:

    如果Reflector不能反编译,那么肯定是被SmartAssemblyDotfuscator之类的代码混淆工具混淆了。

    在这种情况下,无法反编译应用程序。

    【讨论】:

    • 不行吗?运行时能够以某种方式获得 IL,所以我必须能够做到这一点。
    • 这就是您的想法...但是这些工具被称为混淆器是有原因的。他们破坏了反编译器。这就是为什么 Reflector 不能反编译任何被适当工具混淆的东西。顺便感谢您的投票!
    • 我没有投反对票,但你说得对,它们被称为混淆器是有原因的:那是因为它们使反编译更难,但并非不可能。如果你可以运行代码,你可以反编译它(至少在 PC 上)。就这么简单,没有任何工具可以改变它。
    • Reflector 基本上是针对 C# 编译器发出的 IL 模式进行模式匹配,因此混淆器很容易混淆 Reflector 并防止反编译。但是,其他反编译器(例如 ILSpy)几乎可以处理任何 IL 代码(尽管生成的 C# 代码可能变得非常不可读)。正如 svick 所说,提取 IL 始终是可能的:如果 .NET 运行时可以做到,反编译器也可以做到。它只需要像 .NET 运行时一样处理程序集中的无效构造。
    猜你喜欢
    • 1970-01-01
    • 2021-06-16
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2021-02-04
    • 1970-01-01
    相关资源
    最近更新 更多