gpt4 book ai didi

c# - 如何在来自单独应用程序的 c# 方法调用中注入(inject)代码

转载 作者:行者123 更新时间:2023-11-30 19:22:27 24 4
gpt4 key购买 nike

我很好奇是否有人知道监控 .Net 应用程序运行时信息的方法(调用什么方法等)

并从一个单独的运行进程中注入(inject)额外的代码以在某些方法上运行。

假设我有两个应用程序:

app1.exe 为简单起见可能是

class Program
{
static void Main(string[] args)
{
while(true){
Somefunc();
}
}

static void Somefunc()
{
Console.WriteLine("Hello World");
}
}

我有第二个应用程序,我希望能够检测到应用程序 1 中的 Somefunc() 何时运行并注入(inject)它自己的代码,

 class Program
{
static void Main(string[] args)
{
while(true){
if(App1.SomeFuncIsCalled)
InjectCode();
}
}

static void InjectCode()
{
App1.Console.WriteLine("Hello World Injected");
}
}

所以结果将是应用程序一会显示

Hello World
Hello World Injected

我知道它不会这么简单(从长远来看)但我不知道这是否可能,也不知道从哪里开始。

有什么建议吗?

我在 java 中看到过类似的情况,但从未在 C# 中看到过。

编辑: 澄清一下,它的用途是将插件系统添加到我无法访问其源代码的基于 .Net 的游戏中。

最佳答案

可能值得研究 Mono.Cecil 以进行代码注入(inject)。它不会像您在问题中描述的那样在线工作,但我相信它可以离线执行您想要的操作(能够找到给定的方法,向其添加代码,并写出修改后的程序集)。 http://www.codeproject.com/KB/dotnet/MonoCecilChapter1.aspx

关于c# - 如何在来自单独应用程序的 c# 方法调用中注入(inject)代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1166535/

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