汇编反编译,使用的编程语言



如何知道反编译程序集是用c#还是VB.net编写的呢?

我不知道在清单/属性中有任何明确的"我是用…编译的"信息。您也许可以使用特性检测(特别是匿名类型的实现方式和模块级方法),但是:

  • 在大多数情况下,这并不重要
  • 你不知道的
  • 编译器可能看起来很相似,给你错误的答案
  • 不是所有的IL都来自编译器;它可以从原始的IL中组装,或者以IL作为源语言,或者通过元编程技术

我个人强烈建议避免对源语言的依赖

我隐约记得有一个在VB项目中自动引用的实用程序集,而不是c#项目。我说的是。net 1.1时代(Visual Studio 2003)。它使得访问部分资源管理器shell非常容易。我一直在寻找,但没有能够找到它(将编辑,如果我能记得它是什么)。它可能在后来的Visual studio中被淘汰了,但这将是一个非常强大的原始VB的标志(认为c#程序集也可以引用它)。

编辑:正如Hans在他的评论中指出的,汇编是Microsoft.VisualBasic。

除此之外,通过查找不同版本的c#和VB编译器使用的IL模式来编译不同的公共语言结构可能是可行的。

如果你只是想看到编译程序集源代码的近似值,. net反编译器,如ILSpy, . net Reflector或dotPeek,如果原始程序集没有混淆,可以做得很好。

最新更新