[发明专利]Hook目标内核函数的方法及装置有效
申请号: | 201510991253.4 | 申请日: | 2015-12-25 |
公开(公告)号: | CN106919458B | 公开(公告)日: | 2020-09-01 |
发明(设计)人: | 李伟;韩景维 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 刘映东 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | hook 目标 内核 函数 方法 装置 | ||
本发明公开了一种Hook目标内核函数的方法及装置,属于终端技术领域。该方法包括:根据目标内核函数对应的第一系统调用号调用框架文件时跳转至第一指定函数,在第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为入口函数的地址,并根据第二系统调用号进行调用,跳转至入口函数,在入口函数的运行过程中,将系统调用表中目标内核函数的地址修改为第二指定函数的起始地址,使得根据目标内核函数对应的第一系统调用号进行调用时运行第二指定函数。本发明能够在要调用内核空间中的目标内核函数时跳转至运行第二指定函数,实现了利用第二指定函数Hook目标内核函数的目的,扩展了Hook功能的范围。
技术领域
本发明涉及终端技术领域,特别涉及一种Hook目标内核函数的方法及装置。
背景技术
Hook(钩子)函数是一个处理消息的代码段,采用Hook函数可以钩住目标函数,此时如果有其他函数向该目标函数发送消息时,不会先运行该目标函数,而是先运行Hook函数,在Hook函数运行过程中,可以先对传递给目标函数的消息进行加工处理再传递给该目标函数,也可以直接将该消息传递给目标函数,也可以强制结束该消息的传递。
操作系统通常分为两部分:用户空间和内核空间,其中,用户空间是进程独立的,相互之间不可访问,而内核空间是进程共享的,操作系统中只有一份内核空间。但是,用户空间的Hook函数只能Hook用户空间中的目标函数,而不能Hook内核空间中的目标函数,Hook功能较为局限。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种Hook目标内核函数的方法及装置。所述技术方案如下:
第一方面,提供了一种Hook目标内核函数的方法,所述方法包括:
根据目标内核函数对应的第一系统调用号调用框架文件时,跳转至第一指定函数,所述框架文件由所述第一指定函数、入口函数和第二指定函数封装得到,所述框架文件用于Hook所述目标内核函数,所述目标内核函数位于内核空间,所述第一指定函数和所述入口函数位于用户空间;
在所述第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为所述入口函数的地址,并根据所述第二系统调用号进行调用,跳转至所述入口函数,所述系统调用表位于所述内核空间,且所述系统调用表包括系统调用号、函数与函数地址之间的对应关系;
在所述入口函数的运行过程中,将所述系统调用表中所述第一系统调用号对应的地址修改为所述第二指定函数的起始地址,使得根据所述第一系统调用号进行调用时运行所述第二指定函数。
第二方面,提供了一种Hook目标内核函数的装置,所述装置包括:
文件调用模块,用于根据目标内核函数对应的第一系统调用号调用框架文件时,跳转至第一指定函数,所述框架文件由所述第一指定函数、入口函数和第二指定函数封装得到,所述框架文件用于Hook所述目标内核函数,所述目标内核函数位于内核空间,所述第一指定函数和所述入口函数位于用户空间;
第一运行模块,用于在所述第一指定函数的运行过程中,将系统调用表中第二系统调用号对应的地址修改为所述入口函数的地址,并根据所述第二系统调用号进行调用,跳转至所述入口函数,所述系统调用表位于所述内核空间,且所述系统调用表包括系统调用号、函数与函数地址之间的对应关系;
第二运行模块,用于在所述入口函数的运行过程中,将所述系统调用表中所述第一系统调用号对应的地址修改为所述第二指定函数的起始地址,使得根据所述第一系统调用号进行调用时运行所述第二指定函数。
本发明实施例提供的技术方案带来的有益效果是:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510991253.4/2.html,转载请声明来源钻瓜专利网。