gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:01:23 24 4
gpt4 key购买 nike

我可以使用反编译器查看原始源代码,但如何修改源代码并在之后重新编译 .DLL?

最佳答案

首先,你没有看到原始的源代码;你会看到逆向工程的源代码。

如果您对以编程方式修改程序集感兴趣,请查看以下项目:
* Common Compiler Infrastructure (CCI) MetadataCCI AST CodePlex 上的项目。这正是他们的目的。

"[CCI] allows applications to efficiently analyze or modify .NET assemblies, modules, and debugging (PDB) files." — from the project's website



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

(顺便说一句。我想 CCI 不会允许你篡改强命名(签名)程序集,因为这会破坏他们的目的。)
  • Mono.Cecil .它是为 Mono 开发的,但也适用于 .NET:

    "In simple English, with Cecil, you can load existing managed assemblies, browse all the contained types, modify them on the fly and save back to the disk the modified assembly." — from the project's website


  • 顺便说一句,Stack Overflow 上有一个问题要求 a comparison of the two .

    其他相关库/框架:
  • Roslyn .该项目的重点是将源代码表示为抽象语法/解析树,并允许您执行例如源代码分析和操作。它还应该能够为您编译源代码。但是,Roslyn 并不专门从事装配操作。 (总而言之,您可以将 Roslyn 视为 System.CodeDom 和 System.Linq.Expressions 的混合体,但比这两者都强大得多。)
  • Kevin Montrose编写了一个名为 的 IL 发射库Sigil 这是“DynamicMethod 和 ILGenerator 的快速失败、验证助手”。
  • 您可以使用 ildasm (IL 反汇编程序) 和 ilasm (IL 汇编程序)做一些叫做“往返”的事情(阅读它,例如 on Mike Stall's blog ):

    Round-tripping is where you decompile an app (perhaps via ILDasm), potentially edit the IL, and then recompile it (perhaps via ILAsm). This is the backbone for rewriting an assembly [...].

  • 最后一个选项是 System.ReflectionSystem.Reflection.Emit .NET 基类库 (BCL) 中的功能。前者允许您检查组件。后者提供了生成新程序集并将其保存到磁盘的功能。与 CCI 一样,您必须处理原始 IL。此外,我认为它们不允许您轻松修改现有程序集。
  • 关于.net - JustDecompile/dotPeek 向我展示一个程序集的源代码。我该如何修改它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11172648/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com