在 C# 中在运行时将注入的 DLL 中的函数挂接到现有方法中

问题描述

首先,我不想破解任何游戏。我希望能够在没有模组支持的情况下为用 C# 编写的游戏创建模组。

让我们假设游戏包含这个简单的类:

namespace Game
{
    public class GameLogic
    {
        public void DoThis() {
            Console.WriteLine("Game-Logic");
        }
    }
}

DoThis() 方法每秒被调用一次。 现在我希望将以下 ExtraLogic() 方法连接到函数的开头或结尾。

namespace GamePatch
{
    public class Mod
    {
        public void ExtraLogic() {
            Console.WriteLine("Extra-Logic");
        }
    }
}

当然,我必须先用我的自定义代码注入 mod-dll。 假设我已经有一个引导程序来注入 dll 并调用 DllMain 方法。 由于我无法轻松地将逻辑修补到 c# 中的方法中,因此我可能不得不以某种方式修改内存中的指令。

是否可以以某种方式插入对 ExtraLogic()调用? 我知道可以在运行时以某种方式修改 IL 代码。 如果 DoThis() 方法具有我想在 mod 逻辑中使用的参数,我该怎么办?

我更喜欢没有框架的解决方案,因为我想了解让我的方法执行的过程。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)