动态hook方法、装置、电子设备及存储介质制造方法及图纸

技术编号:39324875 阅读:12 留言:0更新日期:2023-11-12 16:03
本申请实施例公开了一种动态hook方法、装置、电子设备及存储介质。所述方法包括:响应于客户端发送的数据请求,通过目标应用中设置的保护程序获取对应的class文件,所述class文件基于所述数据请求对应的hook点处的处理代码逻辑生成;通过所述保护程序对所述class文件进行实例化,得到所述class文件对应的类的实例;基于所述实例,对所述hook点处的目标方法执行hook操作。通过上述方法,通过对外部编译的class文件进行实例化后,以对hook点处的目标方法进行hook操作,可以轻易实现对处理代码逻辑的动态更新,不需要重启目标应用,降低了操作成本。操作成本。操作成本。

【技术实现步骤摘要】
动态hook方法、装置、电子设备及存储介质


[0001]本申请属于计算机
,具体涉及一种动态hook方法、装置、电子设备及存储介质。

技术介绍

[0002]挂钩(Hook)技术是一种可以将目标进程的某一个函数替换成一个自定义的函数的技术,利用hook技术可以达到修改目标进程某个函数的执行逻辑的功能。例如在应用的安全测试过程中,可采用hook技术来修改函数的返回值和参数,以发现存在安全问题或代码漏洞的函数。相关的动态hook方法,在对hook点进行hook时,需要重启进程,使得操作成本较大。

技术实现思路

[0003]鉴于上述问题,本申请提出了一种动态hook方法、装置、电子设备以及存储介质,以实现改善上述问题。
[0004]第一方面,本申请实施例提供了一种动态hook方法,所述方法包括:响应于客户端发送的数据请求,通过目标应用中设置的保护程序获取对应的class文件,所述class文件基于所述数据请求对应的hook点处的处理代码逻辑生成;通过所述保护程序对所述class文件进行实例化,得到所述class文件对应的类的实例;基于所述实例,对所述hook点处的目标方法执行hook操作。
[0005]进一步的,所述响应于客户端发送的数据请求,通过目标应用中设置的保护程序获取对应的class文件之前还包括:获取所述数据请求对应的hook点处的属性信息,所述属性信息包括hook点处的类名、方法名以及参数。
[0006]进一步的,所述通过所述保护程序对所述class文件进行实例化,得到所述class文件对应的类的实例,包括:通过所述保护程序以及所述属性信息对所述class文件进行实例化,得到所述class文件对应的类的实例。
[0007]进一步的,所述响应于客户端发送的数据请求,通过目标应用中设置的保护程序获取对应的class文件,包括:响应于客户端发送数据请求,获取所述数据请求对应的hook点处的处理代码逻辑;基于所述处理代码逻辑,调用所述保护程序中设置的动态hook SDK中对应的接口,生成对应的java代码,所述java代码中包括写有处理代码逻辑的回调函数;通过java编译器对所述java代码进行编译,生成对应的class文件;通过所述目标应用中设置的保护程序,从所述java编译器中获取对应的class文件。通过上述方法,可以不需要替换文件等操作,直接通过网络传送class文件,降低了操作复杂程度。
[0008]进一步的,所述响应于客户端发送数据请求,获取所述数据请求对应的hook点处的处理代码逻辑,包括:响应于客户端发送数据请求,获取所述数据请求对应的hook点处的属性信息和处理代码逻辑;所述基于所述处理代码逻辑,调用所述保护程序中设置的动态hook SDK中对应的接口,生成对应的java代码,包括:基于所述属性信息和所述处理代码逻
辑,调用所述保护程序中设置的动态hook SDK中对应的接口,生成对应的java代码,所述java代码中包括hook点的类名、方法名、参数以及写有处理代码逻辑的回调函数。
[0009]进一步的,所述方法还包括:通过反射方式,获取固定名称、固定前缀以及固定参数的方法作为所述处理代码逻辑所处的方法;或者,通过反射方式,获取固定名称、固定后缀以及固定参数的方法作为所述处理代码逻辑所处的方法。通过上述方法,可以通过更多方式获取到可以写入处理代码逻辑的方法,提高了处理代码逻辑写入的灵活性。
[0010]进一步的,所述基于所述实例,对所述hook点处的目标方法执行hook操作,包括:调用所述保护程序中设置的动态hook SDK中对应的接口,从所述实例中获取需要hook的类、方法、参数以及回调函数;基于所述需要hook的类、方法、参数以及回调函数,对所述目标方法执行hook操作。
[0011]进一步的,所述基于所述实例,对所述hook点处的目标方法执行hook操作之后还包括:输出处理结果。
[0012]第二方面,本申请实施例提供了一种动态hook装置,所述装置包括:文件获取单元,用于响应于客户端发送的数据请求,通过目标应用中设置的保护程序获取对应的class文件,所述class文件基于所述数据请求对应的hook点处的处理代码逻辑生成;实例化单元,用于对所述class文件进行实例化,得到所述class文件对应的类的实例;处理单元,用于基于所述实例,对所述hook点处的目标方法执行hook操作。
[0013]第三方面,本申请实施例提供了一种电子设备,包括一个或多个处理器以及存储器;一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述的方法。
[0014]第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码运行时执行上述的方法。
[0015]本申请实施例提供了一种动态hook方法、装置、电子设备及存储介质。首先响应于客户端发送的数据请求,通过目标应用中设置的保护程序获取对应的class文件,所述class文件基于所述数据请求对应的hook点处的处理代码逻辑生成,然后通过保护程序对class文件进行实例化,得到class文件对应的类的实例,最后基于实例,对所hook点处的目标方法执行hook操作。通过上述方法,通过对外部编译的class文件进行实例化后,以对hook点处的目标方法进行hook操作,可以轻易实现对处理代码逻辑的动态更新,不需要重启目标应用,降低了操作成本。
附图说明
[0016]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0017]图1示出了本申请中的Javaagent技术的整体流程示意图;
[0018]图2示出了本申请一实施例提出的一种动态hook方法的流程图;
[0019]图3示出了本申请另一实施例提出的一种动态hook方法的流程图;
[0020]图4示出了本申请再一实施例提出的一种动态hook方法的流程图;
[0021]图5示出了本申请再一实施例中步骤S310

步骤S360所述过程的示意图;
[0022]图6示出了本申请实施例提出的一种动态hook装置的结构框图;
[0023]图7示出了本申请实施例提出的一种动态hook装置的结构框图;
[0024]图8示出了本申请实施例中的用于执行根据本申请实施例的动态hook方法的电子设备的结构框图;
[0025]图9示出了本申请实施例中的用于保存或者携带实现根据本申请实施例的动态hook方法的程序代码的存储单元。
具体实施方式
[0026]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种动态hook方法,其特征在于,所述方法包括:响应于客户端发送的数据请求,通过目标应用中设置的保护程序获取对应的class文件,所述class文件基于所述数据请求对应的hook点处的处理代码逻辑生成;通过所述保护程序对所述class文件进行实例化,得到所述class文件对应的类的实例;基于所述实例,对所述hook点处的目标方法执行hook操作。2.根据权利要求1所述的方法,其特征在于,所述响应于客户端发送的数据请求,通过目标应用中设置的保护程序获取对应的class文件之前还包括:获取所述数据请求对应的hook点处的属性信息,所述属性信息包括hook点处的类名、方法名以及参数;所述通过所述保护程序对所述class文件进行实例化,得到所述class文件对应的类的实例,包括:通过所述保护程序以及所述属性信息对所述class文件进行实例化,得到所述class文件对应的类的实例。3.根据权利要求1或2所述的方法,其特征在于,所述响应于客户端发送的数据请求,通过目标应用中设置的保护程序获取对应的class文件,包括:响应于客户端发送数据请求,获取所述数据请求对应的hook点处的处理代码逻辑;基于所述处理代码逻辑,调用所述保护程序中设置的动态hook SDK中对应的接口,生成对应的java代码,所述java代码中包括写有处理代码逻辑的回调函数;通过java编译器对所述java代码进行编译,生成对应的class文件;通过所述目标应用中设置的保护程序,从所述java编译器中获取对应的class文件。4.根据权利要求3所述的方法,其特征在于,所述响应于客户端发送数据请求,获取所述数据请求对应的hook点处的处理代码逻辑,包括:响应于客户端发送数据请求,获取所述数据请求对应的hook点处的属性信息和处理代码逻辑;所述基于所述处理代码逻辑,调用所述保护程序中设置的动态hook SDK中对应的接口,生成对应的java代码,包括:基于所...

【专利技术属性】
技术研发人员:申日高曹磊张逸凡
申请(专利权)人:深圳市深信服信息安全有限公司
类型:发明
国别省市:

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

1