dotnet dll反编译并更改代码

时间:2011-09-12 13:51:23

标签: c# dll decompiler recompile

我需要更改.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代码。

2 个答案:

答案 0 :(得分: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)。

答案 1 :(得分:8)

我在重新编译DLL方面取得了有限的成功。更好的方法是使用Reflector和Reflexil插件。您需要更好地了解构成.NET程序集的IL代码,但Reflexil可以很好地描述OP代码。我在博客上有一些关于如何修改PowerShell Cmdlet帮助编辑器的内容:http://csharpening.net/?p=348