如何处理 ILSpy 错误“此文件不包含托管程序集”?

逆向工程 视窗 反编译 。网
2021-06-22 10:52:32

我正在尝试使用 ILSpy 反编译未知的 Win32 可执行文件。然而,它只是通过给我无用的信息来回答: This file does not contain a managed assembly.

我也尝试使用其他工具,如dotPeek64Teleirik,但没有成功。Virustotal 告诉我它正在使用:

[+] COMCTL32.dll
[+] ComMgr.dll
[+] KERNEL32.dll
[+] MSVCP90.dll
[+] MSVCR90.dll
[+] OLEAUT32.dll
[+] SHLWAPI.dll
[+] USER32.dll
[+] mfc90.dll

我很确定它是用 .NET 制作的,因为这个 XML 存在于代码中:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="removed"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="removed"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>

另请注意,我使用的是 Win8 并且没有安装 VS。所以我的问题是:

  1. 我需要做什么来解决上述错误?
  2. 如果有的话,我错过了什么?
  3. 如何检查我是否列出了那些 *.dll?

编辑:我现在认为它是用普通的 C++ 制作的......

1个回答

这看起来像一个 Win32 可执行文件,.NET 可执行文件通常从 mscoree.dll 导入 _CorExeMain。您可以使用 PEiD 或 Detect It Easy 等识别工具进行确认。