CN103177210B - 一种在Android中植入动态污点分析模块的方法 - Google Patents
一种在Android中植入动态污点分析模块的方法 Download PDFInfo
- Publication number
- CN103177210B CN103177210B CN201310112042.XA CN201310112042A CN103177210B CN 103177210 B CN103177210 B CN 103177210B CN 201310112042 A CN201310112042 A CN 201310112042A CN 103177210 B CN103177210 B CN 103177210B
- Authority
- CN
- China
- Prior art keywords
- application program
- stain
- pitching pile
- analysis module
- dynamic
- 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
Abstract
本发明涉及一种在Android中植入动态污点分析模块的方法,该方法对Android系统的系统类库和应用程序进行静态插桩,在插桩后的应用程序装载过程中,通过重定向虚拟机启动函数的方法重构执行环境,使插桩后的应用程序能够引用插桩后的系统类库,在插桩后的应用程序运行过程中,动态污点分析模块同步运行,实施动态污点跟踪分析。本发明无需修改Android系统源代码和系统架构、无需刷机及ROOT目标终端设备,便可以在Android系统平台上植入具有污点跟踪功能的动态污点分析模块,对敏感信息操作进行监控分析。
Description
技术领域
本发明涉及一种动态污点分析方法,特别是关于一种可直接在Android中植入动态污点分析模块的方法。
背景技术
动态污点分析技术是一种有效而实用的信息流分析技术。利用动态污点分析技术可以较为准确地监控应用程序在运行过程中的信息流,例如跟踪是否有敏感数据从预设的污点源传播至预设的安全敏感操作点。动态污点分析技术通常由三个关键技术环节构成:污点引入、污点传播和污点检验。污点引入是指在从预设的污点源读取数据时,需要为所读取的数据设置相应的污点值。污点传播是指在应用程序处理污点数据的过程中,依据设定的策略传播污点值。污点检验是指在预设的安全敏感操作点检验所操作数据是否是污点数据。
动态污点分析技术现已被广泛用于未知漏洞检测、恶意软件分析、测试用例生成等安全研究领域。在Android系统(安卓系统)平台上,动态污点分析技术的一个典型应用场景就是对敏感信息操作的监控分析。在这一应用场景下,预设的污点源是用户的敏感信息,主要包括设备标识符、手机号码、地理位置、联系人列表和短信消息等;预设的安全敏感操作点是将信息传输出终端设备的操作,主要包括:网络通信、短信通讯等。通过动态污点分析技术实施对敏感信息操作的监控分析,能够有效地减轻敏感信息泄漏给用户带来的威胁和隐患。
现有的Android系统平台上的动态污点分析技术通常采用动态插桩的方法,将具有污点跟踪功能的动态污点分析模块插入系统虚拟机或模拟器中。这些方法需要修改Android系统源代码或改变Android系统架构,如需要配置繁琐的运行环境、编译源代码、刷机以及ROOT目标终端设备等操作,这些对于普通用户而言过于复杂和专业,从而导致动态污点分析技术难以应用在普通用户的Android系统终端设备上。
发明内容
针对上述问题,本发明的目的是提供一种简单易行的在Android中植入动态污点分析模块的方法。
为了解决上述技术问题,本发明采取以下技术方案:一种在Android中植入动态污点分析模块的方法,包括以下步骤:1)对系统类库进行静态插桩,将动态污点分析模块直接插入系统类库文件中,生成插桩后的系统类库;2)对应用程序进行静态插桩,将动态污点分析模块直接插入应用程序文件中,生成插桩后的应用程序;3)在插桩后的应用程序装载过程中,通过重定向虚拟机启动函数的方法重构执行环境,使插桩后的应用程序能够引用插桩后的系统类库;4)在插桩后的应用程序运行过程中,动态污点分析模块同步运行,实施动态污点跟踪分析,例如跟踪是否有敏感数据从预设的污点源传播至预设的安全敏感操作点。
上述步骤1)包括以下步骤:1.1)从Android系统终端设备中导出系统类库的压缩包和代码文件;1.2)在系统类库的代码文件中直接插入动态污点分析模块的代码文件;1.3)将插入动态污点分析模块代码文件后的系统类库的代码文件重新加入系统类库的压缩包中;1.4)将系统类库的压缩包重新导入Android系统终端设备。
上述步骤2)包括以下步骤:2.1)解包应用程序;2.2)在解包后的应用程序的代码文件中直接插入动态污点分析模块的代码文件;2.3)在应用程序的配置文件中声明动态污点分析模块的相关组件;2.4)将应用程序文件目录重新打包并签名,生成插桩后的应用程序。
上述步骤3)包括以下步骤:3.1)重定向虚拟机启动函数,添加设定的启动参数;3.2)重新启动虚拟机,指定经步骤1)插桩后的系统类库所在路径作为系统类的搜索路径;3.3)使用重新启动的虚拟机重新装载经步骤2)插桩后的应用程序,使重新装载的插桩后的应用程序能引用插桩后的系统类库。
上述步骤4)包括以下步骤:4.1)当应用程序从预设的污点源读取数据时,为读取的数据设置相应的污点值;4.2)在应用程序处理污点数据的过程中,依据设定的策略传播污点值;4.3)当应用程序执行预设的安全敏感操作时,检验操作数据是否是污点数据。
本发明由于采取以上技术方案,其具有以下优点:1、本发明无需修改Android系统源代码和系统架构、无需刷机及ROOT目标终端设备,便可以在Android系统平台上植入运行具有污点跟踪功能的动态污点分析模块。本发明可广泛用于各种Android系统平台终端加载动态污点分析模块,对敏感信息操作进行监控分析,为用户提供强有力的隐私信息保护,大大减小隐私信息泄漏给用户造成的危害及损失。
附图说明
图1是本发明的流程示意图
图2是本发明对系统类库进行静态插桩的流程示意图
图3是本发明对应用程序进行静态插桩的流程示意图
图4是本发明重构执行环境的流程示意图
图5是本发明实施动态污点跟踪分析的流程示意图
具体实施方式
下面结合附图和实施例对本发明进行详细的描述。
本发明的基本思想是对Android系统的系统类库和应用程序进行静态插桩,将具有污点跟踪功能的动态污点分析模块直接插入到系统类库文件和应用程序文件中,动态污点分析模块将在插桩后的应用程序和插桩后的系统类库文件的运行过程中同步运行,以实现动态污点跟踪分析。
如图1所示,本发明包括以下步骤:
1)对系统类库进行静态插桩,将动态污点分析模块直接插入系统类库文件中,生成插桩后的系统类库;
2)对应用程序进行静态插桩,将动态污点分析模块直接插入应用程序文件中,生成插桩后的应用程序;
3)在插桩后的应用程序装载过程中,通过重定向虚拟机启动函数的方法重构执行环境,使插桩后的应用程序能够引用插桩后的系统类库;
4)在插桩后的应用程序运行过程中,动态污点分析模块同步运行,实施动态污点跟踪分析,例如跟踪是否有敏感数据从预设的污点源传播至预设的安全敏感操作点。
如图2所示,上述步骤1)可以包括以下步骤:
1.1)从Android系统终端设备中导出系统类库的压缩包和代码文件;
1.2)在系统类库的代码文件中直接插入动态污点分析模块的代码文件;
1.3)将插入动态污点分析模块代码文件后的系统类库的代码文件重新加入系统类库的压缩包中;
1.4)将系统类库的压缩包重新导入Android系统终端设备。
如图3所示,上述步骤2)可以包括以下步骤:
2.1)解包应用程序,解包后的应用程序文件目录中包含应用程序的代码文件、配置文件等;
2.2)在解包后的应用程序的代码文件中直接插入动态污点分析模块的代码文件;
2.3)在应用程序的配置文件中声明动态污点分析模块的相关组件;
2.4)将应用程序文件目录重新打包并签名,生成插桩后的应用程序。
如图4所示,上述步骤3)可以包括以下步骤:
3.1)重定向虚拟机启动函数,添加设定的启动参数;
3.2)重新启动虚拟机,指定经步骤1)插桩后的系统类库所在路径作为系统类的搜索路径;
3.3)使用重新启动的虚拟机重新装载经步骤2)插桩后的应用程序,使重新装载的插桩后的应用程序能引用插桩后的系统类库。
如图5所示,上述步骤4)可以包括以下步骤:
4.1)当应用程序从预设的污点源读取数据时,为读取的数据设置相应的污点值;
4.2)在应用程序处理污点数据的过程中,依据设定的策略传播污点值;
4.3)当应用程序执行预设的安全敏感操作时,检验操作数据是否是污点数据。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可以通过程序指令相关硬件运作完成,程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件或软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明做出各种相应的改变和变形,凡是在本发明技术方案的基础上进行的等同变换和改进,均不应排除在本发明的保护范围之外。
Claims (5)
1.一种在Android中植入动态污点分析模块的方法,包括以下步骤:
1)对系统类库进行静态插桩,将动态污点分析模块直接插入系统类库文件中,生成插桩后的系统类库;具体包括以下步骤:
1.1)从Android系统终端设备中导出系统类库的压缩包和代码文件;
1.2)在系统类库的代码文件中直接插入动态污点分析模块的代码文件;
1.3)将插入动态污点分析模块代码文件后的系统类库的代码文件重新加入系统类库的压缩包中;
1.4)将系统类库的压缩包重新导入Android系统终端设备;
2)对应用程序进行静态插桩,将动态污点分析模块直接插入应用程序文件中,生成插桩后的应用程序;
3)在插桩后的应用程序装载过程中,通过重定向虚拟机启动函数的方法重构执行环境,使插桩后的应用程序能够引用插桩后的系统类库;
4)在插桩后的应用程序运行过程中,动态污点分析模块同步运行,实施动态污点跟踪分析,跟踪是否有敏感数据从预设的污点源传播至预设的安全敏感操作点。
2.如权利要求1所述的一种在Android中植入动态污点分析模块的方法,其特征在于,所述步骤2)包括以下步骤:
2.1)解包应用程序;
2.2)在解包后的应用程序的代码文件中直接插入动态污点分析模块的代码文件;
2.3)在应用程序的配置文件中声明动态污点分析模块的相关组件;
2.4)将应用程序文件目录重新打包并签名,生成插桩后的应用程序。
3.如权利要求1或2所述的一种在Android中植入动态污点分析模块的方法,其特征在于,所述步骤3)包括以下步骤:
3.1)重定向虚拟机启动函数,添加设定的启动参数;
3.2)重新启动虚拟机,指定经步骤1)插桩后的系统类库所在路径作为系统类的搜索路径;
3.3)使用重新启动的虚拟机重新装载经步骤2)插桩后的应用程序,使重新装载的插桩后的应用程序能引用插桩后的系统类库。
4.如权利要求1或2所述的一种在Android中植入动态污点分析模块的方法,其特征在于,所述步骤4)包括以下步骤:
4.1)当应用程序从预设的污点源读取数据时,为读取的数据设置相应的污点值;
4.2)在应用程序处理污点数据的过程中,依据设定的策略传播污点值;
4.3)当应用程序执行预设的安全敏感操作时,检验操作数据是否是污点数据。
5.如权利要求3所述的一种在Android中植入动态污点分析模块的方法,其特征在于,所述步骤4)包括以下步骤:
4.1)当应用程序从预设的污点源读取数据时,为读取的数据设置相应的污点值;
4.2)在应用程序处理污点数据的过程中,依据设定的策略传播污点值;
4.3)当应用程序执行预设的安全敏感操作时,检验操作数据是否是污点数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310112042.XA CN103177210B (zh) | 2013-04-02 | 2013-04-02 | 一种在Android中植入动态污点分析模块的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310112042.XA CN103177210B (zh) | 2013-04-02 | 2013-04-02 | 一种在Android中植入动态污点分析模块的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103177210A CN103177210A (zh) | 2013-06-26 |
CN103177210B true CN103177210B (zh) | 2015-07-29 |
Family
ID=48637057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310112042.XA Active CN103177210B (zh) | 2013-04-02 | 2013-04-02 | 一种在Android中植入动态污点分析模块的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103177210B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473488B (zh) * | 2013-09-18 | 2016-04-06 | 浙江大学城市学院 | 一种android应用程序防盗版的方法及系统 |
CN103544415B (zh) * | 2013-10-25 | 2015-08-12 | 江苏通付盾信息科技有限公司 | 一种移动平台应用软件的加固方法 |
CN103714288B (zh) * | 2013-12-26 | 2016-05-25 | 华中科技大学 | 一种数据流跟踪方法 |
CN103729295A (zh) * | 2013-12-31 | 2014-04-16 | 北京理工大学 | 一种污点传播路径分析方法 |
WO2015192637A1 (zh) * | 2014-06-17 | 2015-12-23 | 北京奇虎科技有限公司 | 软件安装包的加固保护方法和装置 |
CN104102880B (zh) * | 2014-06-30 | 2016-10-05 | 华中科技大学 | 一种检测Android权限提升攻击的应用程序重写方法和系统 |
CN105373734A (zh) * | 2014-09-01 | 2016-03-02 | 中兴通讯股份有限公司 | 应用数据的保护方法及装置 |
CN104731654B (zh) * | 2015-04-03 | 2018-03-27 | 南京大学 | 一种针对安卓应用的迁移重构及支持系统 |
CN106484490A (zh) * | 2015-09-02 | 2017-03-08 | 腾讯科技(深圳)有限公司 | 一种应用程序的跟踪分析方法和装置 |
CN105740701A (zh) * | 2016-02-01 | 2016-07-06 | 中国人民大学 | 一种Android平台应用执行环境重构方法及装置 |
CN107229866B (zh) * | 2016-03-23 | 2021-02-26 | 全球能源互联网研究院 | 一种检验与监控byod环境下移动应用安全的方法 |
CN106446672B (zh) * | 2016-07-25 | 2020-10-16 | 中国科学院大学 | 一种Android第三方类库权限隔离方法及装置 |
CN106778328B (zh) * | 2016-11-23 | 2019-12-10 | 中国人民解放军信息工程大学 | 一种敏感信息安全保护方法及系统 |
CN109240700B (zh) * | 2018-07-06 | 2021-04-23 | 北京大学 | 关键代码定位方法与系统 |
CN113778838B (zh) * | 2020-06-09 | 2024-01-26 | 中国电信股份有限公司 | 二进制程序动态污点分析方法及装置 |
CN112068932A (zh) * | 2020-09-01 | 2020-12-11 | 北京指掌易科技有限公司 | 应用程序的集成、监控方法、装置、系统、设备及介质 |
CN113328914B (zh) * | 2021-05-31 | 2022-12-13 | 山石网科通信技术股份有限公司 | 工控协议的模糊测试方法、装置、存储介质及处理器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521543A (zh) * | 2011-12-23 | 2012-06-27 | 中国人民解放军国防科学技术大学 | 一种基于动态污点分析进行消息语义解析的方法 |
CN102722434A (zh) * | 2012-05-24 | 2012-10-10 | 兰雨晴 | 一种针对Linux进程调度的性能测试方法和工具 |
-
2013
- 2013-04-02 CN CN201310112042.XA patent/CN103177210B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521543A (zh) * | 2011-12-23 | 2012-06-27 | 中国人民解放军国防科学技术大学 | 一种基于动态污点分析进行消息语义解析的方法 |
CN102722434A (zh) * | 2012-05-24 | 2012-10-10 | 兰雨晴 | 一种针对Linux进程调度的性能测试方法和工具 |
Non-Patent Citations (3)
Title |
---|
" All You Ever Wanted to Know About Dynamic Taint Analysis and Forward Symbolic Execution";Edward J. Schwartz等;《2010 IEEE Symposium on Security and Privacy》;20100519;317-331 * |
"Capturing Information Flow with Concatenated Dynamic Taint Analysis";Hyung Chan Kim等;《2009 International Conference on Availability, Reliability and Security》;20090319;355-362 * |
"Dissecting Android Malware: Characterization and Evolution";Yajin Zhou等;《2012 IEEE Symposium on Security and Privacy》;20120523;95-109 * |
Also Published As
Publication number | Publication date |
---|---|
CN103177210A (zh) | 2013-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103177210B (zh) | 一种在Android中植入动态污点分析模块的方法 | |
CN108229112B (zh) | 一种保护应用程序、应用程序的运行方法以及装置 | |
US10025694B1 (en) | Monitoring activity of software development kits using stack trace analysis | |
CN107451474B (zh) | 用于终端的软件漏洞修复方法和装置 | |
US10698797B2 (en) | Mobile application program testing method, server, terminal, and storage medium | |
CN108536451B (zh) | 应用程序的埋点注入方法和装置 | |
CN111399840B (zh) | 一种模块开发方法及装置 | |
CN107273142B (zh) | 程序更新方法、程序运行方法及装置 | |
CN104765612A (zh) | 一种访问可信执行环境、可信应用的系统及方法 | |
CN104331662A (zh) | Android恶意应用检测方法及装置 | |
CN106294113B (zh) | 一种基于可编程式测试服务的创建方法及装置 | |
CN104598274A (zh) | 一种自动插桩编译安装方法及系统 | |
CN113190464B (zh) | mock测试方法、装置、电子设备及介质 | |
CN105022936A (zh) | 一种类class文件加密解密方法和装置 | |
CN105094878A (zh) | 一种集成系统库文件的方法和装置 | |
CN104036194B (zh) | 一种应用程序中泄露隐私数据的漏洞检测方法及装置 | |
CN110928770B (zh) | 软件测试的方法、装置、系统、存储介质和电子设备 | |
CN106469078A (zh) | 一种智能家电的升级方法及装置 | |
CN103793248A (zh) | 一种应用程序升级的方法及装置 | |
CN113448690B (zh) | 监测方法及装置 | |
US20130185626A1 (en) | METHOD, TERMINAL AND COMPUTER-READABLE RECORDING MEDIUM FOR COMPILING JAVASCRIPT INCLUDED IN WEB APPLICATION USING Ahead-Of-Time (AOT) | |
Kröll et al. | Aristoteles–dissecting apple’s baseband interface | |
Ascia et al. | Making android apps data-leak-safe by data flow analysis and code injection | |
CN106778301A (zh) | 基于cocos2d‑x的可靠的跨平台数据存储方法及系统 | |
KR102145324B1 (ko) | 라이브러리 인젝션을 통한 취약점 분석 방법 및 서버 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |