是否有c#反编译器可以显示与编写代码几乎相同的代码?

本文关键字:代码 反编译器 显示 是否 | 更新日期: 2023-09-27 18:16:33

我一直在使用反射器来反编译几个简单的c#应用程序,但我注意到,虽然代码正在反编译,但我仍然看不到它们在vs上写的东西,我认为这是编译器用机器代码代替人类指令的方式。然而,我想我会给它一个尝试,并问它在这里。也许有一个反编译器可以反编译并显示与原始代码几乎相同的代码。

是否有c#反编译器可以显示与编写代码几乎相同的代码?

这是不可能的,因为有很多方法可以从不同的代码中获得相同的IL。例如,无法知道扩展方法在声明类型上是被称为流畅式还是显式。没有办法知道是否使用了LINQ vs常规代码。所有的隐式操作都可能存在,也可能不存在。删除的代码可能存在,也可能不存在。许多不超过4字节的原语(包括枚举)一旦是IL就无法区分了。

如果您想要实际代码,请合法获取原始代码

现有的。net反编译器通常会尽其所能进行反编译。

您似乎在询问变量名和行格式,由于明显的原因,它们没有被编译为IL。

有几个。我目前使用JustDecompile在这里找到http://www.telerik.com/products/decompiler.aspx?utm_source=twitter&utm_medium=sm&utm_campaign=ad

[编辑]
另一种选择是.NET Reflector: http://www.reflector.net/
我相信有一个免费的版本,但我没有花时间去看。

基本上没有。通常有许多方法可以到达相同的IL代码,而反编译器根本无法知道使用了哪个。

不,也不应该有。像注释和不可访问的代码这样的东西只会增加膨胀,而绝对没有任何好处。你能做的最好的事情就是近似编译后的代码。