【问题标题】:dotnet dll decompile and change the codedotnet dll反编译改代码
【发布时间】:2011-11-15 09:10:31
【问题描述】:

我需要更改 .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
  • 智能锁
  • JustDecompile_BETA_2011.1.728.1

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

【问题讨论】:

  • 据我所知,有一些更简单的方法可以获取 dot net 框架库源代码。请参阅 Scott Gu 的这篇文章:weblogs.asp.net/scottgu/archive/2007/10/03/…
  • 您是要获取 .Net Framework 程序集的源代码,还是其他一些 .Net dll?
  • 为什么要这样做?为什么没有源代码?
  • 您好,代码是 c# 和中级语言的组合,它包含指针和许多地址符号,如@@@,它给出了错误。我正在尝试转换我的私人 dll
  • 类似的问题和一些不同的解决方案:Modify Compiled .Net Exe

标签: c# dll decompiler recompile


【解决方案1】:

以下代码正在运行:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 链接失效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    相关资源
    最近更新 更多