[发明专利]一种函数调用关系的识别方法及装置有效
申请号: | 201410675750.9 | 申请日: | 2014-11-21 |
公开(公告)号: | CN105677311B | 公开(公告)日: | 2019-03-29 |
发明(设计)人: | 刘洪刚;杨颖;池垂富;夏冰;韩俊焜;姚骏 | 申请(专利权)人: | 卓望数码技术(深圳)有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448 |
代理公司: | 深圳市顺天达专利商标代理有限公司 44217 | 代理人: | 李琴 |
地址: | 518057 广东省深圳市南山区高*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 函数 调用 关系 识别 方法 装置 | ||
本发明公开了一种函数调用关系的识别方法及装置,该方法包括:S1、获取开发框架类库中的每个类;S2、依据每个类确定类继承关系;S3、依据类继承关系确定每个类中包含的四种函数,建立函数关系表,其中,四种函数分别为类白定义函数、协议函数、实例函数及分类函数;S4、从四种函数中去除协议函数;S5、识别任一函数的调用关系。该发明的有益效果为:通过构建并提取出iOS开发框架中公有类的类继承关系的完整模型,以及公有类与其类成员函数的完整对应关系,静态分析计算出iOS应用中所有函数问调用的完整关系,生成应用代码控制流图和函数调用路径,从而使隐私数据分析判定更加准确。
技术领域
本发明涉及计算机技术领域,尤其涉及一种函数调用关系的识别方法及装置。
背景技术
iOS操作系统是由苹果公司开发的手持设备操作系统。苹果公司最早2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续使用到iPodtouch、iPad、iPad mini以及Apple TV等苹果产品。
随着苹果iOS系统以及硬件设备的不断升级,用户的数量也在不断增加。另一方面,受跟踪门、棱镜门等事件影响,iOS系统及iOS应用程序的安全性和用户隐私保护的安全性也受到越来越多的关注。
采用逆向分析技术,可以对iOS应用进行静态逻辑分析,通过逆向分析应用的Objective-C二进制文件,获得应用程序内部函数之间的调用关系,生成控制流图,可以定位敏感行为调用,追踪敏感信息流,分析敏感API调用路径,最终达到通过分析函数控制流图来判定应用程序是否存储泄漏用户隐私的目的。
其中,最大的技术难点是如何有效的确定函数调用关系。由于苹果公司的封闭政策以及Objective-C语言的一些特性都给分析工作带来了很多挑战,相关的研究成果还相对较少。
Objective-C的函数调用机制和C++有很大的区别。C++是编译时静态绑定,并通过嵌入类和虚函数表来模拟实现的;而Objective-C则提供了运行时动态绑定机制,在调用时并不使用虚函数表,而是通过动态分配机制接收到类指针和函数的名字,然后去遍历对象的类继承关系,当发生函数调用时,系统通过函数objc_msgSend去实现函数调用的消息传递。
objc_msgSend函数有两个参数,消息接收者(receiver)和消息对应的方法名字(selector)。objc_msgSend的调用过程如下:首先通过第一个参数receiver找到它的isa指针,然后在isa指向的Class对象中使用第二个参数selector去查找方法;如果没有找到,就使用当前Class对象中的新的isa指针到上一级的父类的对象中查找;当找到方法后,再依据receiver中的self指针找到当前的对象,调用当前对象具体实现的函数(IMP指针函数),然后传递参数,调用实现函数;假如一直找到NSObject也没有找到调用的函数,就会报告不能识别发送消息的错误。
因此,要确定函数调用关系,最重要的是找到这两个参数的内容。程序运行过程中,这两个值分别存在寄存器R0和R1中,R0寄存器存的是指向类的指针,R1寄存器存的是指向方法的指针。
目前,通过静态分析的方式是无法直接获取到这两个指针。通过分析静态反编译的结果,能够得到R1的内容,但在大多数情况下,无法得到R0的内容,也就是说,只能获取到函数的名称,无法得到函数的类名。
其中,其名为cdmjPaiViewGetPaiImage的函数,其调用了另一个名为GetPaiImage:withdirection:withifdown的函数,通过IDA的分析结果和提供的接口,能够直接得到R1寄存器的内容,也就是这个函数的名字,却无法直接得到R0存放的内容。
这给确认函数调用关系带来困难。比如,函数A中调用了一个方法名为name的函数,假如类B有个方法名为name,类C也有个方法名为name,调用的到底是哪个类的name就无法判断。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于卓望数码技术(深圳)有限公司,未经卓望数码技术(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410675750.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:消息通知过滤方法及装置
- 下一篇:一种基于双稳态反应的CRNs加法器计算方法