如何反编译.net框架的IL代码
Posted
技术标签:
【中文标题】如何反编译.net框架的IL代码【英文标题】:How can I decompiling IL code of .net framework 【发布时间】:2020-01-22 04:01:14 【问题描述】:我想研究大多数 .net 框架库类的 IL 代码。可能吗?我正在尝试反编译一些 dll(例如:System.Treading),但我只看到函数的签名。然后我去 mscorlib.dll 只看到清单。有没有办法看到真实的代码?
【问题讨论】:
你检查过 IlSpy github.com/icsharpcode/ILSpy。免费和开源,适用于 VS 2017/2019 (marketplace.visualstudio.com/…) 您必须注意参考程序集,它们是特殊的并且不包含任何代码。最好的方法是选择程序中实际使用的程序集,存储在 GAC 中,导航到 c:\windows\microsoft.net\assembly @YVEF 没问题,希望对您有所帮助:) 一些关于参考程序集的背景信息,blog.lextudio.com/… 当您只看到函数的签名时,您使用的是错误的程序集,如 Hans Passant 评论的。 【参考方案1】:您可以使用.NET Reflector(商业但非常好):
https://www.red-gate.com/products/dotnet-development/reflector/
您可以使用它打开一个 .net 程序集(.exe 或 .dll)。
因此您也可以通过选择框架版本来直接浏览 .NET Framework 程序集。
选择查看IL或其他语言如C#或VB代码就完成了。
还有例如这个免费工具(慢,非常慢):
https://www.jetbrains.com/decompiler/
【讨论】:
【参考方案2】:如果你想研究 .Net 类的实现。建议你使用微软提供的参考代码。
使用参考代码的主要优点是,您可以看到不会添加到 IL 中的 cmets 和其他元素(如#define)。
Reference Source
要研究某些 C# 构造对生成的 IL 的影响,我建议使用 SharpLib。
SharpLib
【讨论】:
感谢您的回答。我知道参考代码,但它不包含我需要的所有内容。【参考方案3】:我使用 ILspy 个人反编译 IL 代码,它是轻量级工具且易于使用。
你可以在下面的链接中找到它:
https://sourceforge.net/projects/ilspyportable/
最好的问候。
【讨论】:
以上是关于如何反编译.net框架的IL代码的主要内容,如果未能解决你的问题,请参考以下文章