[发明专利]一种基于Vxworks系统的动态钩子函数实现方法在审
申请号: | 201910098588.1 | 申请日: | 2019-01-31 |
公开(公告)号: | CN109947414A | 公开(公告)日: | 2019-06-28 |
发明(设计)人: | 肖尚德;王军 | 申请(专利权)人: | 苏州德铂思电子科技有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F9/445 |
代理公司: | 苏州慧通知识产权代理事务所(普通合伙) 32239 | 代理人: | 丁秀华 |
地址: | 215000 江苏省苏州*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 钩子函数 函数返回地址 指令 保存 跟踪 退出 跳转 返回地址 函数代码 函数执行 返回 减去 写回 灵活 | ||
1.一种基于Vxworks系统的动态钩子函数实现方法,其特征在于,其包括以下步骤:
S1:在被跟踪函数代码段的入口找到保存函数返回地址的指令,以及在出口找到退出函数返回指令,并保存所述保存函数返回地址的指令和退出函数返回地址的指令;
S2:将所述保存函数返回地址的指令和退出函数返回地址的指令均修改为跳转到钩子函数地址的指令和NOP指令;
S3:所述被跟踪函数执行到保存函数返回地址或退出函数返回地址时,执行跳转到钩子函数地址的指令,调用钩子函数;
S4:在所述钩子函数返回到被跟踪函数之前,将保存的保存函数返回地址的指令或退出函数返回地址的指令写回被修改时的位置;
S5:将所述钩子函数的返回地址的值减去两条指令的长度;
S6:所述钩子函数返回所述被跟踪函数,继续从所述保存函数返回地址的指令或退出函数返回地址的指令开始执行被跟踪函数。
2.按照权利要求1所述基于Vxworks系统的动态钩子函数实现方法,其特征在于:所述钩子函数包括入口钩子函数和出口钩子函数,步骤S2的具体步骤为:将保存函数返回地址的指令修改为跳转到入口钩子函数地址的指令和一条NOP指令;将退出函数返回地址的指令修改为跳转到出口钩子函数地址的指令和一条NOP指令。
3.按照权利要求2所述基于Vxworks系统的动态钩子函数实现方法,其特征在于:所述入口钩子函数被调用时记录当前被跟踪函数运行信息,所述出口钩子函数被调用时记录当前被跟踪函数运行信息,根据所述出口钩子函数和所述入口钩子函数记录的运行信息统计所述被跟踪函数运行信息。
4.按照权利要求2所述基于Vxworks系统的动态钩子函数实现方法,其特征在于,所述步骤S3的具体步骤为:当所述被跟踪函数执行到原保存函数返回地址时,执行跳转入口钩子函数地址的指令,调用所述入口钩子函数;当所述被跟踪函数执行到原退出函数返回地址时,执行跳转出口钩子函数地址的指令,调用所述出口钩子函数。
5.按照权利要求2所述基于Vxworks系统的动态钩子函数实现方法,其特征在于,所述步骤S4的具体步骤为:在所述入口钩子函数返回到被跟踪函数之前,将保存的所述保存函数返回地址的指令写回原位;在所述出口钩子函数返回到被跟踪函数之前,将保存的所述退出函数返回地址的指令写回原位。
6.按照权利要求2所述基于Vxworks系统的动态钩子函数实现方法,其特征在于,所述步骤S5的具体步骤为:将所述入口钩子函数和出口钩子函数的返回地址的值减去两条指令的长度。
7.按照权利要求2所述基于Vxworks系统的动态钩子函数实现方法,其特征在于,所述步骤S6的具体步骤为:当所述入口钩子函数返回所述被跟踪函数时,继续从所述保存函数返回地址的指令开始执行被跟踪函数;当所述出口钩子函数返回所述被跟踪函数时,继续从所述退出函数返回地址的指令开始执行被跟踪函数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州德铂思电子科技有限公司,未经苏州德铂思电子科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910098588.1/1.html,转载请声明来源钻瓜专利网。