.Net 截取第三方进程/应用程序的函数方法
2021-02-19 01:20
标签:自己 lse 调用 类库 text help process 客户 使用方法 一.实现目标:在第三方应用程序运行时,启动应用程序监控第三方应用程序指定函数方法,在指定函数方法被调用时,拦截该方法并可修改函数方法的内容及返回值。 二.背景条件 二使用开源类库: 三.使用方法 3.1第三方函数实现 3.2Hook部分 引用DotNetDetour类库,并在覆盖类内引用IMethodHook接口,按如下格式实现,“GetProcessInfo”为第三方程序需要被拦截的函数名称,“”“GetProcessInfo_Original”为占位方法,此部分内容为原始方法是否实现的内容,为空即可 3.3 注入部分 在拦截程序启动部分需引用FastWin32类库,负责将Hook内容注入到第三方程序中,具体操作为调用Injector.InjectManaged函数,截图如下: 参数含义: 3.4Hook生效 引用DotNetDetour,调用下列函数: 3.5 在上述操作操作执行完成后,拦截程序与第三方程序都在运行状态下时可测试, 实例Demo下载 写这个的目的更多的是记录下自己学习的过程,详细内容可查看下方链接,写的很详细,超赞 参考资料:https://www.cnblogs.com/jlion/p/12897963.html .Net 截取第三方进程/应用程序的函数方法 标签:自己 lse 调用 类库 text help process 客户 使用方法 原文地址:https://www.cnblogs.com/Khan-Sadas/p/12936229.html
public class ProcessService
{
public ProcessResponse GetProcessInfo(ProcessRequest request)
{
return new ProcessResponse()
{
Name = "这是TargetClient 客户端(第三方程序)",
Version = request.Version
};
}
}
//被覆盖后的函数实现
[HookMethod("Jlion.Process.Target.Client.ProcessService", null, null)]
public object GetProcessInfo([RememberType("Jlion.Process.Target.Client.Model.ProcessRequest", false)] object request)
{
var json = JsonConvert.SerializeObject(request);
TextHelper.LogInfo($"json:{json}");
var name = "这是Jlion.Process.HookCore.HookService dll. 改写TargetClient 客户端的GetProcessInfo(obj)后得到的结果";
return new ProcessResponse()
{
Name = name,
Version = "改写的dll 版本"
};
}
//实现一个占位方法,此方法代表被Hook覆盖的原始方法
[OriginalMethod]
public object GetProcessInfo_Original([RememberType("Jlion.Process.Target.Client.Model.ProcessRequest", false)] object request)
{
return null;
}
下一篇:cakephp烤
文章标题:.Net 截取第三方进程/应用程序的函数方法
文章链接:http://soscw.com/index.php/essay/57309.html