CN105446741A - 一种基于api比对的移动应用程序辨识方法 - Google Patents

一种基于api比对的移动应用程序辨识方法 Download PDF

Info

Publication number
CN105446741A
CN105446741A CN201510908952.8A CN201510908952A CN105446741A CN 105446741 A CN105446741 A CN 105446741A CN 201510908952 A CN201510908952 A CN 201510908952A CN 105446741 A CN105446741 A CN 105446741A
Authority
CN
China
Prior art keywords
mobile applications
api
identified
application
bpi
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
Application number
CN201510908952.8A
Other languages
English (en)
Other versions
CN105446741B (zh
Inventor
李祺
谷杰铭
郭燕慧
冯卉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN201510908952.8A priority Critical patent/CN105446741B/zh
Publication of CN105446741A publication Critical patent/CN105446741A/zh
Application granted granted Critical
Publication of CN105446741B publication Critical patent/CN105446741B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开了一种基于API比对的移动应用程序辨识方法,步骤如下:一、针对同名的移动应用程序A和待辨识移动应用程序B,应用反编译引擎分别生成反编译代码;二、分别遍历并统计反编译代码中应用程序的API数量和调用频数;三、分别构造API特征向量作为标识信息;四、根据标识信息计算两个移动应用程序的特征距离D;五、判断两个移动应用程序的API数量是否相同,如果是,当特征距离D大于100时为伪造程序;否则合格。当两个移动应用程序的API数量不同时,判断特征距离D大于130时为伪造程序;否则合格。优点为:全部由应用程序本身代码信息生成,没有人工主观成分参与,通过特征距离来判断相似应用程序具有客观正确性。

Description

一种基于API比对的移动应用程序辨识方法
技术领域
本发明涉及移动应用程序辨识技术,具体涉及一种基于API比对的移动应用程序辨识方法。
背景技术
近几年来,随着移动互联网和智能终端的飞速发展,移动应用程序的数量呈指数性增长。在智能终端应用程序领域中,作为连接应用程序与用户的渠道-国内第三方应用市场已大量涌现,并呈现井喷式增长的局面。程序上架审核机制不完善等一系列原因导致了国内第三方应用程序繁多、混杂、虚假信息和同质化,甚至一些开发者为了获取不当利益,将其应用程序伪装成流行应用程序诱使用户下载安装;所以,应用程序的安全性无法保证,常常有用户下载到与官方程序外观一致或同名的应用程序并安装使用,本身可能是恶意程序,从而使用户产生困扰,甚至损害了用户的利益。移动智能终端应用程序真伪辨识成为迫切需求,但是对于庞大的移动应用程序量,真伪辨识很困难。
目前,辨识移动智能终端应用程序真伪的方法是通过计算两个应用程序的特征距离得出,特征距离由应用程序标识信息计算生成,标识信息是基于应用程序的特征API提取生成。
传统的移动应用程序标识方法有:基于描述信息的标识方法,基于消息摘要第五版算法(Message-DigestAlgorithm5,MD5)的标识方法,基于AST的标识方法等;基于应用名称及开发者提供的应用文本描述来进行分类,需要进行长时间的人工审核和分析,在效率和精度上面,存在一定的缺陷。
而且,基于描述信息的标识方法,开发者提供的应用信息提交到应用商店后,需要进行多方面的审核,对标识信息进行核对;目前大多数应用商店对描述信息核对方法为人工确认,人工参与度高,工作量大,不仅效率低,而且存在过多的人为主观因素,对于开发者提供虚假恶意应用信息情况与审核人员工作结果不正确的情况无法控制。
基于MD5摘要的标识方法,虽然从客观上唯一的标识了应用程序,但是此种方法携带的信息量仅仅为应用程序文件本身,没有类别、软件语义、程序功能等方面信息,无法满足标识需求。同时,由于改动应用程序任意部分都会造成程序的MD5值不同。所以无法符合应用程序识别真伪的需求。
基于AST的标识方法,携带了应用程序的所有语义信息,信息量齐全。但是,AST的生成耗费计算成本非常大,其大小往往是应用程序本身的数倍甚至数十倍大小,存储成本巨大。进而,遍历AST所需要的计算成本更大,所以,此方法的代价较大。
由此可见,上述传统的程序标识方法存在客观正确性不足、效率低、信息量低或者运算复杂度高、运算开销大等问题。因此,通过传统手段比对应用程序之间的标识信息无法满足现有大量应用程序的真伪辨识需求。
发明内容
本发明针对现有移动应用程序面临的虚假信息、剽窃等问题,提出了一种基于API比对的移动应用程序辨识方法,具体步骤如下:
步骤一、针对同名的移动应用程序A和待辨识移动应用程序B,应用反编译引擎分别生成反编译代码。
将两个移动应用程序分别输入到反编译引擎进行应用程序包分解,将包中二进制代码或字节码反编译为类似于源码的中间语言,生成反编译代码。
步骤二、分别遍历并统计反编译代码中应用程序的API数量和调用频数;
根据统计结果应用程序的API数量和调用频数分为以下三种情况:
(1)、移动应用程序A和待辨识移动应用程序B的应用程序API数量相同,都为n个;构建移动应用程序A的API集合为{API1,API2,...,APIi,...APIn};构建待辨识移动应用程序B的API集合为{BPI1,BPI2,...,BPIi,...BPIn};
移动应用程序A调用频数集合为{AI1,AI2,...,AIi...,AIn};待辨识移动应用程序B调用频数集合为{BI1,BI2,...,BIi,...BIn};AIi表示移动应用程序A中第i个API的调用频数,BIi表示待辨识移动应用程序B中第i个API的调用频数。
(2)、移动应用程序A和待辨识移动应用程序B的应用程序API数量不同,移动应用程序A的API数量为n个,待辨识移动应用程序B的API数量为m个,且n≠m,n>m;构建移动应用程序A的API集合为{API1,API2,...,APIi,...APIn};构建待辨识移动应用程序B的API集合为{BPI1,BPI2,...,BPIi,...,BPIm,BPIm+1,...BPIn};
移动应用程序A调用频数集合为{AI1,AI2,...,AIi...,AIn};待辨识移动应用程序B调用频数集合为{BI1,BI2,...,BIi,...,BIm,...BIm+1,...BIn};AIi表示移动应用程序A中第i个API的调用频数,BIi表示待辨识移动应用程序B中第i个API的调用频数。因为待辨识移动应用程序B中并没有{BPIm+1,...BPIn},为了与移动应用程序A相对应,将BPIm+1,...BPIn的所有值均设为0。同理,将待辨识移动应用程序B调用频数BIm+1,...BIn的所有值均设为0;
(3)、移动应用程序A和待辨识移动应用程序B的应用程序API数量不同,移动应用程序A的API数量为n个,待辨识移动应用程序B的API数量为m个,且n≠m,n<m;
构建移动应用程序A的API集合为{API1,API2,...,APIi,...APIn,APIn+1,...APIm};构建待辨识移动应用程序B的API集合为{BPI1,BPI2,...,BPIi,...,BPIm};
移动应用程序A调用频数集合为{AI1,AI2,...,AIi...,AIn,AIn+1,...AIm};待辨识移动应用程序B调用频数集合为{BI1,BI2,...,BIi,...,BIm};AIi表示移动应用程序A中第i个API的调用频数,BIi表示待辨识移动应用程序B中第i个API的调用频数。因为移动应用程序A中并没有{APIn+1,...APIm},为了与待辨识移动应用程序B相对应,将APIn+1,...APIm的所有值均设为0。同理,将移动应用程序A调用频数AIn+1,...AIm的所有值均设为0。
步骤三、根据移动应用程序的API集合和调用频数集合构造API特征向量作为标识信息;
(1)、当移动应用程序A和待辨识移动应用程序B的应用程序API数量相同时,移动应用程序A的标识信息为A=〈A1,A2,...Ai,...An〉;待辨识移动应用程序B的标识信息为B=〈B1,B2,...Bi,...Bn〉;其中Ai={APIi,AIi},Bi={BPIi,BIi}。
(2)、当移动应用程序A和待辨识移动应用程序B的应用程序API分别为n和m时,且n≠m,n>m;移动应用程序A的标识信息为A=〈A1,A2,...Ai,...An〉;
待辨识移动应用程序B的标识信息为B=〈B1,B2,...,Bm,0,...0〉;
其中Ai={APIi,AIi},Bi={BPIi,BIi}。
(3)、当移动应用程序A和待辨识移动应用程序B的应用程序API分别为n和m时,且n≠m,n<m;移动应用程序A的标识信息为A=〈A1,A2,...Ai,...An,0,...0〉;
待辨识移动应用程序B的标识信息为B=〈B1,B2,...,Bm〉;
其中Ai={APIi,AIi},Bi={BPIi,BIi}。
步骤四、根据标识信息计算两个移动应用程序的特征距离D;
(1)、当移动应用程序A和待辨识移动应用程序B的应用程序API数量相同时,特征距离D计算如下:
D ( A - B ) = &Sigma; i = 1 i = n | A i - B i | = &Sigma; i = 1 i = n | AI i - BI i |
(2)、当移动应用程序A和待辨识移动应用程序B的应用程序API分别为n和m时,且n≠m,n>m;特征距离D计算如下:
D ( A - B ) = &Sigma; i = 1 i = n | A i - B i | = &Sigma; i = 1 i = m | AI i - BI i | + &Sigma; i = m + 1 i = n | AI i - 0 |
(3)、当移动应用程序A和待辨识移动应用程序B的应用程序API分别为n和m时,且n≠m,n<m;特征距离D计算如下:
D ( A - B ) = &Sigma; i = 1 i = m | A i - B i | = &Sigma; i = 1 i = n | AI i - BI i | + &Sigma; i = n + 1 i = m | 0 - BI i |
步骤五、判断移动应用程序A和待辨识移动应用程序B的应用程序API数量是否相同,如果是,进入步骤六,否则,进入步骤七;
步骤六、继续判断特征距离D是否大于100,如果是,待辨识移动应用程序B为伪造程序;否则待辨识移动应用程序B是合格程序。
步骤七、当移动应用程序A和待辨识移动应用程序B的应用程序API数量不同时,继续判断特征距离D是否大于130,如果是,待辨识移动应用程序B为伪造程序;否则待辨识移动应用程序B是合格程序。
本发明的优点在于:
1)、一种基于API比对的移动应用程序辨识方法,全部由应用程序本身代码信息生成,没有人工主观成分参与,通过特征距离来判断相似应用程序具有客观正确性。
2)、一种基于API比对的移动应用程序辨识方法,标识信息采用API特征向量构成,属于轻量级的信息,分析成本较小,构建过程全自动,无需人工参与,具备效率高特点。
3)、一种基于API比对的移动应用程序辨识方法,标识信息包含了应用程序标识、快速辨别真伪所需的所有信息量,所以,具备信息量高的特点。
4)、一种基于API比对的移动应用程序辨识方法,相比于其他辨识方法,本发明不仅可以进行应用程序真伪识别,同时支持反剽窃、重打包等进一步的分析工作,使用范围广泛。
附图说明
图1是本发明基于API比对的移动应用程序辨识方法的模型结构图;
图2是本发明基于API比对的移动应用程序辨识方法流程图。
具体实施方式
下面将结合附图对本发明作进一步的详细说明。
本文发明一种基于API比对的移动应用程序辨识方法,通过对移动智能终端应用程序进行反编译分析,提取移动应用程序的API调用频数,得到特定API的统计数据,构建API特征向量并作为移动应用程序的标识信息,通过标识信息计算待检测移动应用程序的特征距离。当遇到同名移动应用程序时,通过计算两个移动应用程序的特征距离,继而辨识待检测的同名移动应用程序是该移动应用程序的升级版本还是伪造程序,解决了移动应用程序面临的虚假信息、剽窃等问题。
如图1所示,本发明基于应用分析模块和应用辨识模块实现。应用分析模块包括应用反编译单元和API特征提取单元。应用辨识模块包括标识信息生成单元和特征距离计算单元。
首先,应用分析模块将移动应用程序A和待辨识移动应用程序B进行分析处理,统计API数量和调用频数;具体为:将移动应用程序A和待辨识移动应用程序B输入应用反编译单元,进行反编译处理,得到类似于应用程序源代码的中间语言反编译代码。API特征提取单元对所有的反编译代码文件进行遍历操作,统计移动应用程序中API数量和调用频数,并送入应用辨识模块。
其次,应用辨识模块根据传入的API数量和调用频数构造API特征向量作为标识信息,利用标识信息计算移动应用程序A和待辨识移动应用程序B的特征距离来辨识待辨识应用程序B的真伪性。
具体为:标识信息生成单元以API的调用频数为特征值,生成基于API特征向量,即为标识信息,并传输给特征距离计算单元,通过移动应用程序A和待辨识移动应用程序B的标识信息计算特征距离,对特征距离进行判断,生成辨识结果。
具体步骤如下:
步骤一、针对同名的移动应用程序A和待辨识移动应用程序B,应用反编译引擎分别生成反编译代码。
将两个移动应用程序分别输入到应用分析模块中,由应用反编译单元中反编译引擎进行应用程序包分解,将包中二进制代码或字节码反编译为类似于源码的中间语言,生成反编译代码。
步骤二、分别遍历并统计反编译代码中应用程序的API数量和调用频数;
API特征提取单元统计移动应用程序A和待辨识移动应用程序B的应用程序API数量,并构建移动应用程序的API集合。
根据统计结果应用程序的API数量和调用频数分为以下三种情况:
(1)、移动应用程序A和待辨识移动应用程序B的应用程序API数量相同,都为n个,n为API的数量;
构建移动应用程序A的API集合为{API1,API2,...,APIi,...APIn};
构建待辨识移动应用程序B的API集合为{BPI1,BPI2,...,BPIi,...BPIn};
同时API特征提取单元对所有的反编译代码文件进行遍历操作,对反编译代码中API集合进行统计,得到移动应用程序A和待辨识移动应用程序B的调用频数:
移动应用程序A调用频数集合为{AI1,AI2,...,AIi...,AIn};
待辨识移动应用程序B调用频数集合为{BI1,BI2,...,BIi,...BIn};
AIi表示移动应用程序A中第i个API的调用频数,BIi表示构建移动应用程序B中第i个API的调用频数。
(2)、移动应用程序A和待辨识移动应用程序B的应用程序API数量不同,移动应用程序A的API数量为n个,待辨识移动应用程序B的API数量为m个,且n≠m,n>m;n、m分别为整数;
构建移动应用程序A的API集合为{API1,API2,...,APIi,...APIn};构建待辨识移动应用程序B的API集合为{BPI1,BPI2,...,BPIi,...,BPIm,BPIm+1,...BPIn};
同时API特征提取单元对所有的反编译代码文件进行遍历操作,对反编译代码中API集合进行统计,得到移动应用程序A和待辨识移动应用程序B的调用频数:
移动应用程序A调用频数集合为{AI1,AI2,...,AIi...,AIn};待辨识移动应用程序B调用频数集合为{BI1,BI2,...,BIi,...,BIm,...BIm+1,...BIn};AIi表示移动应用程序A中第i个API的调用频数,BIi表示待辨识移动应用程序B中第i个API的调用频数。因为待辨识移动应用程序B中并没有{BPIm+1,...BPIn},为了与移动应用程序A相对应,将BPIm+1,...BPIn的所有值均设为0。同理,将待辨识移动应用程序B调用频数BIm+1,...BIn的所有值均设为0;
(3)、移动应用程序A和待辨识移动应用程序B的应用程序API数量不同,移动应用程序A的API数量为n个,待辨识移动应用程序B的API数量为m个,且n≠m,n<m;
构建移动应用程序A的API集合为{API1,API2,...,APIi,...APIn,APIn+1,...APIm};构建待辨识移动应用程序B的API集合为{BPI1,BPI2,...,BPIi,...,BPIm};
同时API特征提取单元对所有的反编译代码文件进行遍历操作,对反编译代码中API集合进行统计,得到移动应用程序A和待辨识移动应用程序B的调用频数:
移动应用程序A调用频数集合为{AI1,AI2,...,AIi...,AIn,AIn+1,...AIm};待辨识移动应用程序B调用频数集合为{BI1,BI2,...,BIi,...,BIm};AIi表示移动应用程序A中第i个API的调用频数,BIi表示待辨识移动应用程序B中第i个API的调用频数。因为移动应用程序A中并没有{APIn+1,...APIm},为了与待辨识移动应用程序B相对应,将APIn+1,...APIm的所有值均设为0。同理,将移动应用程序A调用频数AIn+1,...AIm的所有值均设为0。
步骤三、根据移动应用程序的API集合和调用频数集合构造API特征向量作为标识信息;
应用辨识模块接收应用分析模块传来的数据,标识信息生成单元生成移动应用程序A和待辨识移动应用程序B的标识信息;
(1)、当移动应用程序A和待辨识移动应用程序B的应用程序API数量相同时,移动应用程序A的标识信息为A=〈A1,A2,...Ai,...An〉;待辨识移动应用程序B的标识信息为B=〈B1,B2,...Bi,...Bn〉;其中Ai={APIi,AIi},Bi={BPIi,BIi}。
(2)、当移动应用程序A和待辨识移动应用程序B的应用程序API分别为n和m时,且n≠m,n>m;移动应用程序A的标识信息为A=〈A1,A2,...Ai,...An〉;
待辨识移动应用程序B的标识信息为B=〈B1,B2,...,Bm,0,...0〉;
其中Ai={APIi,AIi},Bi={BPIi,BIi}。
(3)、当移动应用程序A和待辨识移动应用程序B的应用程序API分别为n和m时,且n≠m,n<m;移动应用程序A的标识信息为A=〈A1,A2,...Ai,...An,0,...0〉;
待辨识移动应用程序B的标识信息为B=〈B1,B2,...,Bm〉;
其中Ai={APIi,AIi},Bi={BPIi,BIi}。
步骤四、根据标识信息计算两个移动应用的特征距离D;
特征距离计算单元根据移动应用程序A的标识信息APIi和待辨识移动应用程序B的标识信息BPIi进行以一对应,然后利用调用频数相减计算特征距离D;
(1)、当移动应用程序A和待辨识移动应用程序B的应用程序API数量相同时,特征距离D计算如下:
D ( A - B ) = &Sigma; i = 1 i = n | A i - B i | = &Sigma; i = 1 i = n | AI i - BI i |
(2)、当移动应用程序A和待辨识移动应用程序B的应用程序API分别为n和m时,且n≠m,n>m;特征距离D计算如下:
D ( A - B ) = &Sigma; i = 1 i = n | A i - B i | = &Sigma; i = 1 i = m | AI i - BI i | + &Sigma; i = m + 1 i = n | AI i - 0 |
(3)、当移动应用程序A和待辨识移动应用程序B的应用程序API分别为n和m时,且n≠m,n<m;特征距离D计算如下:
D ( A - B ) = &Sigma; i = 1 i = m | A i - B i | = &Sigma; i = 1 i = n | AI i - BI i | + &Sigma; i = n + 1 i = m | 0 - BI i |
步骤五、判断移动应用程序A和待辨识移动应用程序B的应用程序API数量是否相同,如果是,进入步骤六,否则,进入步骤七;
步骤六、继续判断特征距离D是否大于100,如果是,待辨识移动应用程序B为伪造程序;否则待辨识移动应用程序B是合格程序。
步骤七、当移动应用程序A和待辨识移动应用程序B的应用程序API数量不同时,继续判断特征距离D是否大于130,如果是,待辨识移动应用程序B为伪造程序;否则待辨识移动应用程序B是合格程序。
具体实施例:
1)、将本发明应用到国内各大应用商店进行应用审查,通过使用基于API比对的移动应用程序辨识方法,国内各大应用商店可以对其移动应用程序库中的移动应用程序进行自动化辨识,快速高效地辨别相似移动应用程序的真伪性,能够有效的解决用户下载伪装移动应用程序的问题,并且能够起到监督修正人工审核结果的功能。
2)、开发者使用本发明对移动应用程序反剽窃进行检测,通过基于API比对的移动应用程序辨识方法,开发者对其移动应用程序遭受剽窃、重打包的问题,可以通过计算相关移动应用程序的特征距离进行辨识分析。若特征距离为0,有理由认为两个移动应用程序存在重打包问题;若特征距离在10以内,有理由认为两个移动应用程序存在剽窃问题。
本发明通过移动应用程序的标识信息计算得出特征距离,数据真实,利用特征距离来辨识移动应用程序的真伪过程简洁有效。

Claims (3)

1.一种基于API比对的移动应用程序辨识方法,其特征在于,具体步骤如下:
步骤一、针对同名的移动应用程序A和待辨识移动应用程序B,应用反编译引擎分别生成反编译代码;
步骤二、分别遍历并统计反编译代码中应用程序的API数量和调用频数;
根据统计结果应用程序的API数量和调用频数分为以下三种情况:
(1)、移动应用程序A和待辨识移动应用程序B的应用程序API数量相同,都为n个;构建移动应用程序A的API集合为{API1,API2,...,APIi,...APIn};构建待辨识移动应用程序B的API集合为{BPI1,BPI2,...,BPIi,...BPIn};
移动应用程序A调用频数集合为{AI1,AI2,...,AIi...,AIn};待辨识移动应用程序B调用频数集合为{BI1,BI2,...,BIi,...BIn};AIi表示移动应用程序A中第i个API的调用频数,BIi表示待辨识移动应用程序B中第i个API的调用频数;
(2)、移动应用程序A和待辨识移动应用程序B的应用程序API数量不同,移动应用程序A的API数量为n个,待辨识移动应用程序B的API数量为m个,且n≠m,n>m;构建移动应用程序A的API集合为{API1,API2,...,APIi,...APIn};构建待辨识移动应用程序B的API集合为{BPI1,BPI2,...,BPIi,...,BPIm,BPIm+1,...BPIn};
移动应用程序A调用频数集合为{AI1,AI2,...,AIi...,AIn};待辨识移动应用程序B调用频数集合为{BI1,BI2,...,BIi,...,BIm,...BIm+1,...BIn};AIi表示移动应用程序A中第i个API的调用频数,BIi表示待辨识移动应用程序B中第i个API的调用频数;将BPIm+1,...BPIn的所有值均设为0;、将待辨识移动应用程序B调用频数BIm+1,...BIn的所有值均设为0;
(3)、移动应用程序A和待辨识移动应用程序B的应用程序API数量不同,移动应用程序A的API数量为n个,待辨识移动应用程序B的API数量为m个,且n≠m,n<m;
构建移动应用程序A的API集合为{API1,API2,...,APIi,...APIn,APIn+1,...APIm};构建待辨识移动应用程序B的API集合为{BPI1,BPI2,...,BPIi,...,BPIm};
移动应用程序A调用频数集合为{AI1,AI2,...,AIi...,AIn,AIn+1,...AIm};待辨识移动应用程序B调用频数集合为{BI1,BI2,...,BIi,...,BIm};AIi表示移动应用程序A中第i个API的调用频数,BIi表示待辨识移动应用程序B中第i个API的调用频数;将APIn+1,...APIm的所有值均设为0;将移动应用程序A调用频数AIn+1,...AIm的所有值均设为0;
步骤三、根据移动应用程序的API集合和调用频数集合构造API特征向量作为标识信息;
(1)、当移动应用程序A和待辨识移动应用程序B的应用程序API数量相同时,移动应用程序A的标识信息为A=〈A1,A2,...Ai,...An〉;待辨识移动应用程序B的标识信息为B=〈B1,B2,...Bi,...Bn〉;其中Ai={APIi,AIi},Bi={BPIi,BIi};
(2)、当移动应用程序A和待辨识移动应用程序B的应用程序API分别为n和m时,且n≠m,n>m;移动应用程序A的标识信息为A=〈A1,A2,...Ai,...An〉;
待辨识移动应用程序B的标识信息为B=〈B1,B2,...,Bm,0,...0〉;
其中Ai={APIi,AIi},Bi={BPIi,BIi};
(3)、当移动应用程序A和待辨识移动应用程序B的应用程序API分别为n和m时,且n≠m,n<m;移动应用程序A的标识信息为A=〈A1,A2,...Ai,...An,0,...0〉;
待辨识移动应用程序B的标识信息为B=〈B1,B2,...,Bm〉;
其中Ai={APIi,AIi},Bi={BPIi,BIi};
步骤四、根据标识信息计算两个移动应用程序的特征距离D;
(1)、当移动应用程序A和待辨识移动应用程序B的应用程序API数量相同时,特征距离D计算如下:
D ( A - B ) = &Sigma; i = 1 i = n | A i - B i | = &Sigma; i = 1 i = n | AI i - BI i |
(2)、当移动应用程序A和待辨识移动应用程序B的应用程序API分别为n和m时,且n≠m,n>m;特征距离D计算如下:
D ( A - B ) = &Sigma; i = 1 i = n | A i - B i | = &Sigma; i = 1 i = m | AI i - BI i | + &Sigma; i = m + 1 i = n | AI i - 0 |
(3)、当移动应用程序A和待辨识移动应用程序B的应用程序API分别为n和m时,且n≠m,n<m;特征距离D计算如下:
D ( A - B ) = &Sigma; i = 1 i = m | A i - B i | = &Sigma; i = 1 i = n | AI i - BI i | + &Sigma; i = n + 1 i = m | 0 - BI i |
步骤五、判断移动应用程序A和待辨识移动应用程序B的应用程序API数量是否相同,如果是,进入步骤六,否则,进入步骤七;
步骤六、继续判断特征距离D是否大于100,如果是,待辨识移动应用程序B为伪造程序;否则待辨识移动应用程序B是合格程序;
步骤七、当移动应用程序A和待辨识移动应用程序B的应用程序API数量不同时,继续判断特征距离D是否大于130,如果是,待辨识移动应用程序B为伪造程序;否则待辨识移动应用程序B是合格程序。
2.如权利要求1所述的一种基于API比对的移动应用程序辨识方法,其特征在于,所述步骤一具体为:将两个移动应用程序分别输入到反编译引擎进行应用程序包分解,将包中二进制代码或字节码反编译为类似于源码的中间语言,生成反编译代码。
3.如权利要求1所述的一种基于API比对的移动应用程序辨识方法,其特征在于,该方法基于应用分析模块和应用辨识模块实现;应用分析模块包括应用反编译单元和API特征提取单元,应用辨识模块包括标识信息生成单元和特征距离计算单元;
首先,应用分析模块将移动应用程序A和待辨识移动应用程序B进行分析处理,统计API数量和调用频数;具体为:将移动应用程序A和待辨识移动应用程序B输入应用反编译单元,进行反编译处理,得到类似于应用程序源代码的中间语言反编译代码;API特征提取单元对所有的反编译代码文件进行遍历操作,统计移动应用程序中API数量和调用频数,并送入应用辨识模块;
其次,应用辨识模块根据传入的API数量和调用频数构造API特征向量作为标识信息,利用标识信息计算移动应用程序A和待辨识移动应用程序B的特征距离来辨识待辨识应用程序B的真伪性;
具体为:标识信息生成单元以API的调用频数为特征值,生成基于API特征向量,即为标识信息,并传输给特征距离计算单元,通过移动应用程序A和待辨识移动应用程序B的标识信息计算特征距离,对特征距离进行判断,生成辨识结果。
CN201510908952.8A 2015-12-10 2015-12-10 一种基于api比对的移动应用程序辨识方法 Active CN105446741B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510908952.8A CN105446741B (zh) 2015-12-10 2015-12-10 一种基于api比对的移动应用程序辨识方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510908952.8A CN105446741B (zh) 2015-12-10 2015-12-10 一种基于api比对的移动应用程序辨识方法

Publications (2)

Publication Number Publication Date
CN105446741A true CN105446741A (zh) 2016-03-30
CN105446741B CN105446741B (zh) 2018-09-28

Family

ID=55556988

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510908952.8A Active CN105446741B (zh) 2015-12-10 2015-12-10 一种基于api比对的移动应用程序辨识方法

Country Status (1)

Country Link
CN (1) CN105446741B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106339631A (zh) * 2016-08-26 2017-01-18 北京邮电大学 基于Android的恶意积分墙的检测方法及装置
CN106569947A (zh) * 2016-11-01 2017-04-19 北京大学(天津滨海)新代信息技术研究院 一种从单元测试代码中提取api使用示例的方法与工具
CN108363671A (zh) * 2018-02-07 2018-08-03 中国平安人寿保险股份有限公司 一种接口切换的方法、终端设备及存储介质
CN109858249A (zh) * 2019-02-18 2019-06-07 暨南大学 移动恶意软件大数据的快速智能比对和安全检测方法
CN110443050A (zh) * 2019-07-26 2019-11-12 武汉天喻软件股份有限公司 一种文件透明加解密系统中的伪造进程的处理方法和系统
CN110515842A (zh) * 2019-08-09 2019-11-29 苏州浪潮智能科技有限公司 一种程序调试方法、装置及电子设备和存储介质
CN112348104A (zh) * 2020-11-17 2021-02-09 百度在线网络技术(北京)有限公司 仿冒程序的识别方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8145947B1 (en) * 2006-09-29 2012-03-27 Emc Corporation User customizable CVFS namespace
CN103136471A (zh) * 2011-11-25 2013-06-05 中国科学院软件研究所 一种恶意Android应用程序检测方法和系统
CN103500307A (zh) * 2013-09-26 2014-01-08 北京邮电大学 一种基于行为模型的移动互联网恶意应用软件检测方法
CN103927483A (zh) * 2014-04-04 2014-07-16 西安电子科技大学 用于检测恶意程序的判定模型及恶意程序的检测方法
CN104391798A (zh) * 2014-12-09 2015-03-04 北京邮电大学 一种软件特征信息的提取方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8145947B1 (en) * 2006-09-29 2012-03-27 Emc Corporation User customizable CVFS namespace
CN103136471A (zh) * 2011-11-25 2013-06-05 中国科学院软件研究所 一种恶意Android应用程序检测方法和系统
CN103500307A (zh) * 2013-09-26 2014-01-08 北京邮电大学 一种基于行为模型的移动互联网恶意应用软件检测方法
CN103927483A (zh) * 2014-04-04 2014-07-16 西安电子科技大学 用于检测恶意程序的判定模型及恶意程序的检测方法
CN104391798A (zh) * 2014-12-09 2015-03-04 北京邮电大学 一种软件特征信息的提取方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106339631A (zh) * 2016-08-26 2017-01-18 北京邮电大学 基于Android的恶意积分墙的检测方法及装置
CN106569947A (zh) * 2016-11-01 2017-04-19 北京大学(天津滨海)新代信息技术研究院 一种从单元测试代码中提取api使用示例的方法与工具
CN108363671A (zh) * 2018-02-07 2018-08-03 中国平安人寿保险股份有限公司 一种接口切换的方法、终端设备及存储介质
CN108363671B (zh) * 2018-02-07 2020-01-14 中国平安人寿保险股份有限公司 一种接口切换的方法、终端设备及存储介质
CN109858249A (zh) * 2019-02-18 2019-06-07 暨南大学 移动恶意软件大数据的快速智能比对和安全检测方法
CN109858249B (zh) * 2019-02-18 2020-08-07 暨南大学 移动恶意软件大数据的快速智能比对和安全检测方法
CN110443050A (zh) * 2019-07-26 2019-11-12 武汉天喻软件股份有限公司 一种文件透明加解密系统中的伪造进程的处理方法和系统
CN110443050B (zh) * 2019-07-26 2021-02-09 武汉天喻软件股份有限公司 一种文件透明加解密系统中的伪造进程的处理方法和系统
CN110515842A (zh) * 2019-08-09 2019-11-29 苏州浪潮智能科技有限公司 一种程序调试方法、装置及电子设备和存储介质
CN110515842B (zh) * 2019-08-09 2022-11-11 苏州浪潮智能科技有限公司 一种程序调试方法、装置及电子设备和存储介质
CN112348104A (zh) * 2020-11-17 2021-02-09 百度在线网络技术(北京)有限公司 仿冒程序的识别方法、装置、设备及存储介质
CN112348104B (zh) * 2020-11-17 2023-08-18 百度在线网络技术(北京)有限公司 仿冒程序的识别方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN105446741B (zh) 2018-09-28

Similar Documents

Publication Publication Date Title
CN105446741A (zh) 一种基于api比对的移动应用程序辨识方法
Zou et al. Smart contract development: Challenges and opportunities
He et al. Characterizing code clones in the ethereum smart contract ecosystem
Huang Hunting the ethereum smart contract: Color-inspired inspection of potential attacks
CN105989283B (zh) 一种识别病毒变种的方法及装置
Fredrikson et al. {ZØ}: An optimizing distributing {Zero-Knowledge} compiler
CN104123493A (zh) 应用程序的安全性检测方法和装置
CN109376534B (zh) 用于检测应用的方法和装置
CN113254934B (zh) 基于图匹配网络的二进制代码相似性检测方法及系统
CN112016138A (zh) 一种车联网自动化安全建模的方法、装置和电子设备
CN104361141A (zh) 软件标识库的建立方法
CN106411635A (zh) 一种实时协议的形式化分析及验证方法
CN108846292B (zh) 脱敏规则生成方法及装置
CN108475314A (zh) 使用递增简档分析的信息流跟踪
CN105468970B (zh) 一种基于防御网的Android应用程序防篡方法及系统
CN106446341A (zh) 一种基于进程代数的实时协议分析及验证系统
CN111753302A (zh) 检测代码漏洞的方法、装置、计算机可读介质及电子设备
CN106709350A (zh) 一种病毒检测方法及装置
CN110543783A (zh) 一种投票系统及其实现方法、设备及存储介质
CN103971055B (zh) 一种基于程序切片技术的安卓恶意软件检测方法
CN102982282B (zh) 程序漏洞的检测系统和方法
CN107729510B (zh) 信息交互方法、信息交互终端及存储介质
US9747448B2 (en) Cryptographic mechanisms to provide information privacy and integrity
CN115203674A (zh) 一种应用程序自动登录方法、系统、装置及存储介质
CN105045698A (zh) 使用python的matplotlib分析芯片验证进度的方法

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