Hook目标内核函数的方法及装置制造方法及图纸

技术编号:15762783 阅读:92 留言:0更新日期:2017-07-05 22:53
本发明专利技术公开了一种Hook目标内核函数的方法及装置,属于终端技术领域。该方法包括:根据目标内核函数对应的第一系统调用号调用框架文件时跳转至第一指定函数,在第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为入口函数的地址,并根据第二系统调用号进行调用,跳转至入口函数,在入口函数的运行过程中,将系统调用表中目标内核函数的地址修改为第二指定函数的起始地址,使得根据目标内核函数对应的第一系统调用号进行调用时运行第二指定函数。本发明专利技术能够在要调用内核空间中的目标内核函数时跳转至运行第二指定函数,实现了利用第二指定函数Hook目标内核函数的目的,扩展了Hook功能的范围。

Method and device for Hook target kernel function

The invention discloses a method and a device for a Hook target kernel function, belonging to the technical field of terminals. The method comprises the following steps: first according to the file system call number call frame target kernel function corresponding to the first jump to the specified function, in the operation process of the first specified function, the system call table second system call number corresponding to the address modification for entrance address of the function, and according to the second call system call number, jump to the entrance the function, running at the entrance of the function, the system call table in the kernel function of address modification starting address for the second specified function, make calls according to the call number corresponding to the first goal of the system kernel running second specified function. The invention can be the target kernel function calls in kernel space when running second jump to the specified function, realizes the function of Hook second specifies the target kernel function for the purpose of expanding the scope of the Hook function.

【技术实现步骤摘要】
Hook目标内核函数的方法及装置
本专利技术涉及终端
,特别涉及一种Hook目标内核函数的方法及装置。
技术介绍
Hook(钩子)函数是一个处理消息的代码段,采用Hook函数可以钩住目标函数,此时如果有其他函数向该目标函数发送消息时,不会先运行该目标函数,而是先运行Hook函数,在Hook函数运行过程中,可以先对传递给目标函数的消息进行加工处理再传递给该目标函数,也可以直接将该消息传递给目标函数,也可以强制结束该消息的传递。操作系统通常分为两部分:用户空间和内核空间,其中,用户空间是进程独立的,相互之间不可访问,而内核空间是进程共享的,操作系统中只有一份内核空间。但是,用户空间的Hook函数只能Hook用户空间中的目标函数,而不能Hook内核空间中的目标函数,Hook功能较为局限。
技术实现思路
为了解决现有技术的问题,本专利技术实施例提供了一种Hook目标内核函数的方法及装置。所述技术方案如下:第一方面,提供了一种Hook目标内核函数的方法,所述方法包括:根据目标内核函数对应的第一系统调用号调用框架文件时,跳转至第一指定函数,所述框架文件由所述第一指定函数、入口函数和第二指定函数封装得到,所述框架文件用于Hook所述目标内核函数,所述目标内核函数位于内核空间,所述第一指定函数和所述入口函数位于用户空间;在所述第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为所述入口函数的地址,并根据所述第二系统调用号进行调用,跳转至所述入口函数,所述系统调用表位于所述内核空间,且所述系统调用表包括系统调用号、函数与函数地址之间的对应关系;在所述入口函数的运行过程中,将所述系统调用表中所述第一系统调用号对应的地址修改为所述第二指定函数的起始地址,使得根据所述第一系统调用号进行调用时运行所述第二指定函数。第二方面,提供了一种Hook目标内核函数的装置,所述装置包括:文件调用模块,用于根据目标内核函数对应的第一系统调用号调用框架文件时,跳转至第一指定函数,所述框架文件由所述第一指定函数、入口函数和第二指定函数封装得到,所述框架文件用于Hook所述目标内核函数,所述目标内核函数位于内核空间,所述第一指定函数和所述入口函数位于用户空间;第一运行模块,用于在所述第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为所述入口函数的地址,并根据所述第二系统调用号进行调用,跳转至所述入口函数,所述系统调用表位于所述内核空间,且所述系统调用表包括系统调用号、函数与函数地址之间的对应关系;第二运行模块,用于在所述入口函数的运行过程中,将所述系统调用表中所述第一系统调用号对应的地址修改为所述第二指定函数的起始地址,使得根据所述第一系统调用号进行调用时运行所述第二指定函数。本专利技术实施例提供的技术方案带来的有益效果是:本专利技术实施例提供的方法及装置,通过根据目标内核函数对应的第一系统调用号调用框架文件,能够运行用户空间中的第一指定函数,将内核空间中的系统调用表中第二系统调用号对应的地址修改为入口函数的地址,从而保证入口函数具有访问内核空间的权限,并跳转至入口函数,在运行入口函数的过程中将系统调用表中目标内核函数的地址修改为第二指定函数的起始地址,从而能够在要调用内核空间中的目标内核函数时跳转至运行第二指定函数,实现了利用第二指定函数Hook目标内核函数的目的,扩展了Hook功能的范围,提高了灵活性。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供的一种Hook目标内核函数的方法的流程图;图2是本专利技术实施例提供的一种Hook目标内核函数的方法的流程图;图3是本专利技术实施例提供的一种运行过程示意图;图4是本专利技术实施例提供的一种运行过程示意图;图5是本专利技术实施例提供的一种运行过程示意图;图6是本专利技术实施例提供的一种Hook目标内核函数的装置结构示意图;图7是本专利技术实施例提供的一种终端的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。图1是本专利技术实施例提供的一种Hook目标内核函数的方法的流程图。参见图1,该方法包括:101、根据目标内核函数对应的第一系统调用号调用框架文件时,跳转至第一指定函数。102、在第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为入口函数的地址,并根据第二系统调用号进行调用,跳转至该入口函数。103、在该入口函数的运行过程中,将该系统调用表中目标内核函数的地址修改为第二指定函数的起始地址,使得根据该目标内核函数对应的第一系统调用号进行调用时运行该第二指定函数。其中,该框架文件由第一指定函数、入口函数和第二指定函数封装得到,该框架文件用于Hook该目标内核函数;该目标内核函数位于内核空间,第一指定函数和入口函数位于用户空间,该系统调用表位于内核空间;该系统调用表包括系统调用号、函数与函数地址之间的对应关系。本专利技术实施例提供的方法,通过根据目标内核函数对应的第一系统调用号调用框架文件,能够运行用户空间中的第一指定函数,将内核空间中的系统调用表中第二系统调用号对应的地址修改为入口函数的地址,从而保证入口函数具有访问内核空间的权限,并跳转至入口函数,在运行入口函数的过程中将系统调用表中目标内核函数的地址修改为第二指定函数的起始地址,从而能够在要调用内核空间中的目标内核函数时跳转至运行第二指定函数,实现了利用第二指定函数Hook目标内核函数的目的,扩展了Hook功能的范围,提高了灵活性。可选地,该入口函数的运行过程包括:在该内核空间中分配内存;在分配的内存中存储该第二指定函数,并将该内存的起始地址作为该第二指定函数的起始地址;将该系统调用表中该目标内核函数的地址修改为该第二指定函数的起始地址,使得根据该目标内核函数对应的第一系统调用号进行调用时运行该第二指定函数。可选地,该在分配的内存中存储该第二指定函数,包括:该在分配的内存中存储该第二指定函数,包括:在分配的内存中,存储该第二指定函数所需的参数、该第二指定函数所需的内核函数地址以及该第二指定函数。可选地,该入口函数的运行过程还包括:在将该系统调用表中该目标内核函数的地址修改为该第二指定函数的起始地址之后,将该系统调用表中该第二系统调用号对应的地址还原为原始地址。可选地,该在该第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为入口函数的地址,包括:在该第一指定函数的运行过程中,获取该系统调用表的地址,并利用该内核空间的漏洞,根据该系统调用表的地址,将该系统调用表中该第二系统调用号对应的地址修改为该入口函数的地址。可选地,该在该入口函数的运行过程中,将该系统调用表中目标内核函数的地址修改为第二指定函数的起始地址之后,该方法还包括:当任一函数根据该第一本文档来自技高网...
Hook目标内核函数的方法及装置

【技术保护点】
一种Hook目标内核函数的方法,其特征在于,所述方法包括:根据目标内核函数对应的第一系统调用号调用框架文件时,跳转至第一指定函数,所述框架文件由所述第一指定函数、入口函数和第二指定函数封装得到,所述框架文件用于Hook所述目标内核函数,所述目标内核函数位于内核空间,所述第一指定函数和所述入口函数位于用户空间;在所述第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为所述入口函数的地址,并根据所述第二系统调用号进行调用,跳转至所述入口函数,所述系统调用表位于所述内核空间,且所述系统调用表包括系统调用号、函数与函数地址之间的对应关系;在所述入口函数的运行过程中,将所述系统调用表中所述第一系统调用号对应的地址修改为所述第二指定函数的起始地址,使得根据所述第一系统调用号进行调用时运行所述第二指定函数。

【技术特征摘要】
1.一种Hook目标内核函数的方法,其特征在于,所述方法包括:根据目标内核函数对应的第一系统调用号调用框架文件时,跳转至第一指定函数,所述框架文件由所述第一指定函数、入口函数和第二指定函数封装得到,所述框架文件用于Hook所述目标内核函数,所述目标内核函数位于内核空间,所述第一指定函数和所述入口函数位于用户空间;在所述第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为所述入口函数的地址,并根据所述第二系统调用号进行调用,跳转至所述入口函数,所述系统调用表位于所述内核空间,且所述系统调用表包括系统调用号、函数与函数地址之间的对应关系;在所述入口函数的运行过程中,将所述系统调用表中所述第一系统调用号对应的地址修改为所述第二指定函数的起始地址,使得根据所述第一系统调用号进行调用时运行所述第二指定函数。2.根据权利要求1所述的方法,其特征在于,所述入口函数的运行过程包括:在所述内核空间中分配内存;在分配的内存中存储所述第二指定函数;将所述系统调用表中所述目标内核函数的地址修改为所述第二指定函数的起始地址,使得根据所述目标内核函数对应的第一系统调用号进行调用时运行所述第二指定函数。3.根据权利要求2所述的方法,其特征在于,所述在分配的内存中存储所述第二指定函数,包括:在分配的内存中,存储所述第二指定函数所需的参数、所述第二指定函数所需的内核函数地址以及所述第二指定函数。4.根据权利要求2所述的方法,其特征在于,所述入口函数的运行过程还包括:在将所述系统调用表中所述目标内核函数的地址修改为所述第二指定函数的起始地址之后,将所述系统调用表中所述第二系统调用号对应的地址还原为原始地址。5.根据权利要求1所述的方法,其特征在于,所述在所述第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为入口函数的地址,包括:在所述第一指定函数的运行过程中,获取所述系统调用表的地址,并利用所述内核空间的漏洞,根据所述系统调用表的地址,将所述系统调用表中所述第二系统调用号对应的地址修改为所述入口函数的地址。6.根据权利要求1所述的方法,其特征在于,所述在所述入口函数的运行过程中,将所述系统调用表中目标内核函数的地址修改为第二指定函数的起始地址之后,所述方法还包括:当任一函数根据所述第一系统调用号进行调用时,根据所述系统调用表中所述第一系...

【专利技术属性】
技术研发人员:李伟韩景维
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

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

1