CN105677311A - 一种函数调用关系的识别方法及装置 - Google Patents
一种函数调用关系的识别方法及装置 Download PDFInfo
- Publication number
- CN105677311A CN105677311A CN201410675750.9A CN201410675750A CN105677311A CN 105677311 A CN105677311 A CN 105677311A CN 201410675750 A CN201410675750 A CN 201410675750A CN 105677311 A CN105677311 A CN 105677311A
- Authority
- CN
- China
- Prior art keywords
- class
- function
- belonging
- arbitrary function
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种函数调用关系的识别方法及装置,该方法包括:S1、获取开发框架类库中的每个类;S2、依据每个类确定类继承关系;S3、依据类继承关系确定每个类中包含的四种函数,建立函数关系表,其中,四种函数分别为类白定义函数、协议函数、实例函数及分类函数;S4、从四种函数中去除协议函数;S5、识别任一函数的调用关系。该发明的有益效果为:通过构建并提取出iOS开发框架中公有类的类继承关系的完整模型,以及公有类与其类成员函数的完整对应关系,静态分析计算出iOS应用中所有函数问调用的完整关系,生成应用代码控制流图和函数调用路径,从而使隐私数据分析判定更加准确。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种函数调用关系的识别方法及装置。
背景技术
iOS操作系统是由苹果公司开发的手持设备操作系统。苹果公司最早2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续使用到iPodtouch、iPad、iPadmini以及AppleTV等苹果产品。
随着苹果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就无法判断。
因此,要分析一个程序的函数调用结构,需要设计一种iOS应用的函数调用关系识别算法,获得被调用函数的函数名和所属的类名。
发明内容
本发明要解决的技术问题在于,针对上述现有技术中无法确定函数调用关系的问题,提供一种函数调用关系的识别方法及装置。
本发明解决其技术问题所采用的技术方案是:一方面,构造一种函数调用关系的识别方法,包括以下步骤:
S1、获取开发框架类库中的每个类;
S2、依据所述每个类确定类继承关系;
S3、依据所述类继承关系确定每个类中包含的四种函数,建立函数关系表,其中,四种函数分别为类自定义函数、协议函数、实例函数及分类函数;
S4、从所述四种函数中去除所述协议函数;
S5、识别任一函数的调用关系。
在本发明所述的识别方法中,在所述步骤S1中,每个类包括公有类、自定义类及系统类。
在本发明所述的识别方法中,所述步骤S1包括以下子步骤:
S11、根据所述开发框架中的头文件获取所述公有类;
S12、反编译所述开发框架中的二进制文件,获取所述自定义类及系统类。
在本发明所述的识别方法中,在所述步骤S3中,从所述二进制文件中,通过自定义字段获取所述类自定义函数,通过协议字段获取所述协议函数,通过实例字段获取所述实例函数,通过分类字段获取所述分类函数。
在本发明所述的识别方法中,所述步骤S5包括以下子步骤:
S51、判断所述任一函数是否被调用,若是,则转至步骤S52;
S52、识别所述任一函数的调用关系。
在本发明所述的识别方法中,所述步骤S52包括以下子步骤:
S521、遍历所述函数关系表,判断所述任一函数是否只包含在一个类中,若是,执行步骤S522,若否,转至步骤S523;
S522、所述任一函数确定为被包含的类的成员函数;
S523、遍历所述任一函数所属类的类名,判断所述任一函数所属的类名是否与所述任一函数所属类中所包含的类的类名相同,若是,执行步骤S524,若否,转至步骤S525;
S524、所述任一函数确定为与其所属类中所包含的类名相同的类的成员函数;
S525、遍历所述任一函数所属类的父类,判断所述父类中是否包含与所述任一函数所属的类名相同的类,若是,执行步骤S526;
S526、所述任一函数确定为所述父类中包含与所述任一函数所属的类名相同的类的成员函数。
另一方面,提供一种函数调用关系的识别装置,包括:
获取模块,用于获取开发框架类库中的每个类;
确定模块,用于依据所述每个类确定类继承关系;
建立模块,用于依据所述类继承关系确定每个类中包含的四种函数,建立函数关系表,其中,四种函数分别为类自定义函数、协议函数、实例函数及分类函数;
去除模块,用于从所述四种函数中去除所述协议函数;
识别模块,用于识别任一函数的调用关系。
在本发明所述的识别装置中,每个类包括公有类、自定义类及系统类;所述获取模块包括:
第一获取子模块,用于根据所述开发框架中的头文件获取所述公有类;
第二获取子模块,用于反编译所述开发框架中的二进制文件,获取所述自定义类及系统类。
在本发明所述的识别装置中,所述建立模块还用于从所述二进制文件中,通过自定义字段获取所述类自定义函数,通过协议字段获取所述协议函数,通过实例字段获取所述实例函数,通过分类字段获取所述分类函数。
在本发明所述的识别装置中,所述识别模块包括:
判断模块,用于判断所述任一函数是否被调用;
调用关系识别模块,用于识别所述任一函数的调用关系;其中,所述调用关系识别模块包括:
第一遍历模块,用于遍历所述函数关系表,判断所述任一函数是否只包含在一个类中;
第一确定模块,用于所述任一函数确定为被包含的类的成员函数;
第二遍历模块,用于遍历所述任一函数所属类的类名,判断所述任一函数所属的类名是否与所述任一函数所属类中所包含的类的类名相同;
第二确定模块,用于所述任一函数确定为与其所属类中所包含的类名相同的类的成员函数;
第三遍历模块,用于遍历所述任一函数所属类的父类,判断所述父类中是否包含与所述任一函数所属的类名相同的类,若是,执行步骤S526;
第三确定模块,用于所述任一函数确定为所述父类中包含与所述任一函数所属的类名相同的类的成员函数。
上述公开的一种函数调用关系的识别方法及装置具有以下有益效果:通过构建并提取出iOS开发框架中公有类的类继承关系的完整模型,以及公有类与其类成员函数的完整对应关系,静态分析计算出iOS应用中所有函数间调用的完整关系,生成应用代码控制流图和函数调用路径,从而使隐私数据分析判定更加准确。
附图说明
图1为本发明提供的一种函数调用关系的识别方法的流程图;
图2为本发明提供的提取公有类继承关系的流程图;
图3为本发明提供的类函数表生成算法的流程图;
图4为本发明提供的函数调用关系算法的流程图;
图5为本发明提供的一种函数调用关系的识别装置的方框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提供了一种函数调用关系的识别方法及装置,其通过解析iOS开发框架类库头文件,提取开发框架中公有类的类继承关系的完整模型,以及公有类与其类成员函数的完整对应关系。其次,基于反汇编代码,发明一套静态代码分析算法,从_objc_classlist数据段提取iOS应用的自定义类清单,从_objec_const数据段提取类的类自定义函数、协议函数、实例函数、以及Category函数(分类函数),从_objc_protolist提取协议函数,从_objec_cleassrefs数据段提取公有类的调用关系,并基于以上数据构建出自定义类的类继承关系的完整模型,以及自定义类与其类成员函数的完整对应关系。同时,基于类函数被自己类的对象调用的概率远远高于被其它类调用的统计策略,发明的静态分析iOS应用函数调用关系时确定被调用函数所属类的研判算法。
参见图1,图1为本发明提供的一种函数调用关系的识别方法的流程图,该识别方法包括以下步骤:
S1、获取开发框架类库中的每个类;每个类包括公有类、自定义类及系统类。所述步骤S1包括以下子步骤:
S11、根据所述开发框架中的头文件获取所述公有类;公有类,即系统所提供的类,可以在苹果公司官方提供的SDK中找到。在SDK框架下所有头文件中,记录了所有公有类的信息。遍历所有头文件,就得到了公有类的类继承关系。该步骤参见图2,图2为本发明提供的提取公有类继承关系的流程图。
S12、反编译所述开发框架中的二进制文件,获取所述自定义类及系统类。自定义类,即开发者自己定义的类,因此每个应用程序自定义的类不同。自定义类的继承关系需要分析应用程序的二进制文件来得到。将二进制文件载入IDAPro,得到反编译的结果。在Mach-O文件中,有一个名为_objc_classlist的字段,这个段记录了程序所有的自定义的类。通过模拟分析,发现了在反编译结果中类继承关系的记录方式。例如:一个名为CCEaseOut的类,其中,_objc2_class的第二个参数是第一个参数的父类,即CCEaseOut的父类就是CCEaseRateAction。
此外,还需找到程序调用的系统类。在二进制文件中,有一个名为_objc_classrefs的字段,这个段不仅包含了程序自定义的类,也包含了它所使用到的系统的类。例如,NSString就是一个系统提供的类。
综上,建立函数调用关系的第一步首先是确定类的继承关系和完整的函数表。Objective-C中类的继承的概念与C++类似,不同的是Objective-C不支持多重继承,一个类只能有一个父类,单继承使Objective-C的继承关系很简单,易于管理程序。在Objective-C中,NSObject是大多数类的根类,它没有父类。为了能够从Mach-O文件得到完整的函数调用关系,首先要建立完整的类继承关系,其中包括公有类的类继承关系和自定义类的类继承关系。
S2、依据所述每个类确定类继承关系;综合以上步骤S1的信息,即可建立了程序完整的类继承关系。
S3、依据所述类继承关系确定每个类中包含的四种函数,建立函数关系表,其中,四种函数分别为类自定义函数、协议函数、实例函数及分类函数;从所述二进制文件中,通过自定义字段获取所述类自定义函数,通过协议字段获取所述协议函数,通过实例字段获取所述实例函数,通过分类字段获取所述分类函数。
在这一步中,需要确定程序调用的所有函数以及每个函数所属的类。首先,要找到每个类下面的函数。目的是判断当发生一个函数调用时,到底是调用了对象自己的函数,还是调用了其父类的函数,这一步在某些无法得到类指针的情况下,可以帮助推断到底是调用了哪个类的函数。
在分析反编译结果中,一个类可能包含四种函数:
1)类自定义的函数;
2)协议函数;
3)实例函数;
4)CATEGORY函数。
在Mach-O的二进制文件中,有个段名为_objc_const的字段,它包含了这四类函数的信息。在该字段中,OBJC_CATEGORY_CLASS(INSTANCE)_METHODS_A_$_XX表示一个CATEGORY函数。而OBJC_CLASS(INSTANCE)_METHODS_A由于A的类型不同,其包含的内容也不一样:如果A是一个类,则OBJC_CLASS_METHODS_A表示类A的自定义函数,OBJC_INSTANCE_METHODS_A表示类A的实例函数,如果A是一个协议,则它表示的是协议A的函数。
因此,统计以上三个部分的内容,就能得到所有的类的函数和部分协议函数。
S4、从所述四种函数中去除所述协议函数;协议函数并不包含在类函数里,因此,要获得准确的类函数表,需要将其中协议函数去掉。在二进制文件中,名为_objc_protolist的字段就包含了程序用到的所有的协议。依照上面的分析,设计如下算法来得到类函数表,该算法参见图3,图3为本发明提供的类函数表生成算法的流程图。
S5、识别任一函数的调用关系。所述步骤S5包括以下子步骤:
S51、判断所述任一函数是否被调用,若是,则转至步骤S52;从函数的属性角度来划分,函数调用可以分为独立函数调用和类函数调用。对于独立函数来说,他们的调用并不是通过objc_msgSend来实现,而是BLX_function_name,由于独立函数不属于任何一个类,因此他们的函数调用关系比较容易确定。在Mach-O二进制文件中,以_symbol开头的字段中就包含了程序使用的所有独立函数的信息。利用IDA提供的接口,便能很容易追踪独立函数的调用路径。
S52、识别所述任一函数的调用关系。对于类函数而言,在二进制文件中有一个名为_objc_selrefs字段,这个段包含了程序使用的所有的类函数信息。由于前面提到的原因,无法直接得到类函数的调用关系,因此,为了得到类函数的调用路径,需要设计一个基于概率的策略,即去寻找最有可能的目标。策略基于这样的判断:在程序的架构中,一个类函数被自己类的对象调用的概率远远高于被其它类调用的概率。具体的,该步骤参见图4,图4为本发明提供的函数调用关系算法的流程图,所述步骤S52包括以下子步骤:
S521、遍历所述函数关系表,判断所述任一函数是否只包含在一个类中,若是,执行步骤S522,若否,转至步骤S523;
S522、所述任一函数确定为被包含的类的成员函数;例如,当一个属于类C的函数A被函数B调用,而无法判断函数A的所属的类时,首先遍历前面建立的类与成员函数对应关系表,如果函数A只包含在一个类C中,就可以推断C就是函数A的类。
S523、遍历所述任一函数所属类的类名,判断所述任一函数所属的类名是否与所述任一函数所属类中所包含的类的类名相同,若是,执行步骤S524,若否,转至步骤S525;
S524、所述任一函数确定为与其所属类中所包含的类名相同的类的成员函数;例如,如果多个类包含名称为A的成员函数,则遍历这些类的类名,如果存在某个类名E’与函数B所属的类名称相同,就可以判断这个E’类就是函数A所属的类。
S525、遍历所述任一函数所属类的父类,判断所述父类中是否包含与所述任一函数所属的类名相同的类,若是,执行步骤S526;
S526、所述任一函数确定为所述父类中包含与所述任一函数所属的类名相同的类的成员函数。例如,如果没有存在某个类名E’与函数B所属的类名称相同,就需要用到前面生成的类继承关系,再去依次遍历函数B所属类的上层父类,如果某个父类类名与函数A所属的某个类名E”相同,就可以判断这个E”类就是函数A所属的类。
参见图5,图5为本发明提供的一种函数调用关系的识别装置100的方框图,该识别装置100包括获取模块、确定模块、建立模块、去除模块以及识别模块,其中:
获取模块,用于获取开发框架类库中的每个类;每个类包括公有类、自定义类及系统类。所述获取模块包括第一获取子模块、第二获取子模块:
第一获取子模块,用于根据所述开发框架中的头文件获取所述公有类;
第二获取子模块,用于反编译所述开发框架中的二进制文件,获取所述自定义类及系统类。
确定模块,用于依据所述每个类确定类继承关系;
建立模块,用于依据所述类继承关系确定每个类中包含的四种函数,建立函数关系表,其中,四种函数分别为类自定义函数、协议函数、实例函数及分类函数;还用于从所述二进制文件中,通过自定义字段获取所述类自定义函数,通过协议字段获取所述协议函数,通过实例字段获取所述实例函数,通过分类字段获取所述分类函数。
去除模块,用于从所述四种函数中去除所述协议函数;
识别模块,用于识别任一函数的调用关系。所述识别模块包括判断模块、调用关系识别模块、第一遍历模块、第一确定模块、第二遍历模块、第二确定模块、第三遍历模块以及第三确定模块,其中:
判断模块,用于判断所述任一函数是否被调用;
调用关系识别模块,用于识别所述任一函数的调用关系;其中,所述调用关系识别模块包括:
第一遍历模块,用于遍历所述函数关系表,判断所述任一函数是否只包含在一个类中;
第一确定模块,用于所述任一函数确定为被包含的类的成员函数;
第二遍历模块,用于遍历所述任一函数所属类的类名,判断所述任一函数所属的类名是否与所述任一函数所属类中所包含的类的类名相同;
第二确定模块,用于所述任一函数确定为与其所属类中所包含的类名相同的类的成员函数;
第三遍历模块,用于遍历所述任一函数所属类的父类,判断所述父类中是否包含与所述任一函数所属的类名相同的类,若是,执行步骤S526;
第三确定模块,用于所述任一函数确定为所述父类中包含与所述任一函数所属的类名相同的类的成员函数。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (10)
1.一种函数调用关系的识别方法,其特征在于,包括以下步骤:
S1、获取开发框架类库中的每个类;
S2、依据所述每个类确定类继承关系;
S3、依据所述类继承关系确定每个类中包含的四种函数,建立函数关系表,其中,四种函数分别为类自定义函数、协议函数、实例函数及分类函数;
S4、从所述四种函数中去除所述协议函数;
S5、识别任一函数的调用关系。
2.根据权利要求1所述的识别方法,其特征在于,在所述步骤S1中,每个类包括公有类、自定义类及系统类。
3.根据权利要求2所述的识别方法,其特征在于,所述步骤S1包括以下子步骤:
S11、根据所述开发框架中的头文件获取所述公有类;
S12、反编译所述开发框架中的二进制文件,获取所述自定义类及系统类。
4.根据权利要求3所述的识别方法,其特征在于,在所述步骤S3中,从所述二进制文件中,通过自定义字段获取所述类自定义函数,通过协议字段获取所述协议函数,通过实例字段获取所述实例函数,通过分类字段获取所述分类函数。
5.根据权利要求1所述的识别方法,其特征在于,所述步骤S5包括以下子步骤:
S51、判断所述任一函数是否被调用,若是,则转至步骤S52;
S52、识别所述任一函数的调用关系。
6.根据权利要求5所述的识别方法,其特征在于,所述步骤S52包括以下子步骤:
S521、遍历所述函数关系表,判断所述任一函数是否只包含在一个类中,若是,执行步骤S522,若否,转至步骤S523;
S522、所述任一函数确定为被包含的类的成员函数;
S523、遍历所述任一函数所属类的类名,判断所述任一函数所属的类名是否与所述任一函数所属类中所包含的类的类名相同,若是,执行步骤S524,若否,转至步骤S525;
S524、所述任一函数确定为与其所属类中所包含的类名相同的类的成员函数;
S525、遍历所述任一函数所属类的父类,判断所述父类中是否包含与所述任一函数所属的类名相同的类,若是,执行步骤S526;
S526、所述任一函数确定为所述父类中包含与所述任一函数所属的类名相同的类的成员函数。
7.一种函数调用关系的识别装置,其特征在于,包括:
获取模块,用于获取开发框架类库中的每个类;
确定模块,用于依据所述每个类确定类继承关系;
建立模块,用于依据所述类继承关系确定每个类中包含的四种函数,建立函数关系表,其中,四种函数分别为类自定义函数、协议函数、实例函数及分类函数;
去除模块,用于从所述四种函数中去除所述协议函数;
识别模块,用于识别任一函数的调用关系。
8.根据权利要求7所述的识别装置,其特征在于,每个类包括公有类、自定义类及系统类;所述获取模块包括:
第一获取子模块,用于根据所述开发框架中的头文件获取所述公有类;
第二获取子模块,用于反编译所述开发框架中的二进制文件,获取所述自定义类及系统类。
9.根据权利要求8所述的识别装置,其特征在于,所述建立模块还用于从所述二进制文件中,通过自定义字段获取所述类自定义函数,通过协议字段获取所述协议函数,通过实例字段获取所述实例函数,通过分类字段获取所述分类函数。
10.根据权利要求7所述的识别装置,其特征在于,所述识别模块包括:
判断模块,用于判断所述任一函数是否被调用;
调用关系识别模块,用于识别所述任一函数的调用关系;其中,所述调用关系识别模块包括:
第一遍历模块,用于遍历所述函数关系表,判断所述任一函数是否只包含在一个类中;
第一确定模块,用于所述任一函数确定为被包含的类的成员函数;
第二遍历模块,用于遍历所述任一函数所属类的类名,判断所述任一函数所属的类名是否与所述任一函数所属类中所包含的类的类名相同;
第二确定模块,用于所述任一函数确定为与其所属类中所包含的类名相同的类的成员函数;
第三遍历模块,用于遍历所述任一函数所属类的父类,判断所述父类中是否包含与所述任一函数所属的类名相同的类,若是,执行步骤S526;
第三确定模块,用于所述任一函数确定为所述父类中包含与所述任一函数所属的类名相同的类的成员函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410675750.9A CN105677311B (zh) | 2014-11-21 | 2014-11-21 | 一种函数调用关系的识别方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410675750.9A CN105677311B (zh) | 2014-11-21 | 2014-11-21 | 一种函数调用关系的识别方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105677311A true CN105677311A (zh) | 2016-06-15 |
CN105677311B CN105677311B (zh) | 2019-03-29 |
Family
ID=56958247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410675750.9A Active CN105677311B (zh) | 2014-11-21 | 2014-11-21 | 一种函数调用关系的识别方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677311B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920217A (zh) * | 2018-03-30 | 2018-11-30 | 惠州市德赛西威汽车电子股份有限公司 | 一种减少不可重入函数的重构方法 |
CN109828796A (zh) * | 2019-01-17 | 2019-05-31 | 武汉精立电子技术有限公司 | 一种基于微内核架构的插件调用方法及装置 |
CN110032394A (zh) * | 2019-04-12 | 2019-07-19 | 深圳市腾讯信息技术有限公司 | 一种无源码文件的分析方法、装置和存储介质 |
CN110532070A (zh) * | 2018-05-24 | 2019-12-03 | 武汉斗鱼网络科技有限公司 | 用于方法调用的方法、存储介质、设备及系统 |
CN110659028A (zh) * | 2019-09-30 | 2020-01-07 | 北京达佳互联信息技术有限公司 | 数据处理系统、方法、装置、电子设备及存储介质 |
CN110750297A (zh) * | 2019-10-11 | 2020-02-04 | 南京大学 | 一种基于程序分析和文本分析的Python代码参考信息生成方法 |
CN111367752A (zh) * | 2018-12-26 | 2020-07-03 | 卓望数码技术(深圳)有限公司 | 识别Android真机和模拟器的方法、装置及存储介质 |
CN111723016A (zh) * | 2020-06-24 | 2020-09-29 | 湖南国科微电子股份有限公司 | 文件关闭方法、装置、电子设备和存储介质 |
CN112068883A (zh) * | 2020-07-31 | 2020-12-11 | 中国人民解放军战略支援部队信息工程大学 | 精简指令集下大型二进制固件参数个数识别方法 |
CN112527302A (zh) * | 2019-09-19 | 2021-03-19 | 北京字节跳动网络技术有限公司 | 错误检测的方法及装置、终端和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100037100A1 (en) * | 2006-09-25 | 2010-02-11 | Typemock Ltd. | Method and system for isolating software components |
CN101894064A (zh) * | 2009-05-21 | 2010-11-24 | 北京邮电大学 | 应用跨函数分析的软件测试方法 |
CN103336760A (zh) * | 2013-07-11 | 2013-10-02 | 北京信息科技大学 | 一种基于逆向工程自动生成软件文档的方法及装置 |
CN103559094A (zh) * | 2013-11-20 | 2014-02-05 | 无锡儒安科技有限公司 | 一种对移动终端的资源进行管理的方法 |
CN103577324A (zh) * | 2013-10-30 | 2014-02-12 | 北京邮电大学 | 移动应用中隐私信息泄露的静态检测方法 |
-
2014
- 2014-11-21 CN CN201410675750.9A patent/CN105677311B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100037100A1 (en) * | 2006-09-25 | 2010-02-11 | Typemock Ltd. | Method and system for isolating software components |
CN101894064A (zh) * | 2009-05-21 | 2010-11-24 | 北京邮电大学 | 应用跨函数分析的软件测试方法 |
CN103336760A (zh) * | 2013-07-11 | 2013-10-02 | 北京信息科技大学 | 一种基于逆向工程自动生成软件文档的方法及装置 |
CN103577324A (zh) * | 2013-10-30 | 2014-02-12 | 北京邮电大学 | 移动应用中隐私信息泄露的静态检测方法 |
CN103559094A (zh) * | 2013-11-20 | 2014-02-05 | 无锡儒安科技有限公司 | 一种对移动终端的资源进行管理的方法 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920217A (zh) * | 2018-03-30 | 2018-11-30 | 惠州市德赛西威汽车电子股份有限公司 | 一种减少不可重入函数的重构方法 |
CN108920217B (zh) * | 2018-03-30 | 2021-12-03 | 惠州市德赛西威汽车电子股份有限公司 | 一种减少不可重入函数的重构方法 |
CN110532070A (zh) * | 2018-05-24 | 2019-12-03 | 武汉斗鱼网络科技有限公司 | 用于方法调用的方法、存储介质、设备及系统 |
CN110532070B (zh) * | 2018-05-24 | 2022-02-18 | 武汉斗鱼网络科技有限公司 | 用于方法调用的方法、存储介质、设备及系统 |
CN111367752A (zh) * | 2018-12-26 | 2020-07-03 | 卓望数码技术(深圳)有限公司 | 识别Android真机和模拟器的方法、装置及存储介质 |
CN111367752B (zh) * | 2018-12-26 | 2023-08-01 | 卓望数码技术(深圳)有限公司 | 识别Android真机和模拟器的方法、装置及存储介质 |
CN109828796B (zh) * | 2019-01-17 | 2022-04-15 | 武汉精立电子技术有限公司 | 一种基于微内核架构的插件调用方法及装置 |
CN109828796A (zh) * | 2019-01-17 | 2019-05-31 | 武汉精立电子技术有限公司 | 一种基于微内核架构的插件调用方法及装置 |
CN110032394A (zh) * | 2019-04-12 | 2019-07-19 | 深圳市腾讯信息技术有限公司 | 一种无源码文件的分析方法、装置和存储介质 |
CN110032394B (zh) * | 2019-04-12 | 2022-05-31 | 深圳市腾讯信息技术有限公司 | 一种无源码文件的分析方法、装置和存储介质 |
CN112527302B (zh) * | 2019-09-19 | 2024-03-01 | 北京字节跳动网络技术有限公司 | 错误检测的方法及装置、终端和存储介质 |
CN112527302A (zh) * | 2019-09-19 | 2021-03-19 | 北京字节跳动网络技术有限公司 | 错误检测的方法及装置、终端和存储介质 |
CN110659028A (zh) * | 2019-09-30 | 2020-01-07 | 北京达佳互联信息技术有限公司 | 数据处理系统、方法、装置、电子设备及存储介质 |
CN110659028B (zh) * | 2019-09-30 | 2023-02-28 | 北京达佳互联信息技术有限公司 | 数据处理系统、方法、装置、电子设备及存储介质 |
CN110750297A (zh) * | 2019-10-11 | 2020-02-04 | 南京大学 | 一种基于程序分析和文本分析的Python代码参考信息生成方法 |
CN111723016A (zh) * | 2020-06-24 | 2020-09-29 | 湖南国科微电子股份有限公司 | 文件关闭方法、装置、电子设备和存储介质 |
CN111723016B (zh) * | 2020-06-24 | 2024-06-04 | 湖南国科微电子股份有限公司 | 文件关闭方法、装置、电子设备和存储介质 |
CN112068883A (zh) * | 2020-07-31 | 2020-12-11 | 中国人民解放军战略支援部队信息工程大学 | 精简指令集下大型二进制固件参数个数识别方法 |
CN112068883B (zh) * | 2020-07-31 | 2022-10-11 | 中国人民解放军战略支援部队信息工程大学 | 精简指令集下大型二进制固件参数个数识别方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105677311B (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105677311A (zh) | 一种函数调用关系的识别方法及装置 | |
CN103136471B (zh) | 一种恶意Android应用程序检测方法和系统 | |
CN106886567B (zh) | 基于语义扩展的微博突发事件检测方法及装置 | |
CN104899016B (zh) | 调用堆栈关系获取方法及装置 | |
CN104462979A (zh) | 一种应用程序的自动化动态检测方法及装置 | |
CN109714356A (zh) | 一种异常域名的识别方法、装置及电子设备 | |
CN103838754A (zh) | 信息搜索装置及方法 | |
CN107679213A (zh) | 一种习题搜索方法、系统及终端设备 | |
CN108055166B (zh) | 一种嵌套的应用层协议的状态机提取系统及其提取方法 | |
CN106844182A (zh) | 用于记录用户行为的方法、系统及移动终端 | |
CN108646968A (zh) | 一种基于图像分析重现场景的方法及系统 | |
CN107608685A (zh) | 安卓应用的自动执行方法 | |
CN103902906A (zh) | 基于应用图标的移动终端恶意代码检测方法及系统 | |
CN106301975A (zh) | 一种数据检测方法及其装置 | |
CN110147223A (zh) | 组件库的生成方法、装置及设备 | |
CN106294401A (zh) | 自动建立sql名单库的方法及装置 | |
CN109450853B (zh) | 恶意网站判定方法、装置、终端及服务器 | |
CN103559094B (zh) | 一种对移动终端的资源进行管理的方法 | |
CN109995605B (zh) | 一种流量识别方法、装置以及计算机可读存储介质 | |
CN105160250A (zh) | 一种apk应用软件通信行为的动态分析方法及装置 | |
CN105700866A (zh) | Rte代码生成方法及其执行装置 | |
CN103902895A (zh) | 僵尸网络控制协议挖掘方法和装置 | |
CN109359295A (zh) | 自然语言的语义解析方法、装置、计算机设备和存储介质 | |
CN103778210A (zh) | 一种待分析文件的文件具体类型的判断方法及装置 | |
CN111190813B (zh) | 基于自动化测试的安卓应用网络行为信息提取系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |