我正在尝试反编译一个在.Net 1.1中开发的旧源代码。我尝试了几种不同的反编译工具,但没有一种能够给我一个好的结果,我可以编译它们。通常有部分代码在.Net 1.1中有很多错误,但它在2.0或更高版本中是很好的代码。所以我假设他们反编译为更新版本的.Net而不是1.1。 我已经使用过的工具有:Reflector,dotPeek,CodeReflect等等。我需要一个可以在1.1中反编译的工具,我可以在1.1中编译相同的代码,它不需要是免费的工具,但我需要能够保存它的代码所以我可以编译它
谢谢,
答案 0 :(得分: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代码示例