c#decompiler是如何工作的

我对ILSpy或.Net Reflector等反编译器很感兴趣。

谁能告诉我这个反编译器如何将用c#编写的exe或dll文件转换为原始源代码?

这里有两个关键点。

首先,IL是C#或VB.NET的低级语言,它比汇编程序或机器代码高得多。 许多高级构造仍然存在,并且可以相对容易地用于确定代码的流程和操作。

另一个关键点是反编译器不生成原始源代码。 它从较低级别的IL生成高级语言结构,通常与原始源代码非常相似,但不完全相同。

ILSpy团队有几篇关于ILSpy如何工作的博客文章:

  • 最初的post粗略概述了架构
  • 有关如何将IL的隐式评估堆栈转换为变量的详细信息
  • 反编译管道的演练,第1部分
  • 反编译管道的演练,第2部分