什么是 Hook 技术

什么是 Hook 技术一、什么是Hook技术  Hook技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。  要实现钩子函数,有两个步骤:  1.利用系统内部提供的接口,通过实现该接口,然后注入进系统(特定场景下使用)  2.动态代理(使用所有场景)二、Hook技术实现的步骤  Hook技术实现的步骤也分为两步  1.找到ho

大家好,又见面了,我是你们的朋友全栈君。

一、什么是 Hook 技术
  Hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。
  要实现钩子函数,有两个步骤:
  1. 利用系统内部提供的接口,通过实现该接口,然后注入进系统(特定场景下使用)
  2.动态代理(使用所有场景)

二、Hook 技术实现的步骤
  Hook 技术实现的步骤也分为两步
  1.找到 hook 点(Java 层),该 hook 点必须满足以下的条件:需要 hook 的方法,所属的对象必须是静态的,因为我们是通过反射来获取对象的,我们获取的是系统的对象,所以不能够 new 一个新的对象,必须用系统创建的那个对象,所以只有静态的才能保证和系统的对象一致。
  2.将 hook 方法放到系统之外执行(放入我们自己的逻辑)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146201.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux find命令详解_linux中find命令用法

    linux find命令详解_linux中find命令用法find命令格式:findpath-option[-print][-exec-okcommand]{}\;find命令的参数:path:要查找的目录路径。~表示$HO

    2022年7月29日
    8
  • 关于ContentPlaceHolder与Content控件

    关于ContentPlaceHolder与Content控件定义:ContentPlaceHolder控件:在ASP.NET母版页中定义内容区域。Content控件:保存文本、标记和服务器控件以呈现给母版页中的ContentPlaceHolder控件。两者关系:ContentPlaceHolder控件在母版页中定义相对内容区域,并呈现在内容页中找到的相关的Content控件的所有文本、标记和服务器控件。

    2022年7月13日
    18
  • 漫谈大数据 – 基于SparkSQL的离线数仓「建议收藏」

    漫谈大数据 – 基于SparkSQL的离线数仓「建议收藏」数据仓库,英文名称为DataWarehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。

    2025年7月25日
    2
  • allure 命令行参数说明

    allure 命令行参数说明一、查看allure命令的帮助文档allure-hallure命令的语法格式allure[options][command][commandoptions]options列表Options:–help命令行帮助文档-q,–quiet切换至安静模式Default:false-v,–verbose切换至冗长模式Default:false–ve…

    2022年7月26日
    22
  • mysql autoconf_autoconf手册(一)

    mysql autoconf_autoconf手册(一)AutoconfCreatingAutomaticConfigurationScriptsEdition2.13,forAutoconfversion2.13December1998byDavidMacKenzieandBenElliston—————————————————————–…

    2022年6月4日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号