2016-06-20 91 views
-2

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

谢谢,

+0

出于好奇,您在做什么升级到2.0不是一种选择? –

+0

您可以尝试找到.NET Reflector的一个非常旧的版本,它是第一个.NET反编译器AFAIK - 其他的是在Red Gate彻底失败以保证他们承诺购买后该工具将保持自由的情况下完成的。 –

+0

公司此时并不想升级,因为新代码即将到来,但同时他们还希望在此版本中进行一些更改,而且他们不想测试网站的所有单一部分。 – Ehsan

回答

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代码示例