.net JustDecompile/dotPeek向我显示一个程序集';的源代码。如何修改它?

.net JustDecompile/dotPeek向我显示一个程序集';的源代码。如何修改它?,.net,decompiling,.net,Decompiling,我可以通过反编译器看到原始源代码,但如何修改源代码并在以后重新编译.DLL?首先,您看不到原始源代码;您可以看到反向工程的源代码 如果您对以编程方式修改程序集感兴趣,请查看以下项目: *CodePlex上的和项目。这正是他们的目的 “[CCI]允许应用程序有效地分析或修改.NET程序集、模块和调试(PDB)文件。”-来自项目网站 IIRC、CCI元数据在相当低的抽象级别上工作。如果您想用它修改或插入代码,您必须处理中间语言(IL)。CCI AST提供更高级别的抽象(抽象语法树) (顺便说一句,我

我可以通过反编译器看到原始源代码,但如何修改源代码并在以后重新编译.DLL?

首先,您看不到原始源代码;您可以看到反向工程的源代码

如果您对以编程方式修改程序集感兴趣,请查看以下项目: *CodePlex上的和项目。这正是他们的目的

“[CCI]允许应用程序有效地分析或修改.NET程序集、模块和调试(PDB)文件。”-来自项目网站

IIRC、CCI元数据在相当低的抽象级别上工作。如果您想用它修改或插入代码,您必须处理中间语言(IL)。CCI AST提供更高级别的抽象(抽象语法树)

(顺便说一句,我想CCI不允许您篡改强命名(签名)程序集,因为这会破坏它们的用途。)

  • 。它是为Mono开发的,但也适用于.NET:

    “用简单的英语,使用Cecil,您可以加载现有的托管程序集,浏览所有包含的类型,动态修改它们,并将修改后的程序集保存回磁盘。”-来自项目网站

顺便说一句,这里有一个关于堆栈溢出的问题

其他相关库/框架:
  • 。本项目的重点是将源代码表示为抽象语法/解析树,并允许您进行源代码分析和操作。它还应该能够为您编译源代码。但是,Roslyn并不专门处理程序集操作。(总而言之,您可以将Roslyn视为System.CodeDom和System.Linq.Expressions的混合体,但比这两者都强大得多。)

  • 编写了一个名为的IL发射库,它是“DynamicMethod和ILGenerator的快速故障验证助手”

  • 您可以使用
    ildasm
    (IL反汇编程序)和
    ilasm
    (IL汇编程序)执行称为“往返”的操作(例如阅读相关内容):

    往返是指您反编译应用程序(可能通过ILDasm),可能编辑IL,然后重新编译它(可能通过ILAsm)。这是重写程序集[…]的主干

  • 最后一个选项是.NET基类库(BCL)中的和功能。前者允许您检查部件。后者提供了生成新程序集并将其保存到磁盘的功能。与CCI一样,您必须处理原始IL。此外,我认为它们不允许您轻松修改现有程序集


A允许您编辑部件。转到汇编编辑器插件部分。

那么,当使用这些工具时,我想先生成源代码,然后用另一个工具编译它?或者我可以用这些工具插入新代码吗?我听说了ILSpy 2.0,我可以将项目反编译为Visual C项目,这是一个好产品吗?它确实有类型或名称空间未找到的错误。我不知道ILSpy,但为什么不自己尝试一下,看看它是否满足您的要求?