23

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

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

以下是我用来尝试反编译 DLL 的工具:

  • 间谍
  • 锐化
  • Reflector7.1 带有 Reflexil 插件
  • Spices.Net.Suite.5.8
  • 部署 .NET 1.0.0
  • devextras.codereflect
  • dotPeek-1.0.0.2545
  • 智能锁
  • JustDecompile_BETA_2011.1.728.1

不幸的是,没有一个工具可以提供完美的源代码来重新编译 DLL 代码。

4

2 回答 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)。

于 2014-09-09T11:04:16.303 回答
8

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

于 2011-09-12T13:56:15.813 回答