[发明专利]一种动态链接库函数的钩挂方法、装置和存储介质有效
申请号: | 201810167443.8 | 申请日: | 2018-02-28 |
公开(公告)号: | CN108415739B | 公开(公告)日: | 2020-04-14 |
发明(设计)人: | 房伟 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F8/30 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 郭润湘 |
地址: | 518044 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 动态 链接 库函数 方法 装置 存储 介质 | ||
1.一种动态链接库函数的钩挂方法,其特征在于,包括:
在检测到系统调用目标函数时,根据所述目标函数在内存中存储的段基址和所述目标函数在可执行与可连接格式文件中的地址偏移信息确定跳转地址,其中,所述地址偏移信息为根据自定义函数的存储地址和所述段基址确定出的;
根据跳转地址执行所述自定义函数得到自定义函数的执行结果;并
在所述自定义函数中调用所述目标函数,返回所述目标函数的执行结果;
按照以下流程确定所述目标函数在可执行与可连接格式文件中的地址偏移信息:
从段类型为动态链接类型的段中获取所有动态结构体信息;
从所述动态结构体信息中,查找动态类型为字符串表地址的动态结构体信息存储于函数表的基地址中,所述字符串表地址中包含有所有函数名称的基址;以及
从动态类型为符号哈希表地址的函数结构体信息中读取函数索引表和函数索引链表的哈希值;
根据所述哈希值确定所述目标函数的地址偏移信息。
2.如权利要求1所述的方法,其特征在于,按照以下流程确定所述目标函数在内存中存储的段基址:
在包含有所述目标函数的可执行与可连接格式文件加载至内存中之后,从本地文件中读取当前本地运行进程内所有动态链接库函数的内存空间地址范围,并根据所述目标函数的函数名称在所述本地文件中查找所述动态链接库函数在内存映射的内存基址;
根据可执行与可连接格式文件结构体,在所述可执行与可连接格式文件中查找包含所述目标函数的段在内存中的大小;
根据所述内存基址和所述查找到的段大小确定所述段基址。
3.如权利要求2所述的方法,其特征在于,根据可执行与可连接格式文件结构体,在所述可执行与可连接格式文件中查找包含所述目标函数的段在内存中的大小,具体包括:
根据可执行与可连接格式文件结构体中包含的段数量,确定所述可执行与可连接格式文件占据的字节长度;
根据所述字节长度,从所述内存基址开始读取相应长度的第一数据;
遍历所述第一数据,获取段结构体,所述段结构体中包含有段类型和段在内存中的大小;
确定段类型为可加载的,段在内存中的大小为包含所述目标函数的段在内存中的大小。
4.如权利要求1所述的方法,其特征在于,从段类型为动态链接类型的段中获取所有动态结构体信息,具体包括:
确定动态连接类型段的段首地址和段长度,所述段首地址为根据所述段基址和所述段结构体中包含的段起始地址确定出的;
从所述段首地址开始,遍历所述段长度的第二数据获得所有动态结构体信息。
5.如权利要求1所述的方法,其特征在于,根据所述哈希值确定所述目标函数的地址偏移信息,具体包括:
针对每一函数,根据该函数对应的哈希值和函数索引表的长度确定该函数在函数表中的偏移量;并
根据所述偏移量从函数表基地址中读取函数结构体,如果根据所述函数结构体中包含的函数名称确定为所述目标函数,则确定所述函数结构体中包含的地址偏移信息为所述目标函数的地址偏移信息。
6.一种动态链接库的钩挂装置,其特征在于,包括:
第一确定单元,用于在检测到系统调用目标函数时,根据所述目标函数在内存中存储的段基址和所述目标函数在可执行与可连接格式文件中的地址偏移信息确定跳转地址,其中,所述地址偏移信息为根据自定义函数的存储地址和所述段基址确定出的;
执行单元,用于根据跳转地址执行所述自定义函数得到自定义函数的执行结果;
返回单元,用于在所述自定义函数中调用所述目标函数,返回所述目标函数的执行结果;
所述装置还包括:
获取单元,用于从段类型为动态链接类型的段中获取所有动态结构体信息;
第三查找单元,用于从所述动态结构体信息中,查找动态类型为字符串表地址的动态结构体信息存储于函数表的基地址中,所述字符串表地址中包含有所有函数名称的基址;
第二读取单元,用于从动态类型为符号哈希表地址的函数结构体信息中读取函数索引表和函数索引链表的哈希值;
第三确定单元,用于根据所述哈希值确定所述目标函数的地址偏移信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810167443.8/1.html,转载请声明来源钻瓜专利网。