问题标签 [ilspy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Microsoft 如何从 DLL 的元数据中隐藏 C# 内部类?
这一切都始于我想分析 CVE-2017-8759 周围的代码。我知道 CVE 的修复程序位于 System.Runtime.Remoting.dll 中名为 WsdlParser.cs 的类中,该类是 .Net 框架的一部分。您的计算机上可能有此 dll,位置类似于:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7\System.Runtime.Remoting.dll
我使用 ilspycmd 将代码重新组装回 C#,并注意到输出目录中缺少 WsdlParser.cs:
后来我使用了 CFF Explorer,发现 TypeDefs 的元数据中确实缺少这种类型:
但是,我知道这个类是存在的:
- 它在微软的文档中:https ://referencesource.microsoft.com/System.Runtime.Remoting/metadata/wsdlparser.cs.html
使用反射和 LoadAssembly() 时,我能够找到该类:
/li>
我注意到此行为与此 dll 中的所有内部类一致,但我不明白它的意义。我的猜测是可能有一个构建后过程来删除内部类型的数据,但如果是这样,我如何能够通过加载程序集来找到该类?我认为 CIL 使用 TypeDef 元数据加载类型,但是是否有额外的空间来存储这些数据?
为了更好地理解它,我创建了一个带有内部类的 C# 测试项目,并使用 CFF Explorer 检查了元数据。内部类在调试和发布版本中应该存在。
那么这个巫毒是什么?
多谢你们。
c# - 为什么在使用块和对象初始化程序的情况下不调用 Dispose
为什么在使用和对象初始化程序的情况下不调用 Dispose() ?我有以下代码:
IlSpy 向我展示了这一点:
和 ILCode:
.net-assembly - 缺少 ILSpy 程序集参考
我有一个项目“A”,它引用了另外两个项目“B”和“C”。
对于这两个参考,这些项目中的实际功能都在“A”中使用。
但是当我用 ILSpy 打开程序集 A.dll 时,它在引用下只显示“B”而不是“C”。
如果我删除缺少的引用,我的项目将不再编译,因此它实际上已被使用。
这可能是什么原因?
c# - ILSpy - 如何修改反编译的代码看起来像 Github 源代码?
我的目标是反编译 C# 库并将其与 Github 中同一库的源代码进行比较。我想研究给定的源代码(反编译后)是否等于 Github 中的源代码。
我已经使用 ILSpy 来尝试实现这个目标。我已经下载并反编译了库“FluentScheduler”(v 5.5.1) - Nuget 链接:https ://www.nuget.org/packages/FluentScheduler/
我将给定的源代码(在我的例子中,我使用 MonthUnit.cs 文件)与 Github 上的相同源代码(同样版本)进行了比较。
Github 链接:
我注意到代码非常相似,但不完全相似,例如:
有什么办法可以使用 ILSpy conf 来删除不必要的括号?单线?使它类似于具有完全匹配的 Github 源代码?如果不是,我是否应该使用另一个工具来反编译文件并产生与 Github 相同的结果?
非常感谢!
c# - 来自对象浏览器的 Visual Studio 反编译源定义
在 Visual Studio 2019 中,有一个由 ILSpy 提供支持的新功能,用于查看反编译的源定义 (C#)。它记录在这里。
这是一个很棒的功能,当我有一段代码时,
我可以单击右键并转到定义,它将带我到反编译的源定义。
我的问题是如何让它从对象浏览器中工作。在浏览对象时,如果我右键单击并浏览定义,它不会带我进入反编译的源定义。
目前,我必须在代码中的某处手动调用该类/函数才能使用 goto 定义功能。
有没有办法做到这一点,我错过了?
.net - ILSpy 反编译委托
ILSpy 可以反编译程序集。它可以反编译委托吗?我会想象一个 CSharpDecompiler 构造函数重载接受 Func 或 Action 作为参数而不是“字符串文件名”。它在技术上是否可行,是否有任何未来计划支持这一点?有什么建议的解决方法吗?
我想到的例子......