【技术实现步骤摘要】
本专利技术涉及数据处理
,尤其涉及一种hook的方法及终端设备。
技术介绍
挂钩(Hook)技术是一种可以将目标进程的某一个函数替换成一个自定义的函数中执行的技术,利用hook技术可以达到修改目标进程某个函数的执行逻辑的功能。例如在应用的安全测试过程中,可采用hook技术来修改函数的返回值和参数,以发现存在安全问题或代码漏洞的函数。具体是:为每个被hook的函数都编写一个自定义hook函数,然后将自定义hook函数编译为动态数据库,再将动态数据库注入到进程中,重启进程后使得注入的动态数据库生效。由于需要通过大量的测试才可能确定存在安全问题或代码漏洞的函数,而每一次测试,都需要修改一次参数,并且修改一次参数后,还需要重新编译为动态数据库,然后将新编译的动态数据库注入到进程中,再重启进程使得新编译的动态数据库生效,如此往复执行,使得最终发现一个存在安全问题或代码漏洞的函数需要花费很长的时间,测试效率低下。
技术实现思路
本专利技术提供了一种hook的方法及终端设备,能够解决现有技术中采用hook技术进行安全测试的测试效率低下的问题。第一方面提供一种hook的方法,所述方法包括:以挂钩hook服务的方式运行注入目标进程中的hook程序;通过所述hook程序监听与所述目标进程匹配的hook事件;通过所述hook程序,根据所述hook事件对所述目标进程中的调用函数执行hook操作。第二方面提供一种用于hook的终端设备,所述终端设备具有实现对应于上述第一方面提供的hook的方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个 ...
【技术保护点】
一种hook的方法,其特征在于,所述方法包括:以挂钩hook服务的方式运行注入目标进程中的hook程序;通过所述hook程序监听与所述目标进程匹配的hook事件;通过所述hook程序,根据所述hook事件对所述目标进程中的调用函数执行hook操作。
【技术特征摘要】
1.一种hook的方法,其特征在于,所述方法包括:以挂钩hook服务的方式运行注入目标进程中的hook程序;通过所述hook程序监听与所述目标进程匹配的hook事件;通过所述hook程序,根据所述hook事件对所述目标进程中的调用函数执行hook操作。2.根据权利要求1所述的方法,其特征在于,所述hook程序中设置待监听的自定义hook函数,自定义hook函数与所述目标进程中的调用函数关联。3.根据权利要求2所述的方法,其特征在于,所述通过所述hook程序监听与所述目标进程匹配的hook事件;通过所述hook程序,根据所述hook事件对所述目标进程中的调用函数执行hook操作,包括:通过所述hook程序监听到与所述目标进程中的调用函数匹配的hook事件后,根据所述hook事件确定目标自定义hook函数;确定与所述目标自定义hook函数关联的目标被hook函数;通过所述hook程序,根据所述hook事件在所述目标进程中对所述目标被hook函数执行hook操作。4.根据权利要求3所述的方法,其特征在于,所述hook事件是指针对所述目标进程中的调用函数的hook操作,所述hook操作包括更新所述目标被hook函数的运行逻辑。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:通过所述hook程序实时获取针对所述目标被hook函数更新的运行逻辑;通过所述hook程序,根据更新的运行逻辑在所述目标进程中对所述目标被hook函数执行hook操作。6.根据权利要求5所述的方法,其特征在于,所述通过所述hook程序监听到与所述调用函数匹配的hook事件后,确定与所述调用函数关联的目标被hook函数,包括:通过所述hook程序监听到外部数据变化后,根据变化的外部数据定位到与变化的外部数据对应的目标自定义hook函数,所述外部数据是指在所述目标进程之外的数据;确定与所述目标自定义hook函数关联的所述目标被hook函数。7.根据权利要求2-6任一所述的方法,其特征在于,所述方法还包括:设置多种类型的自定义hook函数;将参数个数相同的被hook函数关联到相同类型的自定义hook函数。8.根据权利要求7所述的方法,其特征在于,所述根据变化的外部数据定位到与变化的外部数据对应的目标自定义hook函数,确定与所述目标自定义hook函数关联的所述目标被hook函数,包括:根据所述变化的外部数据定位到与所述变化的外部数据对应的第一类型的自定义hook函数;从与所述第一类型的自定义hook函数关联的被hook函数中,确定与所述变化的外部数据对应的所述目标被hook函数。9.根据权利要求8所述的方法,其特征在于,所述从与所述第一类型的自定义hook函数关联的被hook函数中,确定与所述变化的外部数据对应的所述目标被hook函数,包括:计算与所述第一类型的自定义hook函数关联的各被hook函数的函数指针;根据所述各被hook函数的函数指针确定与所述变化的外部数据对应的所述目标被hook函数。10.根据权利要求9所述的方法,其特征在于,所述计算与所述第一类型的自定义hook函数关联的各被hook函数的函数指针,根据所述各被hook函数的函数指针确定与所述变化的外部数据对应的所述目标被hook函数,包括:获取与所述第一类型的自定义hook函数关联的各被hook函数的返回地址;根据被hook函数的返回地址确定调用被hook函数的指令集;根据被hook函数的返回地址和调用被hook函数的指令集,确定调用被hook函数的汇编指令;根据调用被hook函数的汇编指令得到当前被hook函数的目标函数指针;确定所述目标函数指针指向的所述目标被hook函数。11.根据权利要求10所述的方法,其特征在于,在确定所述目标函数指针指向的所述目标被hook函数之后,所述方法还包括:获取控制所述目标被hook函数执行的控制数据;根据所述控制数据控制所述目标被hook函数的执行操作,所述执行操作包括修改所述目标被hook函数的运行逻辑,所述运行逻辑包括调用信息,所述调用信息包括参数和/或返回值。12.根据权利要求10或11所述的方法,其特征在于,所述根据调用被hook函数的汇编指令得到当前被hook函数的目标函数指针,确定所述目标函数指针指向的所述目标被hook函数,包括:根据所述汇编指令的机器码确定所述被hook函数的调用方式为普通函数调用方式时,将所述机器码的低a位数据作为所述指令集跳转到所述机器码的偏移值,a为正整数;根据所述偏移值机器码的链接位和机器码的条件域得到被调用的所述目标自定义ho...
【专利技术属性】
技术研发人员:黄柳优,李源纯,姜润知,王鹏,魏学峰,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。