软件钩子设置方法及装置制造方法及图纸

技术编号:21453616 阅读:32 留言:0更新日期:2019-06-26 04:40
本发明专利技术公开软件钩子设置方法及装置,其中方法包括如下步骤:在目标API被触发时,创建钩子API2;替换API2的入口地址为原目标API入口地址;替换原目标API入口地址为钩子API1的入口地址;执行钩子API1;随着目标API的释放,钩子API1自动释放。本方案通过目标API的入口地址的替换,使得目标API被触发时,都能运行预置处理程序钩子API1,避免了在钩子还原过程中直接运行目标API的问题,即避免了在还原的时候出现缝隙的问题。

【技术实现步骤摘要】
软件钩子设置方法及装置
本专利技术涉及软件
,尤其涉及软件钩子设置方法及装置。
技术介绍
钩子(Hook),技术是一种用于改变API(ApplicationProgrammingInterface,应用程序编程接口)执行结果的技术,Microsoft自身也在Windows操作系统里面使用了这个技术。其原理为:用自行构建的API入口地址替换目标API的入口地址,以达到应用程序在执行系统API功能前,预先处理自行构建的处理事件,然后还原系统API的入口地址,以实现返回用户真正调用API的功能。现有的API运行原流程如下:应用程序触发——调用原API执行既定功能。而普通钩子流程如下:应用程序触发——调用原API但入口地址是API1的,即调用API1入口地址执行预置的程序,——预置程序执行后——还原原API的入口地址,调用原API既定功能。现有的在钩子API进行处理的过程中,会在新的API和原API入口地址之间不断交替的过程,这会产生无数的时间缝隙。可能发生被钩子挂钩的程序直接执行而绕过钩子API1的问题,即在钩子API1的挂钩过程中,会出现一个缝隙,造成无法勾住该目标API的问题。
技术实现思路
为此,需要提供软件钩子设置方法及装置,解决现有钩子处理过程中存在缝隙的问题。为实现上述目的,专利技术人提供了软件钩子设置方法,包括如下步骤:在目标API被触发时,创建钩子API2;替换API2的入口地址为原目标API入口地址;替换原目标API入口地址为钩子API1的入口地址;执行钩子API1;随着目标API的释放,钩子API1自动释放。进一步地,所述钩子API1为预置钩子程序,钩子API2为空白程序。以及本专利技术还提供无缝钩子设置装置,包括如下模块:临时钩子创建模块:在目标API被触发时,创建钩子API2;第一地址替换模块:替换API2的入口地址为原目标API入口地址;第二地址替换模块:替换原目标API入口地址为钩子API1的入口地址;钩子API1执行模块:执行钩子API1;被钩地址还原模块:随着目标API的释放,钩子API1自动释放。进一步地,所述钩子API1为预置钩子程序,钩子API2为空白程序。区别于现有技术,上述技术方案通过目标API的入口地址的替换,使得目标API被触发时,都能运行预置处理程序钩子API1,避免了在钩子还原过程中直接运行目标API的问题,即避免了在还原的时候出现缝隙的问题。附图说明图1为本专利技术方法一实施例的流程图;图2为本专利技术装置一实施例的结构图。具体实施方式为详细说明技术方案的
技术实现思路
、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。请参阅图1到图2,本实施例提供软件钩子设置方法,包括如下步骤:首先在步骤S101在目标API被触发时,创建钩子API2。目标API就是现有的预置处理程序钩子API1监控的程序,目标API执行前,钩子API1需要先被执行。钩子API2可以看作是一个辅助的钩子API,用来存储目标API的地址。而后在步骤S102替换API2的入口地址为原目标API入口地址以及在步骤S103替换原目标API入口地址为钩子API1的入口地址。这样,只要触发目标API,钩子API1就会被触发并执行。即步骤S104执行钩子API1。钩子API1执行完毕后,钩子API1就会调用并触发钩子API2,而钩子API2存储的是目标API的入口地址,则目标API就会执行。而后在步骤S105随着目标API的释放,钩子API1自动释放。即本专利技术的流程如下:应用程序调用原目标API但被替换成的API1入口地址,即执行API1预置的程序,然后在API1执行完毕后,自行调用API2。但AP2的地址被替换成原API入口地址,即执行既定的功能。这样形成了目标API执行——钩子API1执行——钩子API2执行——目标API执行的过程,而不需要还原的过程,则不会产生时间缝隙,从而避免在钩子挂钩和脱钩过程中产生缝隙的问题。本专利技术中的钩子API2并不需要真正执行什么动作,只需要在钩子API1执行时,其能钩住即可。则简单的钩子API2为空白程序,空白程序即不需要执行任何代码的程序,即程序本身不需要执行任何动作。当然,钩子API2间地址的跳转并不是程序本身执行的动作,而是系统动作。钩子API1只要在执行完毕后能调用API2即可,可以是预先设置的钩子程序或者其他任意的程序,即要在目标API执行前执行的程序即可。以及本专利技术还提供无缝钩子设置装置200,如图2所示,包括如下模块:临时钩子创建模块201:在目标API被触发时,创建钩子API2;第一地址替换模块202:替换API2的入口地址为原目标API入口地址;第二地址替换模块203:替换原目标API入口地址为钩子API1的入口地址;钩子API1执行模块204:执行钩子API1;被钩地址还原模块205:随着目标API的释放,钩子API1自动释放。本专利技术可以避免在钩子还原的时候出现缝隙的问题。正如上面所述,所述钩子API1为预置钩子程序,钩子API2为空白程序。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。本领域内的技术人员应明白,上述各实施例可提供为方法、装置、或计算机程序产品。这些实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。上述各实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,包括但不限于:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。上述各实施例是参照根据实施例所述的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到计算机设备的处理器以产生一个机器,使得通过计算机设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机设备以特定方式工作的计算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生包括指令装本文档来自技高网
...

【技术保护点】
1.软件钩子设置方法,其特征在于,包括如下步骤:在目标API被触发时,创建钩子API2;替换API2的入口地址为原目标API入口地址;替换原目标API入口地址为钩子API1的入口地址;执行钩子API1;随着目标API的释放,钩子API1自动释放。

【技术特征摘要】
1.软件钩子设置方法,其特征在于,包括如下步骤:在目标API被触发时,创建钩子API2;替换API2的入口地址为原目标API入口地址;替换原目标API入口地址为钩子API1的入口地址;执行钩子API1;随着目标API的释放,钩子API1自动释放。2.根据权利要求1所述的软件钩子设置方法,其特征在于:所述钩子API1为预置钩子程序,钩子API2为空白程序。3.无缝钩子设置装置,其特征在于,包括如下模块:临时钩子创建模块:在目标API被触发时,创建钩子API2。4.根据...

【专利技术属性】
技术研发人员:杨怡
申请(专利权)人:镇江飞协软件开发有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1