如何反编译 .net framework 的 IL 代码?

3

我想要探究大多数 .net 框架库的 IL 代码。这是否可能?我正在尝试反编译一些 dll(例如:System.Treading),但我只看到函数的签名。然后我到 mscorlib.dll,只看到清单。有办法看到真正的代码吗?


1
你有没有尝试过使用 IlSpy?它是一个免费、开源的工具,适用于 VS 2017/2019(https://marketplace.visualstudio.com/items?itemName=SharpDevelopTeam.ILSpy)。你可以在 https://github.com/icsharpcode/ILSpy 上找到它。 - Maytham Fahmi
1
你必须注意引用程序集,它们是特殊的,不包含任何代码。最好的方法是选择实际在程序中使用的程序集,存储在GAC中,导航到c:\windows\microsoft.net\assembly。 - Hans Passant
@YVEF 没问题,希望能帮到你 :) - Maytham Fahmi
一些关于引用程序集的背景信息,请参考https://blog.lextudio.com/the-rough-history-of-referenced-assemblies-7d752d92c18c。当您仅看到函数签名时,就像Hans Passant评论的那样,您正在使用错误的程序集。 - Lex Li
3个回答

3

2
如果您想学习.Net类的实现,我建议您使用微软提供的参考代码。
使用参考代码的主要优势是,您可以看到注释和其他不会添加到IL(如#define)中的元素。 参考源代码 为了研究某些C#构造对生成的IL的影响,我建议使用SharpLib。 SharpLib

谢谢您的回答。我知道referencecode,但它并不包含我需要的所有内容。 - YVEF

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接