问题标签 [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.

0 投票
1 回答
96 浏览

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 的元数据中确实缺少这种类型:

在此处输入图像描述

但是,我知道这个类是存在的:

我注意到此行为与此 dll 中的所有内部类一致,但我不明白它的意义。我的猜测是可能有一个构建后过程来删除内部类型的数据,但如果是这样,我如何能够通过加载程序集来找到该类?我认为 CIL 使用 TypeDef 元数据加载类型,但是是否有额外的空间来存储这些数据?

为了更好地理解它,我创建了一个带有内部类的 C# 测试项目,并使用 CFF Explorer 检查了元数据。内部类在调试和发布版本中应该存在。

那么这个巫毒是什么?

多谢你们。

0 投票
0 回答
81 浏览

c# - 为什么在使用块和对象初始化程序的情况下不调用 Dispose

为什么在使用和对象初始化程序的情况下不调用 Dispose() ?我有以下代码:

IlSpy 向我展示了这一点:

和 ILCode:

0 投票
1 回答
186 浏览

c# - 如何让 ILSpy 显示编译器生成的代码

我已经编写并构建了这个应用程序:

当我在 ILSpy 中查看代码时,基于 bin/Debug 文件夹中的 .exe,它没有显示我希望看到的状态机代码: 在此处输入图像描述

我怎样才能让它显示编译器生成的代码

0 投票
1 回答
201 浏览

.net-assembly - 缺少 ILSpy 程序集参考

我有一个项目“A”,它引用了另外两个项目“B”和“C”。

对于这两个参考,这些项目中的实际功能都在“A”中使用。
但是当我用 ILSpy 打开程序集 A.dll 时,它在引用下只显示“B”而不是“C”。
如果我删除缺少的引用,我的项目将不再编译,因此它实际上已被使用。

这可能是什么原因?

0 投票
2 回答
230 浏览

c# - ILSpy - 如何修改反编译的代码看起来像 Github 源代码?

我的目标是反编译 C# 库并将其与 Github 中同一库的源代码进行比较。我想研究给定的源代码(反编译后)是否等于 Github 中的源代码。

我已经使用 ILSpy 来尝试实现这个目标。我已经下载并反编译了库“FluentScheduler”(v 5.5.1) - Nuget 链接:https ://www.nuget.org/packages/FluentScheduler/

我将给定的源代码(在我的例子中,我使用 MonthUnit.cs 文件)与 Github 上的相同源代码(同样版本)进行了比较。

Github 链接:

我注意到代码非常相似,但不完全相似,例如:

我们可以看到ILSpy生成的源代码和Github上的源代码的区别

有什么办法可以使用 ILSpy conf 来删除不必要的括号?单线?使它类似于具有完全匹配的 Github 源代码?如果不是,我是否应该使用另一个工具来反编译文件并产生与 Github 相同的结果?

非常感谢!

0 投票
0 回答
42 浏览

c# - 使用 costora.fody 合并 dll 与 emgu.cv 错误“无法加载 Dll cvextern”

我有一个 winform (.net 4.6) 使用 Emgu.cv 进行图像处理。我使用 Costura.fody 将 .dll 合并到 .exe 但不起作用。我用 ILSpy 检查 exe 中的 dll,它拥有一切。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

谢谢你。

0 投票
0 回答
75 浏览

c# - 来自对象浏览器的 Visual Studio 反编译源定义

在 Visual Studio 2019 中,有一个由 ILSpy 提供支持的新功能,用于查看反编译的源定义 (C#)。它记录在这里

这是一个很棒的功能,当我有一段代码时,

我可以单击右键并转到定义,它将带我到反编译的源定义。

我的问题是如何让它从对象浏览器中工作。在浏览对象时,如果我右键单击并浏览定义,它不会带我进入反编译的源定义。

目前,我必须在代码中的某处手动调用该类/函数才能使用 goto 定义功能。

有没有办法做到这一点,我错过了?

0 投票
2 回答
112 浏览

c# - ILSpy,如何让 IL 代码看起来更像原生 C# 而不是机器码

这是我的结果

这就是我想看到的

刚开始用ILSpy,dll是用Unity Self编译的,我只是把Assembly-CSharp.dll拖进ILSpy,找了半天也没找到,有什么需要设置的吗?

0 投票
1 回答
43 浏览

.net - ILSpy 反编译委托

ILSpy 可以反编译程序集。它可以反编译委托吗?我会想象一个 CSharpDecompiler 构造函数重载接受 Func 或 Action 作为参数而不是“字符串文件名”。它在技术上是否可行,是否有任何未来计划支持这一点?有什么建议的解决方法吗?

我想到的例子......