2016-06-20 93 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代碼示例