簡體   English   中英

dotnet dll反編譯並更改代碼

[英]dotnet dll decompile and change the code

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

很少有代碼以二進制格式反編譯,很少有代碼用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代碼。

以下代碼正在運行:

"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框架(ilasm)。

我在重新編譯DLL方面取得了有限的成功。 更好的方法是使用Reflector和Reflexil插件。 您需要更好地了解構成.NET程序集的IL代碼,但Reflexil可以很好地描述OP代碼。 我在博客上有一些關於如何修改PowerShell Cmdlet幫助編輯器的內容: http ://csharpening.net/?p = 348

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM