首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

全局hook自动修复方法、装置、设备及存储介质 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:平安科技(深圳)有限公司

摘要:本发明公开了基于安全监控领域的全局hook自动修复方法、装置、设备及存储介质,用于自动屏蔽引起全局崩溃的类,避免了对代码的修改,提高了修复效率。本发明方法包括:定义一个循环,所述循环用于对所有的类进行hook;定义一个变量函数,所述变量函数用于记录待hook的类的名称;根据所述循环和所述变量函数判断所述待hook的类的名称是否在过滤名单中;若所述待hook的类的名称在所述过滤名单中,则屏蔽与所述待hook的类的名称对应的崩溃类,所述崩溃类为引起崩溃或异常的类。

主权项:1.一种全局hook自动修复方法,其特征在于,包括:定义一个循环,所述循环用于对所有的类进行hook;所述定义一个循环,所述循环用于对所有的类进行hook包括:获取当前运行的目标应用程序的路径;获取所述目标应用程序的各个类的名称以及数量;根据所述各个类的名称以及数量定义一个for循环,所述for循环用于按照所述目标应用程序的路径对各个类进行全局hook;定义一个变量函数,所述变量函数用于记录待hook的类的名称;根据所述循环和所述变量函数判断所述待hook的类的名称是否在过滤名单中;若所述待hook的类的名称在所述过滤名单中,则屏蔽与所述待hook的类的名称对应的崩溃类,所述崩溃类为引起崩溃或异常的类;若所述待hook的类的名称不在所述过滤名单中,则调用所述循环对所述待hook的类进行hook;所述若所述待hook的类的名称不在所述过滤名单中,则调用所述循环对所述待hook的类进行hook,包括:获取所述待hook的类对应的全部方法;从所述全部方法中筛选出不符合预设条件的目标方法,所述预设条件为方法的属性为系统方法或方法带有不处理的标记;修改所述目标方法的真实地址,得到虚拟地址;基于所述虚拟地址触发面向对象的C语言消息转发机制;添加hook机制代码对所述目标方法进行hook,调用forwardInvocation方法转发目标消息,所述目标消息包括所述目标方法和所述目标方法的真实地址。

全文数据:全局hook自动修复方法、装置、设备及存储介质技术领域本发明涉及操作系统安全监控领域,尤其涉及全局hook自动修复方法、装置、设备及存储介质。背景技术随着手机行业的快速发展,手机系统也相应的发展,目前主流的系统有安卓系统和IOS系统。对于IOS系统而言,IOS项目如果需要测试代码覆盖率,一个比较好的办法就是hook所有的类,然后在所有类的所有方法中添加统计代码,但是因为各个项目的类的种类复杂和数量庞大,有些类的写法会导致一hook就引起崩溃。目前比较常规的做法是通过人工进行手动排除,需要人工修改代码进行屏蔽引起崩溃的相关的类,修复效率低。发明内容本发明实施例提供了一种全局hook自动修复方法、装置、设备及存储介质,用于自动屏蔽引起全局崩溃的类,避免了对代码的修改,提高了修复效率。本发明实施例的第一方面提供一种基于数据分析的全局hook自动修复方法,包括:定义一个循环,所述循环用于对所有的类进行hook;定义一个变量函数,所述变量函数用于记录待hook的类的名称;根据所述循环和所述变量函数判断所述待hook的类的名称是否在过滤名单中;若所述待hook的类的名称在所述过滤名单中,则屏蔽与所述待hook的类的名称对应的崩溃类,所述崩溃类为引起崩溃或异常的类。可选的,在本发明实施例第一方面的第一种实现方式中,所述根据所述循环和所述变量函数判断所述待hook的类的名称是否在过滤名单中之后,所述方法还包括:若所述待hook的类的名称不在所述过滤名单中,则调用所述循环对所述待hook的类进行hook。可选的,在本发明实施例第一方面的第二种实现方式中,所述屏蔽与所述待hook的类的名称对应的崩溃类,所述崩溃类为引起崩溃或异常的类之后,所述方法还包括:监听异常函数,所述异常函数用于监控并记录所述崩溃类对应的数组;根据所述崩溃类对应的数组确定所述异常函数中的崩溃类的名称;将所述崩溃类的名称导入到所述过滤名单。可选的,在本发明实施例第一方面的第三种实现方式中,所述定义一个循环,所述循环用于对所有的类进行hook包括:获取当前运行的目标应用程序的路径;获取所述目标应用程序的各个类的名称以及数量;根据所述各个类的名称以及数量定义一个for循环,所述for循环用于按照所述目标应用程序的路径对各个类进行全局hook。可选的,在本发明实施例第一方面的第四种实现方式中,所述定义一个变量函数,所述变量函数用于记录待hook的类的名称包括:获取预置的key值;根据所述预置的key值调用存储于系统存储器或者预置数据库中的崩溃类的数组;根据所述崩溃类的数组定义一个变量函数,所述变量函数用于记录待hook的类的名称。可选的,在本发明实施例第一方面的第五种实现方式中,所述根据所述循环和所述变量函数判断所述待hook的类的名称是否在过滤名单中包括:确定所述循环中调用的数组;在所述调用的数组中确定所述变量函数;确定所述变量函数中待hook的类的名称,并判断所述待hook的类的名称是否在过滤名单中。可选的,在本发明实施例第一方面的第六种实现方式中,所述方法还包括:若所述过滤名单中崩溃类的数量大于阈值,则对引起崩溃的类进行整合;确定所述崩溃类中相同类型的崩溃类的前缀;将具有所述前缀的崩溃类进行批量屏蔽。本发明实施例的第二方面提供了一种全局hook自动修复装置,包括:第一定义单元,用于定义一个循环,所述循环用于对所有的类进行hook;第二定义单元,用于定义一个变量函数,所述变量函数用于记录待hook的类的名称;判断单元,用于根据所述循环和所述变量函数判断所述待hook的类的名称是否在过滤名单中;第一屏蔽单元,若所述待hook的类的名称在所述过滤名单中,则用于屏蔽与所述待hook的类的名称对应的崩溃类,所述崩溃类为引起崩溃或异常的类。可选的,在本发明实施例第二方面的第一种实现方式中,全局hook自动修复装置还包括:调用单元,若所述待hook的类的名称不在所述过滤名单中,则用于调用所述循环对所述待hook的类进行hook。可选的,在本发明实施例第二方面的第二种实现方式中,全局hook自动修复装置还包括:监听单元,用于监听异常函数,所述异常函数用于监控并记录所述崩溃类对应的数组;第一确定单元,用于根据所述崩溃类对应的数组确定所述异常函数中的崩溃类的名称;导入单元,用于将所述崩溃类的名称导入到所述过滤名单。可选的,在本发明实施例第二方面的第三种实现方式中,第一定义单元具体用于:获取当前运行的目标应用程序的路径;获取所述目标应用程序的各个类的名称以及数量;根据所述各个类的名称以及数量定义一个for循环,所述for循环用于按照所述目标应用程序的路径对各个类进行全局hook。可选的,在本发明实施例第二方面的第四种实现方式中,第二定义单元具体用于:获取预置的key值;根据所述预置的key值调用存储于系统存储器或者预置数据库中的崩溃类的数组;根据所述崩溃类的数组定义一个变量函数,所述变量函数用于记录待hook的类的名称。可选的,在本发明实施例第二方面的第五种实现方式中,判断单元具体用于:确定所述循环中调用的数组;在所述调用的数组中确定所述变量函数;确定所述变量函数中待hook的类的名称,并判断所述待hook的类的名称是否在过滤名单中。可选的,在本发明实施例第二方面的第六种实现方式中,全局hook自动修复装置还包括:整合单元,若所述过滤名单中崩溃类的数量大于阈值,则用于对引起崩溃的类进行整合;第二确定单元,用于确定所述崩溃类中相同类型的崩溃类的前缀;第二屏蔽单元,用于将具有所述前缀的崩溃类进行批量屏蔽。本发明实施例的第三方面提供了一种全局hook自动修复设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一实施方式所述的全局hook自动修复方法。本发明实施例的第四方面提供了一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行上述任一实施方式所述的全局hook自动修复方法的步骤。本发明实施例提供的技术方案中,定义一个循环,该循环用于对所有的类进行hook;定义一个变量函数,该变量函数用于记录待hook的类的名称;根据循环和变量函数判断待hook的类的名称是否在过滤名单中;若待hook的类的名称在过滤名单中,则屏蔽与待hook的类的名称对应的崩溃类,该崩溃类为引起崩溃或异常的类。本发明实施例,自动屏蔽引起全局崩溃的类,避免了对代码的修改,提高了修复效率。附图说明图1为本发明实施例中全局hook自动修复方法的一个实施例示意图;图2为本发明实施例中全局hook自动修复方法的另一个实施例示意图;图3为本发明实施例中全局hook自动修复装置的一个实施例示意图;图4为本发明实施例中全局hook自动修复装置的另一个实施例示意图;图5为本发明实施例中全局hook自动修复设备的一个实施例示意图。具体实施方式本发明实施例提供了一种全局hook自动修复方法、装置、设备及存储介质,用于自动屏蔽引起全局崩溃的类,避免了对代码的修改,提高了修复效率。为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例进行描述。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等如果存在是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。请参阅图1,本发明实施例提供的一种全局hook自动修复方法的流程图,具体包括:101、定义一个循环,该循环用于对所有的类进行hook。服务器定义一个循环,该循环用于对所有的类进行hook。具体的,服务器定义一个for循环,通过该for循环对系统或应用程序的所有类进行hook。例如,服务器获取当前运行的目标应用程序的路径;服务器获取目标应用程序的各个类的名称以及数量;服务器根据各个类的名称以及数量定义一个for循环,for循环用于按照目标应用程序的路径对各个类进行全局hook。例如,当需要对一个应用程序application,APP进行hook时,首先获取当前运行的APP的路径,如,dladdr&_mh_execute_header,&info;其次获取当前运行的APP的各个类的名称,及各个类的数量。例如,classes=objc_copyClassNamesForImageinfo.dli_fname,&count;其中,二维数组classes存放有所有类的名称,count存储有所有的类的数量;最后根据各个类的名称以及数量定义一个for循环。例如,将数组将classes数组中的类一个一个取出来,for循环开始。102、定义一个变量函数,该变量函数用于记录待hook的类的名称。服务器定义一个变量函数,该变量函数用于记录待hook的类的名称。具体的,服务器先获取预置的key值;然后根据预置的key值调用崩溃类的数组,崩溃类的数组存储于系统存储器或者预置数据库中;再根据崩溃类的数组定义一个变量函数,其中,该变量函数用于记录待hook的类的名称。例如,服务器定义的一个字符串,比如就叫PA_HookCrashListKey,然后使用系统自带的存储器或者预先写好的数据库代码,进行存储和调用。崩溃的类数组就是,通过key从数据库中获取的对象。103、根据循环和变量函数判断待hook的类的名称是否在过滤名单中。服务器根据循环和变量函数判断待hook的类的名称是否在过滤名单中。具体的,服务器确定循环中调用的数组;服务器在调用的数组中确定变量函数;服务器确定变量函数中待hook的类的名称,并判断待hook的类的名称是否在过滤名单中。若待hook的类的名称在过滤名单中,则服务器屏蔽与待hook的类的名称对应的崩溃类。若待hook的类的名称不在过滤名单中,则服务器调用循环对待hook的类进行hook。具体的,服务器通过for循环对待hook的类进行hook,其中,钩子hook是Windows消息处理机制的一个平台,应用程序APP可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出后,且在没有到达目的窗口前,钩子程序就先捕获该消息,即钩子函数先得到控制权。这时钩子函数即可以加工处理改变该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。需要说明的是,hook的顺序是随机的,取决于系统方法返回给我的所有类的数组顺序,我再从数组中一个一个拿出来进行hook。而hook标准为:获取类的所有方法,过滤一些系统自带的方法和需要过滤的方法,需要过滤的方法取决于项目和业务,是工作人员预先配置的,而对剩下的方法,将方法地址更改,强行触发面向对象的Cobjective-C,OC语言的消息转发机制,然后再重写消息转发时调用的forwardInvocation方法,在该方法里面将地址换回去,但是在换回去之前,还可以写一些hook代码,从而达到hook的目的。104、若待hook的类的名称在过滤名单中,则屏蔽与待hook的类的名称对应的崩溃类,该崩溃类为引起崩溃或异常的类。若待hook的类的名称在过滤名单中,则服务器屏蔽与待hook的类的名称对应的崩溃类,该崩溃类为引起崩溃或异常的类。可以理解的是,系统通过自带的异常函数进行监控,在每次崩溃之前,将数组保存到过滤名单范围。在下一次启动时,过滤名单会增加一个崩溃类的名称,并用来作为判断标准。本发明实施例,定义一个循环,该循环用于对所有的类进行hook;定义一个变量函数,该变量函数用于记录待hook的类的名称;根据循环和变量函数判断待hook的类的名称是否在过滤名单中;若待hook的类的名称在过滤名单中,则屏蔽与待hook的类的名称对应的崩溃类,该崩溃类为引起崩溃或异常的类。可以自动屏蔽引起全局崩溃的类,避免了对系统代码的修改,提高了修复效率。请参阅图2,本发明实施例中全局hook自动修复方法的另一个实施例包括:201、定义一个循环,该循环用于对所有的类进行hook。服务器定义一个循环,该循环用于对所有的类进行hook。具体的,服务器定义一个for循环,通过该for循环对系统或应用程序的所有类进行hook。例如,服务器获取当前运行的目标应用程序的路径;服务器获取目标应用程序的各个类的名称以及数量;服务器根据各个类的名称以及数量定义一个for循环,for循环用于按照目标应用程序的路径对各个类进行全局hook。例如,当需要对一个应用程序application,APP进行hook时,首先获取当前运行的APP的路径,如,dladdr&_mh_execute_header,&info;其次获取当前运行的APP的各个类的名称,及各个类的数量。例如,classes=objc_copyClassNamesForImageinfo.dli_fname,&count;其中,二维数组classes存放有所有类的名称,count存储有所有的类的数量;最后根据各个类的名称以及数量定义一个for循环。例如,将数组将classes数组中的类一个一个取出来,for循环开始。202、定义一个变量函数,该变量函数用于记录待hook的类的名称。服务器定义一个变量函数,该变量函数用于记录待hook的类的名称。具体的,服务器先获取预置的key值;然后根据预置的key值调用崩溃类的数组,崩溃类的数组存储于系统存储器或者预置数据库中;再根据崩溃类的数组定义一个变量函数,其中,该变量函数用于记录待hook的类的名称。例如,服务器定义的一个字符串,比如就叫PA_HookCrashListKey,然后使用系统自带的存储器或者预先写好的数据库代码,进行存储和调用。崩溃的类数组就是,通过key从数据库中获取的对象。203、根据循环和变量函数判断待hook的类的名称是否在过滤名单中。服务器根据循环和变量函数判断待hook的类的名称是否在过滤名单中。具体的,服务器确定循环中调用的数组;服务器在调用的数组中确定变量函数;服务器确定变量函数中待hook的类的名称,并判断待hook的类的名称是否在过滤名单中。若待hook的类的名称在过滤名单中,则服务器屏蔽与待hook的类的名称对应的崩溃类。若待hook的类的名称不在过滤名单中,则服务器调用循环对待hook的类进行hook。具体的,服务器通过for循环对待hook的类进行hook,其中,钩子hook是Windows消息处理机制的一个平台,应用程序APP可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出后,且在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理改变该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。需要说明的是,hook的顺序是随机的,取决于系统方法返回给我的所有类的数组顺序,我再从数组中一个一个拿出来进行hook。而hook标准为:获取类的所有方法,过滤一些系统自带的方法和需要过滤的方法,需要过滤的方法取决于项目和业务,是工作人员预先配置的,而对剩下的方法,将方法地址更改,强行触发面向OC语言的消息转发机制,然后再重写消息转发时调用的forwardInvocation方法,在该方法里面将地址换回去,但是在换回去之前,还可以写一些hook代码,从而达到hook的目的。204、若待hook的类的名称在过滤名单中,则屏蔽与待hook的类的名称对应的崩溃类,该崩溃类为引起崩溃或异常的类。若待hook的类的名称在过滤名单中,则服务器屏蔽与待hook的类的名称对应的崩溃类,该崩溃类为引起崩溃或异常的类。可以理解的是,系统通过自带的异常函数进行监控,在每次崩溃之前,将数组保存到过滤名单范围。在下一次启动时,过滤名单会增加一个崩溃类的名称,并将增加的崩溃类的名称作为判断标准。205、监听异常函数,该异常函数用于监控并记录崩溃类对应的数组。服务器对系统中的异常函数进行监听,其中,该异常函数用于监控并记录崩溃类对应的数组。数组存储有与各个类对应的具体数据。例如,若变量函数为a,因为数组中的a,是在开始hook之前存进去的,即在数据中做一个标记,然后在hook代码的方法调用之后,把a删掉。反过来,如果hook代码崩溃了,后面的代码没机会运行,这个数组中的a就不会被删掉,下次hook的时候,发现这个a在崩溃数组中,我们就不再hook了,避免陷入循环崩溃。206、根据崩溃类对应的数组确定异常函数中的崩溃类的名称。服务器根据崩溃类对应的数组确定异常函数中的崩溃类的名称。例如,服务器根据崩溃类对应的数组在异常函数NSSetUncaughtExceptionHandler中确定发生崩溃的崩溃类的名称。207、将崩溃类的名称导入到过滤名单。服务器将崩溃类的名称导入到过滤名单,该过滤名单中包括会引起系统崩溃或异常的类的名称。可选的,若过滤名单中崩溃类的数量大于阈值,则服务器对引起崩溃的类进行整合;服务器确定崩溃类中相同类型的崩溃类的前缀;服务器将具有前缀的崩溃类进行批量屏蔽。本发明实施例,定义一个循环,该循环用于对所有的类进行hook;定义一个变量函数,该变量函数用于记录待hook的类的名称;根据循环和变量函数判断待hook的类的名称是否在过滤名单中;若待hook的类的名称在过滤名单中,则屏蔽与待hook的类的名称对应的崩溃类,该崩溃类为引起崩溃或异常的类;监听异常函数,该异常函数用于监控并记录崩溃类对应的数组。本发明实施例中,系统每崩溃一次,崩溃数组中就会多一个需要屏蔽的类,下次启动hook代码的时候,按照前面的策略,对这个类不执行hook,这样崩溃过的类就不会hook了,也就不会导致系统崩溃了,可以自动屏蔽引起全局崩溃的类,避免了对系统代码的修改,提高了修复效率。可选的,在上述图2对应的实施例的基础上,本发明实施例提供的全局hook自动修复方法的可选实施例中,还可以包括:判断循环中变量函数是否为空;若变量函数不为空,则将崩溃类的数组中与变量函数对应的类删除。具体的,服务器判断循环中变量函数是否为空。若变量函数不为空,则服务器将崩溃类的数组中与变量函数对应的类删除。若变量函数为空,则服务器忽略该变量函数。可选的,在上述图2对应的实施例的基础上,本发明实施例提供的全局hook自动修复方法的可选实施例中,方法还包括:若所述待hook的类的名称不在所述过滤名单中,则通过循环对待hook的类进行hook。本发明实施例,定义一个循环,该循环用于对所有的类进行hook;定义一个变量函数,该变量函数用于记录待hook的类的名称;根据循环和变量函数判断待hook的类的名称是否在过滤名单中;若待hook的类的名称在过滤名单中,则屏蔽与待hook的类的名称对应的崩溃类,该崩溃类为引起崩溃或异常的类;监听异常函数,该异常函数用于监控并记录崩溃类对应的数组。可以自动屏蔽引起全局崩溃的类,避免了对系统代码的修改,提高了修复效率。上面对本发明实施例中全局hook自动修复方法进行了描述,下面对本发明实施例中全局hook自动修复装置进行描述,请参阅图3,本发明实施例中全局hook自动修复装置的一个实施例包括:第一定义单元301,用于定义一个循环,所述循环用于对所有的类进行hook;第二定义单元302,用于定义一个变量函数,所述变量函数用于记录待hook的类的名称;判断单元303,用于根据所述循环和所述变量函数判断所述待hook的类的名称是否在过滤名单中;第一屏蔽单元304,若所述待hook的类的名称在所述过滤名单中,则用于屏蔽与所述待hook的类的名称对应的崩溃类,所述崩溃类为引起崩溃或异常的类。本发明实施例,定义一个循环,该循环用于对所有的类进行hook;定义一个变量函数,该变量函数用于记录待hook的类的名称;根据循环和变量函数判断待hook的类的名称是否在过滤名单中;若待hook的类的名称在过滤名单中,则屏蔽与待hook的类的名称对应的崩溃类,该崩溃类为引起崩溃或异常的类。可以自动屏蔽引起全局崩溃的类,避免了对系统代码的修改,提高了修复效率。请参阅图4,本发明实施例中全局hook自动修复装置的一个实施例包括:第一定义单元301,用于定义一个循环,所述循环用于对所有的类进行hook;第二定义单元302,用于定义一个变量函数,所述变量函数用于记录待hook的类的名称;判断单元303,用于根据所述循环和所述变量函数判断所述待hook的类的名称是否在过滤名单中;第一屏蔽单元304,若所述待hook的类的名称在所述过滤名单中,则用于屏蔽与所述待hook的类的名称对应的崩溃类,所述崩溃类为引起崩溃或异常的类。可选的,全局hook自动修复装置还包括:调用单元305,若所述待hook的类的名称不在所述过滤名单中,则用于通过所述循环对所述待hook的类进行hook。可选的,全局hook自动修复装置还包括:监听单元306,用于监听异常函数,所述异常函数用于监控并记录所述崩溃类对应的数组;第一确定单元307,用于根据所述崩溃类对应的数组确定所述异常函数中的崩溃类的名称;导入单元308,用于将所述崩溃类的名称导入到所述过滤名单。可选的,第一定义单元301具体用于:获取当前运行的目标应用程序的路径;获取所述目标应用程序的各个类的名称以及数量;根据所述各个类的名称以及数量定义一个for循环,所述for循环用于按照所述目标应用程序的路径对各个类进行全局hook。可选的,第二定义单元302具体用于:获取预置的key值;根据所述预置的key值调用存储于系统存储器或者预置数据库中的崩溃类的数组;根据所述崩溃类的数组定义一个变量函数,所述变量函数用于记录待hook的类的名称。可选的,判断单元303具体用于:确定所述循环中调用的数组;在所述调用的数组中确定所述变量函数;确定所述变量函数中待hook的类的名称,并判断所述待hook的类的名称是否在过滤名单中。可选的,全局hook自动修复装置还包括:整合单元309,若所述过滤名单中崩溃类的数量大于阈值,则用于对引起崩溃的类进行整合;第二确定单元310,用于确定所述崩溃类中相同类型的崩溃类的前缀;第二屏蔽单元311,用于将具有所述前缀的崩溃类进行批量屏蔽。本发明实施例,定义一个循环,该循环用于对所有的类进行hook;定义一个变量函数,该变量函数用于记录待hook的类的名称;根据循环和变量函数判断待hook的类的名称是否在过滤名单中;若待hook的类的名称在过滤名单中,则屏蔽与待hook的类的名称对应的崩溃类,该崩溃类为引起崩溃或异常的类;监听异常函数,该异常函数用于监控并记录崩溃类对应的数组。可以自动屏蔽引起全局崩溃的类,避免了对系统代码的修改,提高了修复效率。上面图3至图4从模块化功能实体的角度对本发明实施例中的全局hook自动修复装置进行详细描述,下面从硬件处理的角度对本发明实施例中全局hook自动修复设备进行详细描述。图5是本发明实施例提供的一种全局hook自动修复设备的结构示意图,该全局hook自动修复设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器centralprocessingunits,CPU501例如,一个或一个以上处理器和存储器509,一个或一个以上存储应用程序507或数据506的存储介质508例如一个或一个以上海量存储设备。其中,存储器509和存储介质508可以是短暂存储或持久存储。存储在存储介质508的程序可以包括一个或一个以上模块图示没标出,每个模块可以包括对全局hook自动修复设备中的一系列指令操作。更进一步地,处理器501可以设置为与存储介质508通信,在全局hook自动修复设备500上执行存储介质508中的一系列指令操作。全局hook自动修复设备500还可以包括一个或一个以上电源502,一个或一个以上有线或无线网络接口503,一个或一个以上输入输出接口504,和或,一个或一个以上操作系统505,例如WindowsServe,MacOSX,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图5中示出的全局hook自动修复设备结构并不构成对全局hook自动修复设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。处理器501可以执行上述实施例中第一定义单元301、第二定义单元302、判断单元303、第一屏蔽单元304、调用单元305、监听单元306、第一确定单元307和导入单元308中任一单元的功能。处理器501还可以执行上述实施例中整合单元309、第二确定单元310和第二屏蔽单元311中任一单元的功能。下面结合图5对全局hook自动修复设备的各个构成部件进行具体的介绍:处理器501是全局hook自动修复设备的控制中心,可以按照设置的全局hook自动修复方法进行处理。处理器501利用各种接口和线路连接整个全局hook自动修复设备的各个部分,通过运行或执行存储在存储器509内的软件程序和或模块,以及调用存储在存储器509内的数据,执行全局hook自动修复设备的各种功能和处理数据,从而实现崩溃类的屏蔽。存储介质508和存储器509都是存储数据的载体,本发明实施例中,存储介质508可以是指储存容量较小,但速度快的内存储器,而存储器509可以是储存容量大,但储存速度慢的外存储器。存储器509可用于存储软件程序以及模块,处理器501通过运行存储在存储器509的软件程序以及模块,从而执行全局hook自动修复设备500的各种功能应用以及数据处理。存储器509可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序比如监听异常函数等等;存储数据区可存储根据全局hook自动修复设备的使用所创建的数据比如定义一个变量函数等等。此外,存储器509可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。在本发明实施例中提供的全局hook自动修复方法程序和接收到的数据流存储在存储器中,当需要使用时,处理器501从存储器509中调用。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线例如同轴电缆、光纤、双绞线或无线例如红外、无线、微波等方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带、光介质例如,光盘、或者半导体介质例如固态硬盘SolidStateDisk,SSD等。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备可以是个人计算机,服务器,或者网络设备等执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器read-onlymemory,ROM、随机存取存储器randomaccessmemory,RAM、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

权利要求:1.一种全局hook自动修复方法,其特征在于,包括:定义一个循环,所述循环用于对所有的类进行hook;定义一个变量函数,所述变量函数用于记录待hook的类的名称;根据所述循环和所述变量函数判断所述待hook的类的名称是否在过滤名单中;若所述待hook的类的名称在所述过滤名单中,则屏蔽与所述待hook的类的名称对应的崩溃类,所述崩溃类为引起崩溃或异常的类。2.根据权利要求1所述的全局hook自动修复方法,其特征在于,所述根据所述循环和所述变量函数判断所述待hook的类的名称是否在过滤名单中之后,所述方法还包括:若所述待hook的类的名称不在所述过滤名单中,则调用所述循环对所述待hook的类进行hook。3.根据权利要求2所述的全局hook自动修复方法,其特征在于,所述屏蔽与所述待hook的类的名称对应的崩溃类,所述崩溃类为引起崩溃或异常的类之后,所述方法还包括:监听异常函数,所述异常函数用于监控并记录所述崩溃类对应的数组;根据所述崩溃类对应的数组确定所述异常函数中的崩溃类的名称;将所述崩溃类的名称导入到所述过滤名单。4.根据权利要求1所述的全局hook自动修复方法,其特征在于,所述定义一个循环,所述循环用于对所有的类进行hook包括:获取当前运行的目标应用程序的路径;获取所述目标应用程序的各个类的名称以及数量;根据所述各个类的名称以及数量定义一个for循环,所述for循环用于按照所述目标应用程序的路径对各个类进行全局hook。5.根据权利要求1所述的全局hook自动修复方法,其特征在于,所述定义一个变量函数,所述变量函数用于记录待hook的类的名称包括:获取预置的key值;根据所述预置的key值调用存储于系统存储器或者预置数据库中的崩溃类的数组;根据所述崩溃类的数组定义一个变量函数,所述变量函数用于记录待hook的类的名称。6.根据权利要求1所述的全局hook自动修复方法,其特征在于,所述根据所述循环和所述变量函数判断所述待hook的类的名称是否在过滤名单中包括:确定所述循环中调用的数组;在所述调用的数组中确定所述变量函数;确定所述变量函数中待hook的类的名称,并判断所述待hook的类的名称是否在过滤名单中。7.根据权利要求1-6中任一所述的全局hook自动修复方法,其特征在于,所述方法还包括:若所述过滤名单中崩溃类的数量大于阈值,则对引起崩溃的类进行整合;确定所述崩溃类中相同类型的崩溃类的前缀;将具有所述前缀的崩溃类进行批量屏蔽。8.一种全局hook自动修复装置,其特征在于,包括:第一定义单元,用于定义一个循环,所述循环用于对所有的类进行hook;第二定义单元,用于定义一个变量函数,所述变量函数用于记录待hook的类的名称;判断单元,用于根据所述循环和所述变量函数判断所述待hook的类的名称是否在过滤名单中;第一屏蔽单元,若所述待hook的类的名称在所述过滤名单中,则用于屏蔽与所述待hook的类的名称对应的崩溃类,所述崩溃类为引起崩溃或异常的类。9.一种全局hook自动修复设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7中任意一项所述的全局hook自动修复方法。10.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1-7中任意一项所述的全局hook自动修复方法。

百度查询: 平安科技(深圳)有限公司 全局hook自动修复方法、装置、设备及存储介质

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。