【发布时间】:2016-01-26 00:07:15
【问题描述】:
我想问是否有可能以某种方式将 C# 代码注入到现有的 *.exe 文件中,该文件也是用 C# 编写的,而无需反编译。
换句话说,我正在尝试对已经存在的 C# 程序进行“扩展”,但我想在不使用“基本”代码(.*exe 文件)进行任何操作的情况下对其进行修改。
有没有办法做到这一点?或者是否需要反编译过程来修改基本代码的方法、类和/或添加扩展等?
【问题讨论】:
-
您可以直接编辑 IL 代码,而无需将其反编译为 C#、编辑 C#,然后重新编译它,但可能会更难 i> 为您服务,并不容易。
-
你看过Extension Methods吗?
-
@Servy 编辑 IL 仍在反编译可执行文件。
-
我同意 Servy,虽然可以将 C# 代码注入到 C# 进程或可执行文件中,但为进程开发“扩展”并将其注入是完全复杂的。修改函数的返回值,很简单,其他的就比较麻烦了。
-
@Jetti 反编译 IL 意味着将 IL 翻译回 C# 代码。您不需要需要来编辑代码的 IL,即使这是最实用的方法。直接编辑 IL 代码只是编辑 IL 代码。编译是将代码从一种语言翻译成另一种语言的过程;编辑 IL 不会更改该代码的语言。