【问题标题】:How can I decompiling IL code of .net framework如何反编译.net框架的IL代码
【发布时间】: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 评论的。

标签: c# .net decompiling cil ildasm


【解决方案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/

    最好的问候。

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 2010-09-13
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      相关资源
      最近更新 更多