问题标签 [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 回答
431 浏览

wif - 为什么我无法反编译 System.IdentityModel.Services.dll?

我正在尝试反编译System.IdentityModel.Services.dll,但没有一个反编译工具显示方法详细信息

我什至无法在 ILDASM 中获得这些方法的 IL。ILSpy 也是如此。

例如: System.IdentityModel.Services.SessionAuthenticationModule

伊尔达斯姆:

我原以为至少 IL 总是可用的。不是这样吗?

0 投票
0 回答
209 浏览

dll - 如何使用 ILSpy 从资源中获取图像

我不知道这是否是一个有效的问题。但是,我有点好奇如何在 any 的资源中获取图像或图标dll

谁能告诉我该怎么做?

我正在使用dll资源中有很多图标的地方。

0 投票
2 回答
521 浏览

c# - 以“1”结尾的变量在 ILSpy 中删除了“1”。为什么?

为了探索 C# 编译器如何优化代码,我创建了一个简单的测试应用程序。每次测试更改时,我都会编译应用程序,然后在 ILSpy 中打开二进制文件。

我刚刚注意到一些对我来说很奇怪的东西。显然这是故意的,但是,我想不出编译器会这样做的充分理由。

考虑以下代码:

毫无意义的代码,但我写这个是为了看看 ILSpy 将如何解释这些if语句。

然而,当我编译/反编译这段代码时,我确实注意到了一些让我摸不着头脑的东西。我的第一个变量test_1被优化为test_!C# 编译器这样做有充分的理由吗?

为了全面检查,这是Main()我在 ILSpy 中看到的输出。

更新

显然,在检查了 IL 之后,这是 ILSpy 的问题,而不是 C# 编译器的问题。Eugene Podskal 对我最初的评论和观察给出了很好的回答。但是,我很想知道这是否是 ILSpy 中的一个错误,或者这是否是故意的功能。

0 投票
2 回答
11056 浏览

c# - 在 dotPeek 中反编译 .NET Framework v4.5 可执行文件“不是 .NET 程序集文件”,但可执行文件运行良好

一个客户与他们以前的开发人员建立了桥梁,我正试图从他们的工资单可执行文件中提取源代码,不幸的是,作为一名网络开发人员,我对 .NET 框架没有太多经验。

编辑:我们的客户合法拥有该软件,但没有要求源代码,开发人员没有回应我们的通信。我在 SO 上提出这个问题的意图不是为了法律建议(我们已经有人处理),而是为了任何可用于反编译的选项。

我之前用 JetBrains dotPeek 成功地反编译了可执行文件,但是它们都运行了.Net Framework v2.0/v4.5框架。我目前正在使用的客户工资单可执行文件运行.Net Core v4.5,它无法被 dotPeek、ILSpy 或我作为 .NET 程序集文件运行的其他 C# 反编译软件识别。

经过一番研究,我相信.Net Core它最近是开源的......但是我不确定如何继续进行反编译过程,或者此时是否有可能。有什么建议吗?

注意:我将接受“无法反编译,但您是否先尝试过 X、Y、Z?”的答案。我需要让客户知道是否可以完成,因为我们的日程安排很紧。

我所做的一些澄清:program.exe在dotPeek中打开,右键单击属性给了我这个:

在此处输入图像描述

它声称“不是 .NET 程序集文件”,但我可以正常运行可执行文件。

编辑:是否可以从可执行文件中提取更多信息,以便我可以缩小另一种反编译方法?

我怀疑.NET 反编译器在这里没有帮助。

0 投票
1 回答
1250 浏览

c# - 如果 Task.Delay 未标记为异步,它如何等待?

我正在查看Task.Delay(int)ILSpy 中的反编译:

这种方法的使用类似于await Task.Delay(5000);,智能感知甚至说“(等待)”:

在此处输入图像描述

那么Task.Delay(int)没有标记asyncpublic static async Task Delay(int millisecondsDelay))是怎么回事?

0 投票
1 回答
257 浏览

c# - 使用相同的代码实现时无法模仿 ConcurrentStack 的性能

我正在学习编写并发数据结构并将ConcurrentStack实现视为学习练习。作为起点,我创建了 ConcurrentStack 实现的副本,使用IlSpy将其反编译为 C#。我暂时只限于调查和使用 Push 和 TryPop 方法。

但是我的实现比使用原始实现要慢得多。

我的测试使用 4 个线程(在单个插槽上,4 核 CPU),每个线程针对不同内核的线程亲和性。每个线程执行 1,000,000 次循环,每个循环执行 3 次推送和 3 次弹出。多次运行测试完成所有线程的平均时间是......

  • 并发堆栈 => 445 毫秒
  • Push/TryPop 的克隆 => 670ms

因此,据我所知,即使代码在两者之间是相同的,但克隆的速度却慢了大约 50%。我一次运行 500 次测试,并取所有运行的平均值。所以我不认为问题是代码的初始 JIT'ing。

任何想法为什么方法的副本会慢得多?

C# 实现

(为了完整起见,我提供了可用于复制结果的 C# 控制台应用程序代码。对于任何有兴趣查看他们是否获得与我相同的结果的人。)

0 投票
1 回答
734 浏览

c# - 为方法调用生成代码。生成的 C# 代码显示了比 IL 代码中实际声明的更多的局部变量?

我正在创建一个开放实例委托,DynamicMethod以调用某个目标上的方法。代码通过 ref 参数以及静态方法进行处理。

请参阅以下内容:

DelegateForCall返回一个开放实例委托,以在给定一些参数ByRef的对象上调用方法。Test因此可以推断出它的定义:

但它实际上是强类型的(我同时处理强目标和弱目标)所以它实际上看起来像这样:

代码按预期工作。我将向您展示我用来生成调用方委托的代码,但首先让我展示我期望它生成的内容。DelegateForCall基本上返回DelegateForCall<object, object>,所以它是弱类型的,在这种情况下,我希望它生成以下内容:

不幸的是,查看我在 ILSpy 中生成(用于调试目的)的测试程序集中生成的代码会显示以下 C# 代码:

我无法理解它为什么声明arg_39_0并且arg_39_2- 在我的代码中,我声明了一个本地来存储目标,并声明一个本地来从args数组中获取值。所以总的来说,我们应该看到 4 个本地人。

这是我正在使用的代码:

'emit' 基本上是我用来发出操作码的助手(来源

最后,这是 ILSpy 中显示的 IL 代码,它似乎与我预期的 C# 更一致,而不是它实际生成的 C#(具有两个额外冗余局部变量的那个)

请注意它如何清楚地说明有 4 个局部变量,但 ILSpy C# 显示 6 个!

注意生成的程序集通过了peverify验证。

为什么 ILSpy 中的 C# 看起来不像我想的那样?为什么它显示有 6 个局部变量,而实际上只有 4 个?

编辑:这是 dotPeek 显示的,更奇怪的是......

0 投票
1 回答
533 浏览

.net - ICSharpCode Decompiler 从 TypeReferenceExpression 到 TypeDeclaration?

我正在使用ICSharpCode.Decompiler.Ast.AstBuilder(由 SharpDevelop、NRefactory 和 ILSpy 在后台使用;也从那里获得灵感)从代码中使用 .NET 通用中间语言程序集构建抽象语法树。

TypeReferenceExpression只要有行 like ,语法树就会包含s Math.Abs()TypeDeclaration当引用类型也存在于同一语法树中时,如何检索它?

我得到的最接近的是TypeReferenceExpression.Type.ToTypeReference().Resolve(),但编排起来非常繁重,而且我已经(我想)拥有语法树中的所有信息。我还尝试使用命名空间和标识符进行手动查找,但我想应该有更好的方法。

0 投票
2 回答
1484 浏览

c# - 如何使 ILspy c# 反编译结果具有更好的格式?

ILspy 是一个了不起的工具,但是当我使用它反编译 dll 时,我得到了这样的结果:

但它应该是这样的:

我怎样才能得到更好的结果?

更多这样的例子:

应为:

但我们得到的是:

当我们构建时会出现如下错误:

0 投票
1 回答
245 浏览

.net - 如何从 MSIL 或 .NET PE 文件中提取资源内容

请检查图片链接,我需要从 MSIL 文件中提取资源内容。我已经使用 ILSpy 调试了该文件,但我需要以任何其他方式进行调试。不使用任何人工干预。

http://i.stack.imgur.com/ZQdRc.png