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所述目标内核函数,所述目标内核函数位于内核空间,所述第一指定函数和所述入口函数位于用户空间;在所述第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为所述入口函数的地址,并根据所述第二系统调用号进行调用,跳转至所述入口函数,所述系统调用表位于所述内核空间,且所述系统调用表包括系统调用号、函数与函数地址之间的对应关系;在所述入口函数的运行过程中,将所述系统调用表中所述第一系统调用号对应的地址修改为所述第二指定函数的起始地址,使得根据所述第一系统调用号进行调用时运行所述第二指定函数。
【技术特征摘要】
1.一种Hook目标内核函数的方法,其特征在于,所述方法包括:根据目标内核函数对应的第一系统调用号调用框架文件时,跳转至第一指定函数,所述框架文件由所述第一指定函数、入口函数和第二指定函数封装得到,所述框架文件用于Hook所述目标内核函数,所述目标内核函数位于内核空间,所述第一指定函数和所述入口函数位于用户空间;在所述第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为所述入口函数的地址,并根据所述第二系统调用号进行调用,跳转至所述入口函数,所述系统调用表位于所述内核空间,且所述系统调用表包括系统调用号、函数与函数地址之间的对应关系;在所述入口函数的运行过程中,将所述系统调用表中所述第一系统调用号对应的地址修改为所述第二指定函数的起始地址,使得根据所述第一系统调用号进行调用时运行所述第二指定函数。2.根据权利要求1所述的方法,其特征在于,所述入口函数的运行过程包括:在所述内核空间中分配内存;在分配的内存中存储所述第二指定函数;将所述系统调用表中所述目标内核函数的地址修改为所述第二指定函数的起始地址,使得根据所述目标内核函数对应的第一系统调用号进行调用时运行所述第二指定函数。3.根据权利要求2所述的方法,其特征在于,所述在分配的内存中存储所述第二指定函数,包括:在分配的内存中,存储所述第二指定函数所需的参数、所述第二指定函数所需的内核函数地址以及所述第二指定函数。4.根据权利要求2所述的方法,其特征在于,所述入口函数的运行过程还包括:在将所述系统调用表中所述目标内核函数的地址修改为所述第二指定函数的起始地址之后,将所述系统调用表中所述第二系统调用号对应的地址还原为原始地址。5.根据权利要求1所述的方法,其特征在于,所述在所述第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为入口函数的地址,包括:在所述第一指定函数的运行过程中,获取所述系统调用表的地址,并利用所述内核空间的漏洞,根据所述系统调用表的地址,将所述系统调用表中所述第二系统调用号对应的地址修改为所述入口函数的地址。6.根据权利要求1所述的方法,其特征在于,所述在所述入口函数的运行过程中,将所述系统调用表中目标内核函数的地址修改为第二指定函数的起始地址之后,所述方法还包括:当任一函数根据所述第一系统调用号进行调用时,根据所述系统调用表中所述第一系...
【专利技术属性】
技术研发人员:李伟,韩景维,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。