[发明专利]一种基于Vxworks系统的动态钩子函数实现方法在审
申请号: | 201910098588.1 | 申请日: | 2019-01-31 |
公开(公告)号: | CN109947414A | 公开(公告)日: | 2019-06-28 |
发明(设计)人: | 肖尚德;王军 | 申请(专利权)人: | 苏州德铂思电子科技有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F9/445 |
代理公司: | 苏州慧通知识产权代理事务所(普通合伙) 32239 | 代理人: | 丁秀华 |
地址: | 215000 江苏省苏州*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 钩子函数 函数返回地址 指令 保存 跟踪 退出 跳转 返回地址 函数代码 函数执行 返回 减去 写回 灵活 | ||
本发明揭示了一种基于Vxworks系统的动态钩子函数实现方法,包括以下步骤:S1:在被跟踪函数代码段找到保存和退出函数返回地址的指令,并保存保存和退出函数返回地址的指令;S2:将保存和退出函数返回地址的指令均修改为跳转到钩子函数地址的指令和NOP指令;S3:被跟踪函数执行到保存或退出函数返回地址时,执行跳转到钩子函数地址的指令;S4:在钩子函数返回到被跟踪函数之前,将保存或退出函数返回地址的指令写回被修改时的位置;S5:将钩子函数的返回地址的值减去两条指令的长度;S6:钩子函数返回被跟踪函数,继续从保存或退出函数返回地址的指令开始执行被跟踪函数。本发明的基于Vxworks系统的动态钩子函数实现方法,使得跟踪函数运行灵活、高效、方便。
技术领域
本发明涉及计算机技术领域,特别涉及一种基于Vxworks系统的动态钩子函数实现方法。
背景技术
钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。钩子的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。有时,出于调试、性能优化和bug定位等原因,需要跟踪某些函数的运行参数,如运行时间、调用次数、被中断次数等等,需要分别在这些函数的入口和出口处加入统计函数,这个被其它函数调用来统计运行参数的函数称为钩子函数。
现有技术方案中,钩子函数的添加方式都为静态方式,这种方式需要事先确定需要跟踪的函数,然后通过修改Makefile并实现相关的函数接口后重新编译到版本里来实现这一功能。显然,静态钩子函数的这种方案不灵活,被跟踪的函数只能在编译的时候确定,不能在程序运行时动态选择跟踪哪个函数,而需要被跟踪的函数没有被添加钩子函数时需要重新修改代码、编译程序并烧写到设备上,造成时间的耗费。
发明内容
本发明的目的在于针对现有技术中的上述缺陷,提供一种基于Vxworks系统的动态钩子函数实现方法,使得跟踪函数运行灵活、高效、方便。
为了实现上述发明目的,本发明采用了如下技术方案:
一种基于Vxworks系统的动态钩子函数实现方法,其包括以下步骤:
S1:在被跟踪函数代码段的入口找到保存函数返回地址的指令,以及在出口找到退出函数返回指令,并保存所述保存函数返回地址的指令和退出函数返回地址的指令;
S2:将所述保存函数返回地址的指令和退出函数返回地址的指令均修改为跳转到钩子函数地址的指令和NOP指令;
S3:所述被跟踪函数执行到保存函数返回地址或退出函数返回地址时,执行跳转到钩子函数地址的指令,调用钩子函数;
S4:在所述钩子函数返回到被跟踪函数之前,将保存的保存函数返回地址的指令或退出函数返回地址的指令写回被修改时的位置;
S5:将所述钩子函数的返回地址的值减去两条指令的长度;
S6:所述钩子函数返回所述被跟踪函数,继续从所述保存函数返回地址的指令或退出函数返回地址的指令开始执行被跟踪函数。
此外,本发明还包括如下附属技术方案:
所述钩子函数包括入口钩子函数和出口钩子函数,步骤S2的具体步骤为:将保存函数返回地址的指令修改为跳转到入口钩子函数地址的指令和一条NOP指令;将退出函数返回地址的指令修改为跳转到出口钩子函数地址的指令和一条NOP指令。
所述入口钩子函数被调用时记录当前被跟踪函数运行信息,所述出口钩子函数被调用时记录当前被跟踪函数运行信息,根据所述出口钩子函数和所述入口钩子函数记录的运行信息统计所述被跟踪函数运行信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州德铂思电子科技有限公司,未经苏州德铂思电子科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910098588.1/2.html,转载请声明来源钻瓜专利网。