CN108804111B - 一种建立安卓应用程序不同版本间反编译类集合映射关系的方法和装置 - Google Patents
一种建立安卓应用程序不同版本间反编译类集合映射关系的方法和装置 Download PDFInfo
- Publication number
- CN108804111B CN108804111B CN201810282098.2A CN201810282098A CN108804111B CN 108804111 B CN108804111 B CN 108804111B CN 201810282098 A CN201810282098 A CN 201810282098A CN 108804111 B CN108804111 B CN 108804111B
- Authority
- CN
- China
- Prior art keywords
- class
- judge
- membership
- factor
- decompiling
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种建立安卓应用程序不同版本间反编译类集合映射关系的方法和装置。该方法包括:1)获取两个不同版本安卓应用程序的反编译类集合,将其中一个版本的反编译类集合作为评判集,另一个版本的反编译类集合作为被评判对象;2)确定因素集,根据评判集和因素集计算在每个因素上被评判类对于评判集中每个类的隶属度,根据隶属度形成模糊矩阵;3)定义因素的权重,根据因素的权重和模糊矩阵计算被评判类对于评判集中每个类的总隶属度;4)根据总隶属度的大小判定被评判类是否与评判集中的类建立映射关系。本发明提高了开发人员对APP不同版本间差异的理解效率,降低了缺失文档生成的难度。
Description
技术领域
本发明是一种针对不同版本的安卓应用程序(Application,APP),利用模糊综合评判技术建立它们之间反编译类集合映射关系的方法和装置。
背景技术
APP文档是理解APP功能、性能、使用方法的重要资料,也是APP开发和维护的重要依据。然而,对于大量的企业和政府单位,他们往往是通过第三方团队开发应用,面临着源代码和部分文档缺失的问题。他们往往拥有初代版本或者一些重要版本的文档,而缺失其他版本的文档,对理解这些版本造成了很大困难。为了解决这一问题,一种行之有效的办法是对比不同版本APP之间的差异,利用现有文档来生成其他版本的文档。而这一方法的关键一环,就是掌握不同版本间类集合的映射关系,特别地,在源码缺失的前提下,需要掌握不同版本间反编译类集合的映射关系。然而APP代码量大,结构复杂,在缺失源码的情况下,类名混淆,难以理解。通过人工寻找不同版本类集合间的映射关系需要花费大量时间和精力,难以实施。
综上所述,需要一种自动建立安卓应用程序不同版本间反编译类集合映射关系的方法。它可以帮助开发人员理解不同版本间APP的功能差异,从而生成版本文档。
发明内容
为了克服人工对比不同版本APP间反编译类集合的困难,本发明提供了一种自动建立安卓应用程序不同版本间反编译类集合映射关系的方法和装置。通过本发明可以有效提高映射关系的建立效率和准确率,其核心思想是通过隶属度刻画不同版本两个类之间的相似性,进而建立模糊矩阵,利用模糊综合评判的加权模型建立映射关系。
本发明采用的技术方案如下:
一种建立安卓应用程序不同版本间反编译类集合映射关系的方法,包括以下步骤:
1)获取两个不同版本安卓应用程序的反编译类集合,将其中一个版本的反编译类集合作为评判集,另一个版本的反编译类集合作为被评判对象;
2)确定因素集,根据评判集和因素集计算在每个因素上被评判类对于评判集中每个类的隶属度,根据隶属度形成模糊矩阵;
3)定义因素的权重,根据因素的权重和模糊矩阵计算被评判类对于评判集中每个类的总隶属度;
4)根据总隶属度的大小判定被评判类是否与评判集中的类建立映射关系。
上述方法主要包括两方面内容:定义评判参数、确定映射关系。具体说明如下:
1.定义评判参数:
1)定义评判集为C={c1,c2,…,cm},C为反编译类集合,ci(1≤i≤m)为其中的一个类;
2)定义因素集为U={u1,u2,…,un},即评判的n个标准;
3)根据评判集与因素集定义模糊矩阵:
其中rij表示从因素ui的角度来看,被评判类c′对cj的隶属度,所述隶属度是指不同版本的两个类之间能够建立映射关系的概率,概率越高则隶属度越大;c′在某个因素ui方面的表现是通过ri=[ri1,ri2,…,rim]来刻画的,ri称为单因素评价矩阵,可以看做是因素集U和类集C之间的一种模糊关系;
4)定义因素的权重为K=[k1,k2,…,kn],这里使用模糊综合评判的加权模型,则B=K*R。其中B=[b1,b2,…,bm]是模糊综合评判结果矢量,bi(1≤i≤m)为被评判类c′对ci的总隶属度;定义bL=max{b1,b2,…,bm};
5)设置隶属度的阈值为bs。
2.确定映射关系:
1)反编译两个版本的APP,获取反编译源码和类集合;
2)取其中一个版本的反编译类集合,作为评判集C;另一个版本的反编译类集合作为被评判对象;
3)确定因素集U,包括类中变量个数、方法个数、类间调用关系等。根据因素集计算模糊矩阵R,其中单因素评价矩阵ri(1≤i≤n)需要做归一化处理,即
4)计算结果矢量B和bL,若bL≥bs,则判定c′与cL建立映射关系;否则,判定c′与C中任何一个类都不相关,为该版本独特的类。
一种建立安卓应用程序不同版本间反编译类集合映射关系的装置,其包括:
反编译类集合获取模块,负责获取两个不同版本安卓应用程序的反编译类集合,将其中一个版本的反编译类集合作为评判集,另一个版本的反编译类集合作为被评判对象;
模糊矩阵建立模块,负责确定因素集,根据评判集和因素集计算在每个因素上被评判类对于评判集中每个类的隶属度,根据隶属度形成模糊矩阵;
模糊综合评判模块,负责定义因素的权重,根据因素的权重和模糊矩阵计算被评判类对于评判集中每个类的总隶属度;
映射关系建立模块,负责根据总隶属度的大小判定被评判类是否与评判集中的类建立映射关系。
本发明还提供一种安卓应用程序不同版本间缺失文档生成方法,其步骤包括:
1)采用上面所述方法建立安卓应用程序不同版本间反编译类集合映射关系;
2)利用获得的不同版本间反编译类集合映射关系,根据已知版本文档确定未知版本安卓应用程序类的功能,从而获得未知版本安卓应用程序的缺失文档。
本发明提出了一种建立安卓应用程序不同版本间反编译类集合映射关系的方法,可以通过程序自动识别不同版本类之间的隶属度,建立映射关系。本发明结合了现有技术的特点,创新性地将模糊综合评判的方法运用到不同版本APP类集合的对比上来,提高了开发人员对APP不同版本间差异的理解效率,降低了缺失文档生成的难度。
附图说明
图1是本发明方法的步骤流程图。
具体实施方式
为使本发明的上述目的、特点、技术更加明显易懂,下面对本发明的技术方案做具体说明。
图1是本发明方法的步骤流程图,具体包括以下步骤:
(1)获取反编译类集合。
对于APP的两个不同版本,由于缺失源码,需要对APK文件进行反编译。首先需要对APK文件进行解压,获取其中的DEX文件,即Android可执行文件。然后利用dex2jar等工具将其转化为jar包,最后利用jd-gui等工具即可获得反编译源码。从源码中提取中反编译的类集合,将其中一个版本作为评判集,另一个版本作为被评判对象。一般地,取文档较完整,结构较清晰,开发人员了解较多的版本作为评价集。
(2)确定因素集并计算模糊矩阵。
因素集是模糊综合评判方法的关键,能否设置合适的因素集关系到评判结果的正确性。对于安卓应用程序反编译类来说,可以取类的方法数、类的变量数、类方法的参数类型、类方法的返回值类型、类之间的调用关系等多个因素作为评判标准,这些信息都可以通过反编译源码的搜索分析得到。接下来便可以计算模糊矩阵,例如,对于类的方法数,如果被评判类c′的方法数和评判集中某个类ci方法数相同,那么对它的隶属度就大;相反地,它们之间方法数相差越多,隶属度就越小。这里可取c′对ci隶属度ri=nmin/nmax,其中nmin=min{n1,n2},nmax=max{n1,n2},n1为c′方法数,n2为ci方法数。
(3)确定映射关系。
计算出模糊矩阵后,就得出了在每个因素上,被评判类对于评判集中每个类的隶属度。结合权重矢量,就可以计算出被评判类对于评判集中每个类的总隶属度,它表示了被评判类与评判集中类建立映射的可能性。取其中总隶属度最大的一个,则被评判类最有可能与之映射。如果这个总隶属度大于了之前设立的阈值,那么就判定它们建立映射;否则,就判定评判集中没有类可以与被评判类建立映射,被评判类可能是一个该版本特有的类。
本发明另一实施例提供一种建立安卓应用程序不同版本间反编译类集合映射关系的装置,其包括:
反编译类集合获取模块,负责获取两个不同版本安卓应用程序的反编译类集合,将其中一个版本的反编译类集合作为评判集,另一个版本的反编译类集合作为被评判对象;
模糊矩阵建立模块,负责确定因素集,根据评判集和因素集计算在每个因素上被评判类对于评判集中每个类的隶属度,根据隶属度形成模糊矩阵;
模糊综合评判模块,负责定义因素的权重,根据因素的权重和模糊矩阵计算被评判类对于评判集中每个类的总隶属度;
映射关系建立模块,负责根据总隶属度的大小判定被评判类是否与评判集中的类建立映射关系。
本发明另一实施例提供一种安卓应用程序不同版本间缺失文档生成方法,其步骤包括:
1)采用上面所述方法建立安卓应用程序不同版本间反编译类集合映射关系;
2)利用获得的不同版本间反编译类集合映射关系,根据已知版本文档确定未知版本安卓应用程序类的功能,从而获得未知版本安卓应用程序的缺失文档。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (9)
1.一种建立安卓应用程序不同版本间反编译类集合映射关系的方法,其特征在于,包括以下步骤:
1)获取两个不同版本安卓应用程序的反编译类集合,将其中一个版本的反编译类集合作为评判集,另一个版本的反编译类集合作为被评判对象;
2)确定因素集,根据评判集和因素集计算在每个因素上被评判类对于评判集中每个类的隶属度,根据隶属度形成模糊矩阵;
3)定义因素的权重,根据因素的权重和模糊矩阵计算被评判类对于评判集中每个类的总隶属度;
4)根据总隶属度的大小判定被评判类是否与评判集中的类建立映射关系;
所述因素集包括:类的方法数、类的变量数、类方法的参数类型、类方法的返回值类型、类之间的调用关系。
2.根据权利要求1所述的方法,其特征在于,步骤2)根据评判集与因素集定义模糊矩阵:
其中,rij表示在因素ui上被评判类c′对cj的隶属度,m为评判集中类的个数,n为因素集中因素的个数;c′在因素ui方面的表现通过ri=[ri1,ri2,…,rim]来刻画,ri称为单因素评价矩阵。
3.根据权利要求2所述的方法,其特征在于,步骤3)定义因素的权重为K=[k1,k2,…,kn],然后计算模糊综合评判结果矢量B=K*R,其中B=[b1,b2,…,bm]是模糊综合评判结果矢量,bi为被评判类c′对ci的总隶属度,1≤i≤m,定义bL=max{b1,b2,…,bm}。
4.根据权利要求3所述的方法,其特征在于,步骤4)将最大的总隶属度bL与预先设置的阈值进行比较,如果该总隶属度大于该阈值,则判定建立映射;否则判定评判集中没有类可以与被评判类建立映射。
5.一种建立安卓应用程序不同版本间反编译类集合映射关系的装置,其特征在于,包括:
反编译类集合获取模块,负责获取两个不同版本安卓应用程序的反编译类集合,将其中一个版本的反编译类集合作为评判集,另一个版本的反编译类集合作为被评判对象;
模糊矩阵建立模块,负责确定因素集,根据评判集和因素集计算在每个因素上被评判类对于评判集中每个类的隶属度,根据隶属度形成模糊矩阵;
模糊综合评判模块,负责定义因素的权重,根据因素的权重和模糊矩阵计算被评判类对于评判集中每个类的总隶属度;
映射关系建立模块,负责根据总隶属度的大小判定被评判类是否与评判集中的类建立映射关系;
所述因素集包括:类的方法数、类的变量数、类方法的参数类型、类方法的返回值类型、类之间的调用关系。
6.根据权利要求5所述的装置,其特征在于,所述模糊矩阵建立模块根据评判集与因素集定义模糊矩阵:
其中,rij表示在因素ui上被评判类c′对cj的隶属度,m为评判集中类的个数,n为因素集中因素的个数;c′在因素ui方面的表现通过ri=[ri1,ri2,…,rim]来刻画,ri称为单因素评价矩阵。
7.根据权利要求6所述的装置,其特征在于,所述模糊综合评判模块定义因素的权重为K=[k1,k2,…,kn],然后计算模糊综合评判结果矢量B=K*R,其中B=[b1,b2,…,bm]是模糊综合评判结果矢量,bi为被评判类c′对ci的总隶属度,1≤i≤m,定义bL=max{b1,b2,…,bm}。
8.根据权利要求7所述的装置,其特征在于,所述映射关系建立模块将最大的总隶属度bL与预先设置的阈值进行比较,如果该总隶属度大于该阈值,则判定建立映射;否则判定评判集中没有类可以与被评判类建立映射。
9.一种安卓应用程序不同版本间缺失文档生成方法,其特征在于,包括以下步骤:
1)采用权利要求1~4中任一权利要求所述方法建立安卓应用程序不同版本间反编译类集合映射关系;
2)利用获得的不同版本间反编译类集合映射关系,根据已知版本文档确定未知版本安卓应用程序类的功能,从而获得未知版本安卓应用程序的缺失文档。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810282098.2A CN108804111B (zh) | 2018-04-02 | 2018-04-02 | 一种建立安卓应用程序不同版本间反编译类集合映射关系的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810282098.2A CN108804111B (zh) | 2018-04-02 | 2018-04-02 | 一种建立安卓应用程序不同版本间反编译类集合映射关系的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108804111A CN108804111A (zh) | 2018-11-13 |
CN108804111B true CN108804111B (zh) | 2019-07-05 |
Family
ID=64095300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810282098.2A Active CN108804111B (zh) | 2018-04-02 | 2018-04-02 | 一种建立安卓应用程序不同版本间反编译类集合映射关系的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108804111B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515842B (zh) * | 2019-08-09 | 2022-11-11 | 苏州浪潮智能科技有限公司 | 一种程序调试方法、装置及电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063318A (zh) * | 2014-06-24 | 2014-09-24 | 湘潭大学 | Android应用相似性快速检测方法 |
CN104794051A (zh) * | 2014-01-21 | 2015-07-22 | 中国科学院声学研究所 | 一种Android平台恶意软件自动化检测方法 |
US9672355B2 (en) * | 2011-09-16 | 2017-06-06 | Veracode, Inc. | Automated behavioral and static analysis using an instrumented sandbox and machine learning classification for mobile security |
CN107180192A (zh) * | 2017-05-09 | 2017-09-19 | 北京理工大学 | 基于多特征融合的安卓恶意应用程序检测方法和系统 |
CN107247614A (zh) * | 2017-05-16 | 2017-10-13 | 四川长虹电器股份有限公司 | 在软件编译时检查应用信息的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123493B (zh) * | 2014-07-31 | 2017-09-26 | 百度在线网络技术(北京)有限公司 | 应用程序的安全性检测方法和装置 |
CN104636665B (zh) * | 2015-02-03 | 2018-01-05 | 南京理工大学 | 一种Android应用程序的描述和匹配方法 |
-
2018
- 2018-04-02 CN CN201810282098.2A patent/CN108804111B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9672355B2 (en) * | 2011-09-16 | 2017-06-06 | Veracode, Inc. | Automated behavioral and static analysis using an instrumented sandbox and machine learning classification for mobile security |
CN104794051A (zh) * | 2014-01-21 | 2015-07-22 | 中国科学院声学研究所 | 一种Android平台恶意软件自动化检测方法 |
CN104063318A (zh) * | 2014-06-24 | 2014-09-24 | 湘潭大学 | Android应用相似性快速检测方法 |
CN107180192A (zh) * | 2017-05-09 | 2017-09-19 | 北京理工大学 | 基于多特征融合的安卓恶意应用程序检测方法和系统 |
CN107247614A (zh) * | 2017-05-16 | 2017-10-13 | 四川长虹电器股份有限公司 | 在软件编译时检查应用信息的方法 |
Non-Patent Citations (1)
Title |
---|
"基于代码克隆检测技术的Android应用重打包检测";王浩宇 等;《中国科学:信息科学》;20140120;第44卷(第1期);第142-157页 |
Also Published As
Publication number | Publication date |
---|---|
CN108804111A (zh) | 2018-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109684840A (zh) | 基于敏感调用路径的Android恶意软件检测方法 | |
CN103839005B (zh) | 移动操作系统的恶意软件检测方法和恶意软件检测系统 | |
CN109784186A (zh) | 一种行人重识别方法、装置、电子设备及计算机可读存储介质 | |
CN108629413A (zh) | 神经网络模型训练、交易行为风险识别方法及装置 | |
CN111159387B (zh) | 基于多维度报警信息文本相似度分析的推荐方法 | |
CN109614433A (zh) | 业务系统间数据血缘的识别方法、装置、设备及存储介质 | |
CN105868169B (zh) | 一种数据采集装置、数据采集方法和系统 | |
CN106650259A (zh) | 患者信息的管理方法及管理系统 | |
CN109634994A (zh) | 一种简历与职位的匹配推送方法及计算机设备和存储介质 | |
CN110134587A (zh) | 一种测试方法、测试装置及计算机可读存储介质 | |
CN110881050A (zh) | 安全威胁检测方法及相关产品 | |
CN107092827A (zh) | 一种基于改进森林算法的Android恶意软件检测方法 | |
CN104866764B (zh) | 一种基于对象引用图的Android手机恶意软件检测方法 | |
US20230410221A1 (en) | Information processing apparatus, control method, and program | |
CN108804111B (zh) | 一种建立安卓应用程序不同版本间反编译类集合映射关系的方法和装置 | |
CN101963988A (zh) | 一种规范自由裁量的智能引擎及其实现方法 | |
CN110210218A (zh) | 一种病毒检测的方法以及相关装置 | |
CN109992642A (zh) | 一种基于科技词条的单任务专家自动遴选方法及系统 | |
CN104598648A (zh) | 一种微博用户交互式性别识别方法及装置 | |
CN108717422B (zh) | 一种数据处理方法及装置 | |
CN109740947A (zh) | 基于专利数据的专家挖掘方法、系统、存储介质及电子终端 | |
CN109784834A (zh) | 一种补贴对象的信息正确性分析方法及其系统 | |
CN107688594B (zh) | 基于社交信息的风险事件的识别系统及方法 | |
CN109344233A (zh) | 一种中文人名识别方法 | |
CN104104659B (zh) | 一种通信指纹的提取方法以及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |