Reflection Mono中的运行时方法挂钩

Reflection Mono中的运行时方法挂钩,reflection,mono,jit,code-injection,Reflection,Mono,Jit,Code Injection,我有一个现有的应用程序,它是封闭源代码的,并提供自己的Mono3.5版本。我想更改应用程序的行为;具体来说,我想用一个新类替换掉一个内置类 通常情况下,人们都是这样做的。但是,在我的例子中,应用程序程序集是从只读卷加载的,这使得修改程序集本身非常棘手(生成新卷涉及硬件攻击)。但是,我可以通过官方支持的机制让它加载任意DLL,理论上我可以使用该机制在运行时修改程序集 有许多资源可以通过.NET Framework实现运行时代码注入/函数挂接,但它们在Mono下都失败了。我见过的方法包括: Sys

我有一个现有的应用程序,它是封闭源代码的,并提供自己的Mono3.5版本。我想更改应用程序的行为;具体来说,我想用一个新类替换掉一个内置类

通常情况下,人们都是这样做的。但是,在我的例子中,应用程序程序集是从只读卷加载的,这使得修改程序集本身非常棘手(生成新卷涉及硬件攻击)。但是,我可以通过官方支持的机制让它加载任意DLL,理论上我可以使用该机制在运行时修改程序集

有许多资源可以通过.NET Framework实现运行时代码注入/函数挂接,但它们在Mono下都失败了。我见过的方法包括:

  • System.Reflection.Emit.MethodRental.SwapMethodBody-未在Mono中实现
  • -使用Microsoft内部构件
  • -更多Microsoft内部构件
  • -更多Microsoft内部构件
见相关问题:


我知道这是一个非常糟糕的计划。然而,由于我没有源代码,修改磁盘上的程序集甚至比进行某种肮脏的运行时攻击更可怕,因此这是迄今为止我生成的最佳替代方案。

您是否考虑过对实际机器代码进行简单的旧热补丁?您必须找到编译方法的地址(至少mono在运行时不应该替换它),这可能并不容易,但值得一试。