dotnet dll反编译并修改代码

23

我需要更改.NET DLL的代码。 我可以使用.NET反编译器编译DLL并查看代码,但是我无法更改DLL的代码。 使用.NET反编译器,我将代码反编译并保存到硬盘中,但是当我尝试重新编译代码时,它会出现错误。

一些代码以二进制格式反编译,一些代码以C#格式反编译。 是否有任何工具可以更改和重新编译DLL?

这里是我尝试反编译DLL使用的工具:

  • ILSpy
  • DisSharp
  • Reflector7.1与Reflexil插件
  • Spices.Net.Suite.5.8
  • Deploy .NET 1.0.0
  • devextras.codereflect
  • dotPeek-1.0.0.2545
  • intellilock
  • JustDecompile_BETA_2011.1.728.1

不幸的是,这些工具都不能提供完美的源代码以重新编译DLL代码。


据我所知,有更简单的方法获取.NET框架库源代码。请参阅Scott Gu的这篇文章:http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx。 - Jamie Dixon
你是想获取 .Net Framework 程序集的源代码,还是其他 .Net dll 的源代码? - Polyfun
1
你为什么想要这么做?为什么没有源代码? - Jeremy E
嗨,这段代码是C#和中级语言的组合,其中包含指针和许多地址符号,比如@@@,它们导致了错误。我正在尝试转换我的私有dll文件。 - user900492
类似的问题和一些不同的解决方案:修改已编译的 .Net Exe - Jarekczek
2个回答

10

以下代码可正常工作:

"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)。


8

我在重新编译DLL方面取得了有限的成功。更好的方法是使用Reflector和Reflexil插件。你需要对组成.NET程序集的IL代码有更好的了解,但Reflexil在描述操作码方面做得非常好。我在我的博客上有一个小教程,讲述了我如何修改PowerShell Cmdlet帮助编辑器:http://csharpening.net/?p=348


链接已失效。 - Tim Partridge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接