3-D方托管装配的Hook方法的解决方案

时间:2019-07-05 13:12:02

标签: c# .net hook managed easyhook

我正在寻找一种在运行时在3D各方托管的.NET程序集中注入(添加/替换)方法代码的方法。我正在VS2017中使用C#进行此操作。

我尝试过:

  • PlayHooky(https://github.com/wledfor2/PlayHooky)效果很好,但是它不支持原始方法调用,对于我正在从事的项目,我需要经过良好测试和增强的功能。
  • Easyhook(https://easyhook.github.io),网络上的示例显示了如何将托管代码注入非托管API中,即使是旨在将托管代码注入托管中也找不到信息。
  • Deviare v.2.0(http://whiteboard.nektra.com/deviare-v-2-0),即使遵循了《快速入门指南》,也没有任何作用,甚至没有目标托管程序集支持的信息。

以下是对我不起作用的EasyHook代码:

"scripts": [ "../node_modules/jquery/dist/jquery.min.js" ] 

in typescript file :-
import * as $ from 'jquery';

ngOnInit() {  
    $(document).ready(function () {  
      $("#demo").datepicker({  
        dateFormat: "yyyy-mm-dd"  
       });  
    });  
  }  

当我尝试使用TestClass r = new TestClass(); MethodInfo originalMethodInfo = typeof(TestClass).GetMethod(nameof(TestClass.DoSomething)); IntPtr originalMethodInfoPtr = originalMethodInfo.MethodHandle.GetFunctionPointer(); MethodInfo replacementMethodInfo = typeof(Program).GetMethod(nameof(Program.DoSomething)); IntPtr replacementMethodInfoPtr = replacementMethodInfo.MethodHandle.GetFunctionPointer(); //Create hook using (LocalHook hook = EasyHook.LocalHook.CreateUnmanaged(originalMethodInfoPtr, replacementMethodInfoPtr, IntPtr.Zero)) { hook.ThreadACL.SetInclusiveACL(new int[1]);//Enable hook r.DoSomething();//Call original method, expecting replacement method to be called Console.ReadKey(); } 时遇到EasyHook.LocalHook.Create异常。

我正在寻找有关如何使EasyHook正常工作的任何想法,或寻求一些替代方法来实现托管挂钩。

0 个答案:

没有答案
相关问题