[发明专利]函数调用关系检测方法、装置、设备及存储介质有效
申请号: | 201811468332.7 | 申请日: | 2018-12-03 |
公开(公告)号: | CN111258630B | 公开(公告)日: | 2023-05-30 |
发明(设计)人: | 李丹;裘绍翔;王佳琦 | 申请(专利权)人: | 斑马智行网络(香港)有限公司 |
主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F8/41 |
代理公司: | 上海华诚知识产权代理有限公司 31300 | 代理人: | 徐颖聪 |
地址: | 中国香港九龙长沙湾道*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 函数 调用 关系 检测 方法 装置 设备 存储 介质 | ||
本发明提供了一种函数调用关系检测方法、装置、设备及存储介质,用于检测待检测函数与检测点函数之间是否具有调用关系,为待检测函数添加静态函数,静态函数定义为被调用时,生成包括当前调用的返回地址和检测点函数的条目;将调用待检测函数的动作修改为调用静态函数,以由静态函数调用待检测函数。由此,对于原本直接调用待检测函数的函数,可以通过调用静态函数来调用待检测函数,并且在这一过程中,可以得到包括当前调用的返回地址和检测点函数的条目,从而可以为检测待检测函数与检测点函数之间是否具有调用关系提供实现基础。
技术领域
本发明涉及函数调用,特别是涉及一种函数调用关系检测方法、装置、设备及存储介质。
背景技术
栈回溯的实现依赖于编译器的特性,与特定的平台相关,通常有两种方法,以linux内核实现的ARM栈回溯为例,通过向gcc传递-mapcs或-fununwind-tables可以选择APCS或unwind之一进行栈回溯。
使用APCS(ARMProcedureCallStandard)进行ARM栈回溯的过程中,调用标准规范了ARM寄存器的使用,函数调用时的出栈入栈规定,在栈中根据标准可以准确的进行栈回溯,但APCS中,函数的入栈和出栈对栈的消耗较大,占用的寄存器较多,而Unwind避免了此问题。Unwind将每个函数的入栈时的偏移单独保存在一个段中,在栈回溯的时候通过查表的方式查找父函数在栈中的返回地址。
APCS和Unwind是栈回溯的标准方式,但并不能解决某些特定场景下的函数调用问题。例如:1.栈回溯需要逐步进行,对于A-B-C(A中调用B函数,B中调用C函数)的情景,有时我们只关注A与C的调用关系,此时需要先从C回溯到B,再回溯到A,对于多级调用或递归调用效率相对较低。2.两种方式均依赖于编译器,在某些情境下只需要对特定函数进行栈回溯,在编译期间很难只针对部分函数进行优化。3.APCS需要通过符号表确定函数的起始地址,Unwind通过ARM.unwind_idx确定函数的起始地址,二者均是通过LR所在的函数地址范围确定其父函数,同一函数内的子函数在做调用路径检测时会产生歧义,需要针对不同函数单独处理。4.Unwind方式会在内核保存所有函数的首地址,存在极大的安全隐患,APCS若配置了符号表也存在同样的问题。
发明内容
本发明的一个目的在于提供一种函数调用关系检测方案,以解决上述至少一种问题。
根据本发明的第一个方面,提供了一种函数调用关系检测方法,用于检测待检测函数与检测点函数之间是否具有调用关系,包括:为待检测函数添加静态函数,静态函数定义为被调用时,生成包括当前调用的返回地址和检测点函数的条目;将调用待检测函数的动作修改为调用静态函数,以由静态函数调用待检测函数。
可选地,该方法还包括:对待检测函数进行重命名,以标识待检测函数。
可选地,该方法还包括:响应于检测点函数被调用,保存与检测点函数对应的标记。
可选地,该方法还包括:响应于检测点函数被调用后返回,清除与检测点函数对应的标记。
可选地,该方法还包括:在待检测函数中添加检测模块,检测模块用于响应于待检测函数被调用,检测待检测函数与检测点函数之间是否存在调用关系。
可选地,检测待检测函数与检测点函数之间是否存在调用关系的步骤包括:根据当前调用的返回地址,在与当前调用的返回地址对应的条目中查找检测点函数;在查找到检测点函数的情况下,检查是否存在与检测点函数对应的标记。
可选地,该方法还包括:在检测到存在与检测点函数对应的标记的情况下,判定待检测函数与检测点函数存在调用关系。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于斑马智行网络(香港)有限公司,未经斑马智行网络(香港)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811468332.7/2.html,转载请声明来源钻瓜专利网。