2011-09-12 276 views
21

我需要更改.NET DLL的代碼。我可以通過編譯.NET反射器的DLL來查看代碼,但我無法更改DLL的代碼。使用.NET Reflector,我反編譯代碼並保存到我的硬盤上,但是當我能夠重新編譯代碼時,它提供了錯誤。dotnet dll反編譯和更改代碼

幾乎沒有代碼是以二進制格式反編譯的,少數代碼是用c#反編譯的。是否有任何工具可以更改和重新編譯DLL?

下面是我用來試圖反編譯DLL的工具:

  • ILSpy
  • DisSharp
  • Reflector7.1隨着Reflexil插件
  • Spices.Net.Suite.5.8
  • 部署.NET 1.0.0
  • devextras.codereflect
  • dotPeek-1.0.0。 2545
  • intellilock
  • JustDecompile_BETA_2011.1.728.1

不幸的是,沒有給予完善的源代碼重新編譯DLL的代碼的工具。

+0

你會得到什麼錯誤? –

+0

據我所知,有更簡單的方法來獲得點網框架庫源代碼。請參閱Scott Gu的這篇文章:http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx –

+0

您是否正在嘗試獲取.Net框架程序集的源代碼或其他.Net dll? – Polyfun

回答

8

我在重新編譯DLL方面取得了有限的成功。更好的方法是使用反射器和Reflexil插件。您需要更好地瞭解組成.NET程序集的IL代碼,但Reflexil在描述OP代碼方面表現出色。我有關於我如何來修正的PowerShell命令幫助編輯器在我的博客有點穿行:http://csharpening.net/?p=348

9

下面的代碼工作:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ildasm.exe" original.dll /out=code.asm 
echo Here changes to code.asm should be done. 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe /dll code.asm 

因此,如果代碼的變化要小,通過直接在彙編代碼中進行更改是可行的。我們可以編譯和反彙編簡單的方法來查看彙編代碼的外觀。將其他方法放入程序集文件中也不會太難。

當然,代碼分析應該使用類似ilspy的工具,顯示源代碼而不是彙編代碼。

這裏使用的工具來自Windows SDK(ildasm)和.net framework(ilasm)。