[发明专利]HOOK方法、装置以及计算机可读存储介质有效
申请号: | 201710785564.4 | 申请日: | 2017-09-04 |
公开(公告)号: | CN107506199B | 公开(公告)日: | 2020-11-20 |
发明(设计)人: | 蔡月 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30 |
代理公司: | 北京律智知识产权代理有限公司 11438 | 代理人: | 阚梓瑄;王卫忠 |
地址: | 100195 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | hook 方法 装置 以及 计算机 可读 存储 介质 | ||
本公开提供一种HOOK方法、装置以及计算机可读存储介质。HOOK方法包括:记录方法交换过程;查找并执行与第一方法名对应的第一函数指针;根据所述方法交换过程查找所述第一函数指针原本对应的第二方法名,判断所述第二方法名是否与所述第一方法名相同;如果所述第二方法名与所述第一方法名不同,查找并执行所述第二方法名对应的第二函数指针。本公开提供的HOOK方法可以避免交换方法时覆盖原有方法,增强了系统的稳健性与开发的条理性。
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种HOOK方法、装置以及计算机可读存储介质。
背景技术
HOOK技术是一种用于改变方法(类中的method)执行结果的技术。在系统开发领域,HOOK技术被广泛应用。
在系统开发中,每个方法名都有对应的函数指针(implementation,IMP),用于实现方法的具体功能。通过修改一个方法名对应的函数指针,可以修改方法的实际执行,进而修改方法。当系统开发人员需要对同一个类的方法进行交换时,只需修改两个方法名对应的函数指针即可实现,这个过程即为HOOK,以下称为方法交换。
然而,在多个团队协作的大项目中,如果多名系统开发人员对同一个类的相同方法进行交换,有可能造成先交换的方法被后交换的方法覆盖的问题,这种覆盖会造成非常严重的功能逻辑紊乱。
因此,需要一种安全稳妥具有条理性的HOOK方法。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种HOOK方法与装置,用于至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或多个问题。
根据本公开实施例的第一方面,提供一种HOOK方法,包括:记录方法交换过程;查找并执行与第一方法名对应的第一函数指针;根据所述方法交换过程查找所述第一函数指针原本对应的第二方法名,判断所述第二方法名是否与所述第一方法名相同;如果所述第二方法名与所述第一方法名不同,查找并执行所述第二方法名对应的第二函数指针。
在本公开的一种示例性实施例中,包括:如果所述第二方法名与所述第一方法名相同,结束流程。
在本公开的一种示例性实施例中,所述记录方法交换过程包括:在修改方法名对应的函数指针时,记录所述函数指针原本对应的方法名。
根据本公开的第二方面,提供一种HOOK装置,包括:交换接口模块,用于记录方法交换过程;函数执行模块,用于查找并执行与第一方法名对应的第一函数指针;原属判断模块,用于根据所述方法交换过程查找所述第一函数指针原本对应的第二方法名,判断所述第二方法名是否与所述第一方法名相同;接续执行模块,用于在所述第二方法名与所述第一方法名不同时查找并执行所述第二方法的函数指针所指向的第二函数。
在本公开的一种示例性实施例中,包括:结束执行模块,用于在所述第二方法名与所述第一方法名相同时结束流程。
在本公开的一种示例性实施例中,所述交换接口模块包括:原属记录单元,用于在修改方法名对应的函数指针时,记录所述函数指针原本对应的方法名。
根据本公开的第三方面,提供一种HOOK装置,包括:存储器;以及耦合到所属存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行如上述任意一项所述的方法。
根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任意一项所述的方法步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710785564.4/2.html,转载请声明来源钻瓜专利网。