“不是 .NET 模块。”这是什么意思?
我正在使用 beta 7.2 反射器,当我尝试反射某些 exe 文件时,我看到此消息。这是什么意思 ?
谢谢
I'm using the beta 7.2 reflector, and when i'm trying to reflect some exe file i see this message. what does it mean ?
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这意味着 EXE 不是 .NET 程序集。 它是标准 Windows 可执行文件或 COM可执行的。
例如,用 VB6 编写的程序不是 .NET 程序集;它们不包含任何您想要的元数据期望 .NET 程序集包含。
It means that the EXE is not a .NET assembly. It is a standard Windows executable or COM executable.
For example, programs written in VB6 are not .NET assemblies; they contain none of the metadata you would expect a .NET assembly to contain.
如果它确实是一个 .NET 程序集(正如您后来的一些评论所建议的,基于 Spy++ 的信息),那么它可能已被混淆。一些混淆器可以修改程序集元数据流,使它们对 ildasm 和 Reflector 都显得无效,而 CLR 仍然可以加载它们,因为它不进行太多验证。
If it really is a .NET assembly (as some of your later comments, based on info from Spy++, suggest), then it's possibly been obfuscated. Some obfuscators can modify the assembly metadata streams to make them appear to be invalid to both ildasm and Reflector, whereas the CLR can still load them because it does not do as much validation.
.Net Reflector只能反编译.NET程序集。我的猜测是该可执行文件不是 .NET 可执行文件,因此 Reflector 无法加载它。
.Net Reflector can only decompile .NET assemblies. My guess would be that the executable is not a .NET executable and hence Reflector cannot load it.
我认为它正在寻找一个 CLI 标头,表明 .exe 实际上是一个 .NET 程序集,而且它看起来不像您所符合的那样。
I think it's looking for a CLI header indicating that the .exe is in fact a .NET assembly, and it doesn't look like the one you have qualifies.
您试图反映 COM 或本机可执行/动态链接库,而不是 .NET 程序集。反射镜无法做到这一点。还有其他工具可用于检查 COM 资源,尽管它们不会像 Reflector 在 .NET 程序集上那样完全反汇编。
You are trying to reflect a COM or native executable/dynamic link library and not a .NET assembly. Reflector cannot do that. There are other tools for examining COM resources, although they will not completely dissassemble like Reflector does on .NET assemblies.
我刚刚在 .NET 8.0 中编写了一个 Hello World 控制台应用程序。
测试.exe & Test.dll已由编译器生成。
当我尝试将 Test.exe 添加到 Reflector 11.1 时,我得到“不是 .NET 模块”。
但是当我尝试添加 Test.dll 时,它能够反编译它并显示我的代码。
I just wrote a Hello World console application in .NET 8.0.
Test.exe & Test.dll have been produced by the compiler.
When I tried to add Test.exe to Reflector 11.1 I got "is not a .NET module".
But when I tried to add Test.dll, it was able to decompile it and show me my code.