c#decompiler是如何工作的
我对ILSpy或.Net Reflector等反编译器很感兴趣。
谁能告诉我这个反编译器如何将用c#编写的exe或dll文件转换为原始源代码?
这里有两个关键点。
首先,IL是C#或VB.NET的低级语言,它比汇编程序或机器代码高得多。 许多高级构造仍然存在,并且可以相对容易地用于确定代码的流程和操作。
另一个关键点是反编译器不生成原始源代码。 它从较低级别的IL生成高级语言结构,通常与原始源代码非常相似,但不完全相同。
ILSpy团队有几篇关于ILSpy如何工作的博客文章:
- 最初的post粗略概述了架构
- 有关如何将IL的隐式评估堆栈转换为变量的详细信息
- 反编译管道的演练,第1部分
- 反编译管道的演练,第2部分