【问题标题】:.Net 1.1 decompile tool.Net 1.1反编译工具
【发布时间】:2016-06-20 18:10:21
【问题描述】:

我正在尝试反编译我们在 .Net 1.1 中开发的旧源代码之一。我尝试了几种不同的反编译器工具,但没有一个能够给我一个可以编译它们的好结果。通常有部分代码在 .Net 1.1 中有很多错误,但在 2.0 或更高版本中是很好的代码。所以我假设他们反编译为比 1.1 更新的 .Net 版本。 我已经使用过的工具有:Reflector、dotPeek、CodeReflect 等等。我需要一个可以在 1.1 中反编译的工具,并且我可以在 1.1 中编译相同的代码,它不需要是免费工具,但我需要能够从中保存代码以便我可以编译它。

谢谢,

【问题讨论】:

  • 出于好奇,你在做什么,升级到 2.0 不是一个选项?
  • 你可以尝试找到一个非常旧的 .NET Reflector 版本,它是第一个 .NET 反编译器 AFAIK - 其他的都是在 Red Gate 完全未能兑现他们的工具将保持免费的承诺之后制作的在他们购买之后。
  • 公司此时不想升级,因为新代码即将推出,但同时他们更愿意在此版本中进行一些更改,并且他们不想测试所有单个网站的一部分。
  • 如果新版本可以这样做,我们没有任何问题。我尝试过的方法不适用于新版本的 Reflector,您认为旧版本的效果更好吗?

标签: .net decompiler .net-1.1


【解决方案1】:

这个程序集可能在编译后被某种方式修改(即混淆、IL 优化、转换为 .Net 2.0 等)。

假设程序集是在 C# 中创建的(尽管对 VB 也有效),它是在 C# 1.2 中创建的。 C# 2.0 附带 .NET 2.0。所以你说反编译产生有效的 C# 2.0 代码和无效的 C# 1.2 代码,即反编译的代码使用 C# 2.0 中引入的语言特性,如泛型、迭代器等。但是,C# 2.0 中引入的所有新特性都实现了有点像 IL 宏,即编译器将为给定的语言特性生成一段预定义的 IL(在某些情况下是整个方法或类)。因此,这些语言特征通过 IL 模式匹配进行反编译,即反编译器查找这些完全相同的特定编译器生成的 IL 片段并将它们转换回语言特征。 C# 1.2 编译器极不可能生成相同的 IL 模式,例如C# 2.0 编译器为泛型或迭代器生成的 IL 非常独特,而 C# 1.2 编译器几乎无法生成类似的东西。

尝试在此程序集上使用 JustDecompile,但在安装了 .net 1.1 的机器上执行此操作(访问引用的程序集有助于反编译器)。如果以同样的方式失败,请提供反编译的无效 C# 1.1 代码示例

【讨论】:

    猜你喜欢
    • 2014-06-26
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多