CN108762752A - 一种结合动态和静态代码分析技术的安卓应用程序功能类图生成方法和装置 - Google Patents
一种结合动态和静态代码分析技术的安卓应用程序功能类图生成方法和装置 Download PDFInfo
- Publication number
- CN108762752A CN108762752A CN201810282385.3A CN201810282385A CN108762752A CN 108762752 A CN108762752 A CN 108762752A CN 201810282385 A CN201810282385 A CN 201810282385A CN 108762752 A CN108762752 A CN 108762752A
- Authority
- CN
- China
- Prior art keywords
- class
- function
- search
- application program
- android 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种结合动态和静态代码分析技术的安卓应用程序功能类图生成方法和装置。该方法包括:1)基于动态Trace分析,获取安卓应用程序的功能类集合;2)根据获取的功能类集合,利用静态智能搜索技术分析安卓应用程序的源代码,生成功能类图。本发明结合了现有技术的特点,创新性地使用了动态Trace分析与静态源码分析相结合的技术手段,通过动态Trace分析,发现并获取与特定功能相关的类集合,进而利用其进行静态智能搜索,生成功能类图。本发明能够有效解决安卓应用程序功能类图的自动生成问题,提高了开发人员对APP代码的理解效率,降低了代码复用的难度。
Description
技术领域
本发明是一种针对移动应用程序(Application,APP),利用代码动态分析技术和静态分析技术找出特定功能的类集合,进而生成功能类图的方法和装置。
背景技术
代码复用是在APP开发中避免重复劳动的解决方案,它可以有效地节省开发人员的时间,避免重写代码出现的错误。在复用代码时,开发人员往往需要理解代码语义与代码结构,尤其是开发人员关注的部分功能代码。为了达到这个目的,通常,开发人员通过浏览APP源代码锁定其关注的功能模块,找出相关类集合以及类之间的关系来理解代码语义,进而确定该功能涉及的类、方法与参数。然而源代码往往结构复杂、规模庞大,会耗费开发者大量的时间与精力。
综上所述,需要一种自动生成安卓应用程序功能类图的方法。它可以帮助开发人员快速、便捷地找出特定功能的类集合并建立可视化的类关系图。
发明内容
为了克服人工理解代码结构的不足,本发明提供了一种结合动态和静态代码分析技术的安卓应用程序功能类图生成方法和装置,使用运行时跟踪日志(Trace)获取功能类集合以及使用智能搜索建立功能类图。通过本发明提供的方法可以有效解决安卓应用程序功能类图的自动生成问题,其核心思想是通过动态Trace分析,发现并获取与特定功能相关的类集合,进而利用其进行静态智能搜索,生成功能类图。
本发明的技术方案为:
一种结合动态和静态代码分析技术的安卓应用程序功能类图生成方法,其步骤包括:
1.基于动态Trace分析,获取安卓应用程序的功能类集合;
2.根据获取的功能类集合,利用静态智能搜索技术分析安卓应用程序的源代码,生成功能类图。
进一步地,步骤1基于动态Trace分析,获取功能类集合,具体包括:
1)运行APP指定的功能,获取其运行Trace;
2)分析Trace结构,找到入口函数调用;
3)查看函数调用栈,获取调用序列;
4)从调用序列中获取相关的功能类集合。
进一步地,步骤2基于静态搜索算法,建立功能类图,具体包括:
1)根据步骤1中得到的功能类集合,确定搜索范围;
2)根据步骤1中得到的入口函数,确定搜索起点;
3)设置类关系搜索规则;
4)设置搜索停止规则;
5)在APP源代码中启动搜索,确定类集合中各类之间的关系;
6)根据类间关系,建立功能类图。
进一步地,步骤3)所述设置类关系搜索规则,是从入口函数所在类开始,仅搜索与当前类存在特殊关系的类,而不去搜索其他无关类。这里特殊关系包括,继承关系、依赖关系、关联关系、聚合关系、组合关系、实现关系。
进一步地,步骤4)所述设置搜索停止规则,考虑搜索的深度、UI类等因素设置搜索停止规则。比如将入口函数所在类规定为第0层,搜索到第5层后停止;搜索到UI类后停止。
进一步地,所述功能类图中类A指向类B有三种含义:a)类A在API中调用了某个方法,该方法的参数是类B的对象;b)类A作为某个参数对象,其构造函数的参数是类B的对象;c)类A作为某个参数的对象,它是由类B的某个方法返回的。
一种结合动态和静态代码分析技术的安卓应用程序功能类图生成装置,其包括:
动态分析模块,负责基于动态Trace分析,获取安卓应用程序的功能类集合;
静态分析模块,负责根据获取的功能类集合,利用静态智能搜索技术分析安卓应用程序的源代码,生成功能类图。
本发明提出了一种使用Trace获取功能类集合以及使用智能搜索建立类关系有向图的技术,可以通过程序自动梳理代码结构与类间关系,建立功能类图。本发明结合了现有技术的特点,创新性地使用了动态Trace分析与静态源码分析相结合的技术手段,提高了开发人员对APP代码的理解效率,降低了代码复用的难度。
附图说明
图1是本发明方法的步骤流程图;
图2是功能类图的示例。
具体实施方式
为使本发明的上述目的、特点、技术更加明显易懂,下面通过具体实施例,对本发明做进一步说明。
本发明提出了一种基于代码动态分析技术与静态技术结合的安卓应用程功能类图生成方法,其流程如图1所示。该方法包含两部分内容:1、基于动态Trace分析,提取功能类集合;2、基于静态搜索算法,建立功能类图。
本发明的具体技术方案如下:
(1)提取功能类集合。
针对特定的功能,其涉及到的具体类是有限的,而且是整个源码中所有类的一个很小的子集,找到这个功能类集合,可以有效地将搜索范围限定在类集合中,极大地减少了在无关类中检索耗费的时间,提高了搜索效率。本技术首先运行APP的特定功能,抓取其运行Trace。然后通过Trace动态分析(见图1中的“Trace分析器”),获取该功能的调用序列,包括目标函数,目标函数参数,调用类等信息,得出相关的功能类集合。
(2)建立功能类图。
功能类图的建立,主要通过对源码的静态智能搜索完成。目标函数所在类即搜索的入口节点,本技术通过语法分析,获取目标函数的参数对象,进而在参数类里面做递归搜索,以获取类之间的关系,直到搜索出可以直接构造的类对象或者到达搜索终止条件,最终根据类间关系,建立功能类图(见图1中的“类图生成器”)。由于搜索仅在功能类集合中进行,避免了搜索树过于庞大造成的时间和空间的浪费。最后,会对搜索结果汇总,建立功能类图。功能类图中类A指向类B有三种含义:1、类A在API中调用了某个方法,该方法的参数是类B的对象;2、类A作为某个参数对象,其构造函数的参数是类B的对象;3、类A作为某个参数的对象,它是由类B的某个方法返回的。
实施例:
首先通过Trace分析,获得功能类集合。然后根据得出的功能类集合,利用智能搜索技术,分析源代码,获取类间关系,并建立如图2所示功能类图。图中椭圆代表类,根节点A是目标函数所在类,叶子节点G、E、I、J是可以直接构造出来的类对象。图中边上字母代表不同的关系,f代表父节点类的函数参数是子节点类对象,g代表父节点的构造函数需要用到子节点类对象作为参数,h代表父节点类对象是子节点类函数的返回值。例如,函数f为目标函数,A为其所在类,f的参数类为B、C、J;B类对象通过构造函数g1构造,其参数类为D、E;D类对象是G类中h函数的返回值。其中A和J之间有两条边,表示A类的f函数有两个J类的参数。
本发明另一实施例提供一种结合动态和静态代码分析技术的安卓应用程序功能类图生成装置,其包括:
动态分析模块,负责基于动态Trace分析,获取安卓应用程序的功能类集合;
静态分析模块,负责根据获取的功能类集合,利用静态智能搜索技术分析安卓应用程序的源代码,生成功能类图。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (10)
1.一种结合动态和静态代码分析技术的安卓应用程序功能类图生成方法,其特征在于,包括以下步骤:
1)基于动态Trace分析,获取安卓应用程序的功能类集合;
2)根据获取的功能类集合,利用静态智能搜索技术分析安卓应用程序的源代码,生成功能类图。
2.根据权利要求1所述的方法,其特征在于,步骤1)包括以下子步骤:
1.1)运行APP指定的功能,获取其运行Trace;
1.2)分析Trace结构,找到入口函数调用;
1.3)查看函数调用栈,获取调用序列;
1.4)从调用序列中获取相关的功能类集合。
3.根据权利要求1或2所述的方法,其特征在于,步骤2)包括以下子步骤:
2.1)根据步骤1)中得到的功能类集合,确定搜索范围;
2.2)根据步骤1)中得到的入口函数,确定搜索起点;
2.3)设置类关系搜索规则:
2.4)设置搜索停止规则:
2.5)在APP源代码中启动搜索,确定类集合中各类之间的关系;
2.6)根据类间关系,建立功能类图。
4.根据权利要求3所述的方法,其特征在于,步骤2.3)所述设置类关系搜索规则,是从入口函数所在类开始,仅搜索与当前类存在特殊关系的类,而不去搜索其他无关类;所述特殊关系包括:继承关系、依赖关系、关联关系、聚合关系、组合关系、实现关系。
5.根据权利要求3所述的方法,其特征在于,步骤2.4)根据搜索的深度、UI类设置搜索停止规则。
6.根据权利要求1所述的方法,其特征在于,所述功能类图中类A指向类B有三种含义:a)类A在API中调用了某个方法,该方法的参数是类B的对象;b)类A作为某个参数对象,其构造函数的参数是类B的对象;c)类A作为某个参数的对象,它是由类B的某个方法返回的。
7.一种结合动态和静态代码分析技术的安卓应用程序功能类图生成装置,其特征在于,包括:
动态分析模块,负责基于动态Trace分析,获取安卓应用程序的功能类集合;
静态分析模块,负责根据获取的功能类集合,利用静态智能搜索技术分析安卓应用程序的源代码,生成功能类图。
8.根据权利要求7所述的装置,其特征在于,所述动态分析模块进行以下操作:
运行APP指定的功能,获取其运行Trace;
分析Trace结构,找到入口函数调用;
查看函数调用栈,获取调用序列;
从调用序列中获取相关的功能类集合。
9.根据权利要求7或8所述的装置,其特征在于,所述静态分析模块进行以下操作:
根据得到的功能类集合,确定搜索范围;
根据得到的入口函数,确定搜索起点;
设置类关系搜索规则:
设置搜索停止规则:
在APP源代码中启动搜索,确定类集合中各类之间的关系;
根据类间关系,建立功能类图。
10.根据权利要求9所述的装置,其特征在于,所述设置类关系搜索规则,是从入口函数所在类开始,仅搜索与当前类存在特殊关系的类,而不去搜索其他无关类;所述特殊关系包括:继承关系、依赖关系、关联关系、聚合关系、组合关系、实现关系;所述设置搜索停止规则,是根据搜索的深度、UI类设置搜索停止规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810282385.3A CN108762752B (zh) | 2018-04-02 | 2018-04-02 | 一种结合动态和静态代码分析技术的安卓应用程序功能类图生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810282385.3A CN108762752B (zh) | 2018-04-02 | 2018-04-02 | 一种结合动态和静态代码分析技术的安卓应用程序功能类图生成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108762752A true CN108762752A (zh) | 2018-11-06 |
CN108762752B CN108762752B (zh) | 2019-07-12 |
Family
ID=63980614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810282385.3A Active CN108762752B (zh) | 2018-04-02 | 2018-04-02 | 一种结合动态和静态代码分析技术的安卓应用程序功能类图生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108762752B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100054A (zh) * | 2020-08-12 | 2020-12-18 | 北京大学 | 一种面向数据管控的程序静态分析方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164252A (zh) * | 2013-04-15 | 2013-06-19 | 西安电子科技大学 | 一种由序列图生成Java代码框架的方法 |
US20170337372A1 (en) * | 2016-05-18 | 2017-11-23 | Trustlook Inc. | Maliciousness Categorization of Application Packages Based on Dynamic Analysis |
CN107832619A (zh) * | 2017-10-10 | 2018-03-23 | 电子科技大学 | Android平台下应用程序漏洞自动化挖掘系统及方法 |
-
2018
- 2018-04-02 CN CN201810282385.3A patent/CN108762752B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164252A (zh) * | 2013-04-15 | 2013-06-19 | 西安电子科技大学 | 一种由序列图生成Java代码框架的方法 |
US20170337372A1 (en) * | 2016-05-18 | 2017-11-23 | Trustlook Inc. | Maliciousness Categorization of Application Packages Based on Dynamic Analysis |
CN107832619A (zh) * | 2017-10-10 | 2018-03-23 | 电子科技大学 | Android平台下应用程序漏洞自动化挖掘系统及方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100054A (zh) * | 2020-08-12 | 2020-12-18 | 北京大学 | 一种面向数据管控的程序静态分析方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108762752B (zh) | 2019-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577324B (zh) | 移动应用中隐私信息泄露的静态检测方法 | |
CN103839005B (zh) | 移动操作系统的恶意软件检测方法和恶意软件检测系统 | |
CN103793652A (zh) | 一种基于静态分析的应用系统代码安全扫描装置 | |
CN110389896A (zh) | 代码自动化分析和测试方法、装置及计算机可读存储介质 | |
CN105677574B (zh) | 基于函数控制流的安卓应用漏洞检测方法和系统 | |
CN104899147A (zh) | 一种面向安全检查的代码静态分析方法 | |
CN104598274A (zh) | 一种自动插桩编译安装方法及系统 | |
CN112733156A (zh) | 基于代码属性图的软件脆弱性智能检测方法、系统及介质 | |
CN104866764B (zh) | 一种基于对象引用图的Android手机恶意软件检测方法 | |
CN105677306A (zh) | 自动化脚本的编写方法和装置 | |
CN107679402A (zh) | 恶意代码行为特征提取方法 | |
CN112688966A (zh) | webshell检测方法、装置、介质和设备 | |
CN105045715A (zh) | 基于编程模式和模式匹配的漏洞聚类方法 | |
US20170017792A1 (en) | Method and device for constructing apk virus signature database and apk virus detection system | |
CN107358099B (zh) | 基于llvm中间表示程序切片技术的无用变量检测方法 | |
CN115827610A (zh) | 一种有效负荷的检测方法及装置 | |
CN113901463B (zh) | 面向概念漂移的可解释Android恶意软件检测方法 | |
CN108762752B (zh) | 一种结合动态和静态代码分析技术的安卓应用程序功能类图生成方法和装置 | |
CN106919403B (zh) | 云环境下基于Java字节码的多粒度代码克隆检测方法 | |
Feichtner et al. | Obfuscation-resilient code recognition in Android apps | |
CN113468524A (zh) | 基于rasp的机器学习模型安全检测方法 | |
CN111382424A (zh) | 一种基于受控环境的移动应用敏感行为检测方法和系统 | |
CN109670317B (zh) | 一种基于原子控制流图的物联网设备继承性漏洞挖掘方法 | |
CN110309656B (zh) | 一种隐式类型转换安全性检测方法 | |
CN116627818A (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 |