CN104391798A - 一种软件特征信息的提取方法 - Google Patents

一种软件特征信息的提取方法 Download PDF

Info

Publication number
CN104391798A
CN104391798A CN201410748932.4A CN201410748932A CN104391798A CN 104391798 A CN104391798 A CN 104391798A CN 201410748932 A CN201410748932 A CN 201410748932A CN 104391798 A CN104391798 A CN 104391798A
Authority
CN
China
Prior art keywords
software
api
information
feature
application
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
CN201410748932.4A
Other languages
English (en)
Other versions
CN104391798B (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 CN201410748932.4A priority Critical patent/CN104391798B/zh
Publication of CN104391798A publication Critical patent/CN104391798A/zh
Application granted granted Critical
Publication of CN104391798B publication Critical patent/CN104391798B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本申请公开了一种软件特征信息的提取方法,包括:预先在操作系统所支持的所有应用程序编程接口API中选择出用于提取特征信息的API,得到特征API集合;b、对于应用软件库中每个软件i的程序代码,统计该软件的程序代码对所述特征API集合中的每个API的调用次数ani,得到该软件i的API信息;根据所有软件的所述API信息,对每个软件i的所述API信息进行比率化处理,得到每个软件i的形式化描述信息;对每个软件i的形式化描述信息进行归一化和二进制处理,得到每个软件i的二进制特征信息。本发明易于实现、效率高,并且所提取的特征信息能准确反映软件的语义特征、有利于软件的准确分类和检测。

Description

一种软件特征信息的提取方法
技术领域
本发明涉及计算机软件分析技术,特别是涉及一种软件特征信息的提取方法。
背景技术
近年来我国移动互联网产业发展迅速,网络用户规模不断扩大。伴随着移动智能终端应用软件呈现的爆发性的增长,由于移动智能终端应用软件的巨大经济利益而暴露出的应用软件质量、能耗、安全性等问题也越来越多。
由于移动互联网应用软件开发的准入门槛较低,国内第三方应用市场如雨后春笋般出现,软件上架审核机制不完善等等一系列原因导致了移动智能终端应用软件出现质量参差不齐、能耗考虑不足、安全性无法保证的局面,移动智能终端应用软件多方面深度分析的需求强烈。
移动智能终端应用软件的深度分析,是基于其特征提取的。利用软件的特征信息可以对应用软件进行分类、检测。目前应用软件特征表述方法可分为:基于文字描述的特征表述、基于特征代码段的特征表述和基于语法语义的特征表述三类方法
其中,文字描述方法,是根据应用开发者提供的应用名称、版本信息以及应用描述信息,结合相应的人工审核机制,如运行应用、查看应用信息等手段,得到确认及修正后的描述信息,作为应用的特征表述;基于特征代码段的描述方法,是通过对应用软件进行反编译处理,得到相关的代码信息,遍历其中相关的功能代码,选取能代表其主要功能代码段作为其特征信息;基于语法语义的特征描述方法,通过反编译二进制代码或字节码,得到类似于源码的中间代码;根据中间代码,进行词法语法分析,得到相应的语法语义信息,作为应用软件的特征表述。
上述基于文字描述的特征表述方法,描述特征过于简单、主观,在正确性上得不到保障;并且,描述信息不包含分析所需的语义信息,不适合进行分析处理。基于语法语义的方法,描述特征全量的包含了所有的应用软件语法语义信息,特征信息存在较多的冗余。基于特征代码段与基于语法语义的方法,在分析成本上耗费较大,其特征信息存储空间大,需要进行的遍历成本较大,时间较多,存在效率低,代价大的问题。
由此可见,传统的软件特征信息提取方法存在所提取的信息不适合分析、或者冗余较多、或者效率低,代价大等问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种软件特征信息的提取方法,该方法易于实现、效率高,并且所提取的特征信息能准确反映软件的语义特征、有利于软件的准确分类和检测。
为了达到上述目的,本发明提出的技术方案为:
一种软件特征信息的提取方法,其特征在于,包括:
a、预先在操作系统所支持的所有应用程序编程接口API中选择出用于提取特征信息的API,得到特征API集合{API1,...,APIn,...,APIN};
b、对于应用软件库中每个软件i的程序代码,统计该软件的程序代码对所述特征API集合中的每个API的调用次数ani,得到该软件i的API信息{a1i,...,ani,...,aNi};
c、根据所有软件的所述API信息,对每个软件i的所述API信息进行比率化处理,得到每个软件i的形式化描述信息{x1i,...,xni,...,xNi};
d、对每个软件i的形式化描述信息{x1i,...,xni,...,xNi}进行归一化和二进制处理,得到每个软件i的二进制特征信息。
综上所述,本发明提出软件特征信息的提取方法,通过生成软件的API信息并进行比率化处理以及归一化和二进制处理,来获得软件的二进制特征信息。如此,一方面,可以使得软件特征信息的提取易于实现、效率高,另一方面所提取的特征信息能准确反映软件的语义特征、有利于软件的准确分类和检测。
附图说明
图1为本发明实施例一的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明的核心思想是:将软件的API调用信息,转换成二进制信息,作为软件的特征信息进行提取。如此,一方面可以提高特征提取的效率,另一方面,所提取的特征信息简洁并且能有效保存软件的语义信息,从而有利于压缩特征信息的存储空间以及软件的准确识别、分类。
图1为本发明实施例一的流程示意图,如图1所示,该实施例主要包括:
步骤101、预先在操作系统所支持的所有应用程序编程接口API中选择出用于提取特征信息的API,得到特征API集合{API1,...,APIn,...,APIN}。
本步骤用于建立一个特征API集合,以便在后续步骤中基于每个软件对该集合中各API的调用情况提取出相应的特征信息。
这里,判断一个API是否可以选择为用于提取特征信息的API的具体方法可以是:
如果一个API属于平台提供的官方软件工具开发包(Software Development Kit,SDK),并且具有不可拆解性和不可替换性,则该API为所述用于提取特征信息的API。
上述方法中用于提取特征信息的API需要满足条件:属于操作系统平台提供的官方SDK,并且具有不可拆解性和不可替换性。这里,所述不可拆解性是指API无法拆解成多个API的组合。所述不可替换性是指API的功能无法由其他API来替换实现。利用上述条件选择出来的AP可以准确表征应用软件的语义特征,从而便于后续的快速分类、检索。
步骤102、对于应用软件库中每个软件i的程序代码,统计该软件的程序代码对所述特征API集合中的每个API的调用次数ani,得到该软件i的API信息{a1i,...,ani,...,aNi}。
本步骤中,统计软件对API的调用次数的具体方法为本领域技术人员所掌握,在此不再赘述。
这里,考虑到软件的API调用信息与软件的语义信息相关,因此,基于API调用信息提取出软件特征信息,可以更准确的反映软件的特点,有利于提高基于此特征信息所实现的软件分类、异常检测、能耗检测、软件脆弱性分析等方面应用的准确性。另外,由于API调用次数的统计易于实现,因此,可以大幅度提高软件特征信息提取的效率。
步骤103、根据所有软件的所述API信息,对每个软件i的所述API信息进行比率化处理,得到每个软件i的形式化描述信息{x1i,...,xni,...,xNi}。
本步骤,用于对每个软件i的所述API信息进行比率化处理,以便得到可量化的软件特征信息,i为软件的编号。
较佳地,具体可以采用下述方法进行比率化处理:
按照计算所述xni,其中,m为应用软件库中的软件个数,ani为软件i对所述特征API集合中第n个API的调用次数,n={1,2,...,N}。
这里,在中,考虑到软件i对所述特征API集合中的某个API的调用次数有可能为0,即ani可能为0,为了避免这种情况,就使用系数1来平滑上述概率。
步骤104、对每个软件i的形式化描述信息{x1i,...,xni,...,xNi}进行归一化和二进制处理,得到每个软件i的二进制特征信息。
较佳地,可以采用下述方法完成所述归一化和二进制处理:
按照确定归一化阈值集合{β1,...,βn,...,βN},其中,m为应用软件库中的软件个数,ani为软件i对所述特征API集合中第n个API的调用次数,n={1,2,...,N};
根据所述{β1,...,βn,...,βN},按照 b ni = 1 , x ni &GreaterEqual; &beta; n 0 , x ni < &beta; n , 将每个软件i的形式化描述信息{x1i,...,xni,...,xNi}转换为相应的二进制特征信息{b1i,...,bni,...,bNi}。
通过上述实施例可以看出,本发明具有下述特点:
1)分析速度快
本发明将应用软件的语义信息,以二进制的形式表述出来,无需进行后续的处理即可进行数字化自动化的对比分析,拥有速度快的特点。
2)信息率高
本发明基于API调用信息提取相应的特征信息,以极小的存储空间保存了应用软件的语义信息,适用与应用软件快速分析,拥有较高的信息率。
3)简洁高效
相比于现有的其他特征信息提取方法,本发明表述方式简洁,既没有控制信息、依赖关系等复杂信息,又保留了部分客观语义信息,具有简洁高效的特点。
如上所述,由于本发明所提取出的特征信息能有效反映出软件的语义信息,相同类别软件将具有部分相同的特征信息。因此,在具体应用中,可以进一步地利用本发明所提取出的软件特征信息,来实现应用商店应用快速异常检测和应用能耗快速检测,即:
通过使用本发明的应用软件特征提取方法,国内各大应用商店可以对其应用软件库中的应用软件进行特征信息提取,并对所有的特征信息进行分类学习,如果一应用软件在二进制码的某些位数上,数值与同类型其他应用软件存在显著不同,则可以判定该应用软件存在异常。
通过使用本发明的应用软件特征提取方法,国内各大应用商店可以对其应用软件库中的应用软件进行特征信息提取,由于应用软件执行的基础就是API,对API进行能耗评级后,可以根据应用软件二进制特征信息进行能耗聚类后,快速检测出能耗较低与能耗较高的应用软件。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种软件特征信息的提取方法,其特征在于,包括:
a、预先在操作系统所支持的所有应用程序编程接口API中选择出用于提取特征信息的API,得到特征API集合{API1,...,APIn,...,APIN};
b、对于应用软件库中每个软件i的程序代码,统计该软件的程序代码对所述特征API集合中的每个API的调用次数ani,得到该软件i的API信息{a1i,...,ani,...,aNi};
c、根据所有软件的所述API信息,对每个软件i的所述API信息进行比率化处理,得到每个软件i的形式化描述信息{x1i,...,xni,...,xNi};
d、对每个软件i的形式化描述信息{x1i,...,xni,...,xNi}进行归一化和二进制处理,得到每个软件i的二进制特征信息。
2.根据权利要求1所述的方法,其特征在于,步骤a中所述选择为:如果一个API属于平台提供的官方软件工具开发包SDK,并且具有不可拆解性和不可替换性,则该API为所述用于提取特征信息的API。
3.根据权利要求1所述的方法,其特征在于,所述比率化处理包括:
按照计算所述xni,其中,m为应用软件库中的软件个数,ani为软件i对所述特征API集合中第n个API的调用次数,n={1,2,...,N}。
4.根据权利要求1所述的方法,其特征在于,所述归一化和二进制处理包括:
按照确定归一化阈值集合{β1,...,βn,...,βN},其中,m为应用软件库中的软件个数,ani为软件i对所述特征API集合中第n个API的调用次数,n={1,2,...,N};
根据所述{β1,...,βn,...,βN},按照将每个软件i的形式化描述信息{x1i,...,xni,...,xNi}转换为相应的二进制特征信息{b1i,...,bni,...,bNi}。
CN201410748932.4A 2014-12-09 2014-12-09 一种软件特征信息的提取方法 Active CN104391798B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410748932.4A CN104391798B (zh) 2014-12-09 2014-12-09 一种软件特征信息的提取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410748932.4A CN104391798B (zh) 2014-12-09 2014-12-09 一种软件特征信息的提取方法

Publications (2)

Publication Number Publication Date
CN104391798A true CN104391798A (zh) 2015-03-04
CN104391798B CN104391798B (zh) 2017-05-10

Family

ID=52609706

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410748932.4A Active CN104391798B (zh) 2014-12-09 2014-12-09 一种软件特征信息的提取方法

Country Status (1)

Country Link
CN (1) CN104391798B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105446741A (zh) * 2015-12-10 2016-03-30 北京邮电大学 一种基于api比对的移动应用程序辨识方法
CN106803040A (zh) * 2017-01-18 2017-06-06 腾讯科技(深圳)有限公司 病毒特征码处理方法及装置
CN108446233A (zh) * 2018-03-20 2018-08-24 南京邮电大学 一种软件测试方法
WO2019080531A1 (zh) * 2017-10-26 2019-05-02 华为技术有限公司 一种信息采集及内存释放的方法及装置
WO2019242442A1 (zh) * 2018-06-20 2019-12-26 深信服科技股份有限公司 基于多模型特征的恶意软件识别方法、系统及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376970B2 (en) * 2004-02-20 2008-05-20 Microsoft Corporation System and method for proactive computer virus protection
US7849509B2 (en) * 2005-10-07 2010-12-07 Microsoft Corporation Detection of security vulnerabilities in computer programs
CN103440459A (zh) * 2013-09-25 2013-12-11 西安交通大学 一种基于函数调用的Android恶意代码检测方法
CN103473346A (zh) * 2013-09-24 2013-12-25 北京大学 一种基于应用程序编程接口的安卓重打包应用检测方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376970B2 (en) * 2004-02-20 2008-05-20 Microsoft Corporation System and method for proactive computer virus protection
US7849509B2 (en) * 2005-10-07 2010-12-07 Microsoft Corporation Detection of security vulnerabilities in computer programs
CN103473346A (zh) * 2013-09-24 2013-12-25 北京大学 一种基于应用程序编程接口的安卓重打包应用检测方法
CN103440459A (zh) * 2013-09-25 2013-12-11 西安交通大学 一种基于函数调用的Android恶意代码检测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
曾鸣等: "基于特征提取的二进制代码比较技术", 《计算机工程与应用》 *
韩兰胜等: "基于API函数及其参数相结合的恶意软件行为检测", 《计算机应用研究》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105446741A (zh) * 2015-12-10 2016-03-30 北京邮电大学 一种基于api比对的移动应用程序辨识方法
CN105446741B (zh) * 2015-12-10 2018-09-28 北京邮电大学 一种基于api比对的移动应用程序辨识方法
CN106803040A (zh) * 2017-01-18 2017-06-06 腾讯科技(深圳)有限公司 病毒特征码处理方法及装置
CN106803040B (zh) * 2017-01-18 2021-08-10 腾讯科技(深圳)有限公司 病毒特征码处理方法及装置
WO2019080531A1 (zh) * 2017-10-26 2019-05-02 华为技术有限公司 一种信息采集及内存释放的方法及装置
KR20190059890A (ko) * 2017-10-26 2019-05-31 후아웨이 테크놀러지 컴퍼니 리미티드 정보를 수집하는 방법 및 장치, 그리고 메모리를 해제하는 방법 및 장치
KR102205090B1 (ko) 2017-10-26 2021-01-19 후아웨이 테크놀러지 컴퍼니 리미티드 정보를 수집하는 방법 및 장치, 그리고 메모리를 해제하는 방법 및 장치
US11138034B2 (en) 2017-10-26 2021-10-05 Huawei Technologies Co., Ltd. Method and apparatus for collecting information, and method and apparatus for releasing memory
CN108446233A (zh) * 2018-03-20 2018-08-24 南京邮电大学 一种软件测试方法
WO2019242442A1 (zh) * 2018-06-20 2019-12-26 深信服科技股份有限公司 基于多模型特征的恶意软件识别方法、系统及相关装置

Also Published As

Publication number Publication date
CN104391798B (zh) 2017-05-10

Similar Documents

Publication Publication Date Title
CN108090567B (zh) 电力通信系统故障诊断方法及装置
CN104391798A (zh) 一种软件特征信息的提取方法
CN108959924A (zh) 一种基于词向量和深度神经网络的Android恶意代码检测方法
CN107169351A (zh) 结合动态行为特征的Android未知恶意软件检测方法
CN104572958A (zh) 一种基于事件抽取的敏感信息监控方法
CN108664269A (zh) 一种基于深度学习的特征依恋代码异味检测方法
CN109492106B (zh) 一种文本代码相结合的缺陷原因自动分类方法
CN103336766A (zh) 短文本垃圾识别以及建模方法和装置
CN106293891B (zh) 多维投资指标监督方法
CN104915334A (zh) 一种基于语义分析的招投标项目关键信息自动化提取方法
CN104679646B (zh) 一种用于检测sql代码缺陷的方法和装置
CN106503254A (zh) 语料分类方法、装置及终端
CN106897290B (zh) 一种建立关键词模型的方法及装置
CN105426759A (zh) Url的合法性识别方法及装置
CN105389341A (zh) 一种客服电话重复来电工单的文本聚类与分析方法
CN109190371A (zh) 一种基于行为图的Android恶意软件检测方法和技术
CN105550253A (zh) 一种类型关系的获取方法及装置
CN104751053A (zh) 移动智能终端软件的静态行为分析方法
CN105786792A (zh) 一种信息处理方法及装置
CN109830246A (zh) 音频质量评估方法、装置、电子设备及存储介质
Wang et al. Smart contract vulnerability detection using code representation fusion
CN109858025A (zh) 一种地址标准化语料的分词方法及系统
CN112818110A (zh) 文本过滤方法、设备及计算机存储介质
CN109214445A (zh) 一种基于人工智能的多标签分类方法
CN105488599A (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