CN108829603A - 安卓应用运行时的数据修改方法 - Google Patents
安卓应用运行时的数据修改方法 Download PDFInfo
- Publication number
- CN108829603A CN108829603A CN201810663271.3A CN201810663271A CN108829603A CN 108829603 A CN108829603 A CN 108829603A CN 201810663271 A CN201810663271 A CN 201810663271A CN 108829603 A CN108829603 A CN 108829603A
- Authority
- CN
- China
- Prior art keywords
- data
- android
- application operation
- application
- modification method
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种安卓应用运行时的数据修改方法,包括获取安卓应用的进程的数据访问权限;运行安卓应用;读取应用运行时的数据;搜索指定的需要修改的数据;修改指定的数据,从而完成安卓应用运行时的数据修改。本发明方法通过获取安卓应用的修改权限,并在安卓应用运行实时修改安卓应用的数据,从而达到实时检测安卓应用在极端数据情况下的运行性能的目的,因此本发明方法能够较好的提高安卓应用的测试效率。
Description
技术领域
本发明具体涉及一种安卓应用运行时的数据修改方法。
背景技术
随着智能化技术的飞速发展,智能手机已经成为了人们日常生产和生活中必不可少的工具,给人们的生产和生活带来了无尽的便利。
安卓系统(Android)是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑。目前,安装有安卓系统的智能设备占据市场上约85%左右的份额,运行在安卓系统上的应用程序更是不计其数。
由于现在人们越来越依赖于智能设备,因此运行在安卓系统上的应用的稳定性和可靠性就显得尤为重要。在安卓应用运行时,测试安卓应用在极端数据情况下的稳定性是测试的必备项目之一。目前针对安卓应用的极端数据测试,往往采用的是日志或者人工构造测试数据的方式。但是,当前的测试方法,不仅非常死板,而且无法快速灵活的得到安卓应用在运行时的测试情况,从而严重影响了测试的效率。
发明内容
本发明的目的在于提供一种能够较好的提高安卓应用的测试效率的安卓应用运行时的数据修改方法。
本发明提供的这种安卓应用运行时的数据修改方法,包括如下步骤:
S1.获取安卓应用的进程的数据访问权限;
S2.运行安卓应用;
S3.读取应用运行时的数据;
S4.搜索指定的需要修改的数据;
S5.修改指定的数据,从而完成安卓应用运行时的数据修改。
步骤S1所述的获取安卓应用的进程的数据访问权限,具体为通过root工具或程序及系统接口获取安卓应用的root权限,然后获取数据的访问权限。
步骤S1所述的获取安卓应用的进程的数据访问权限,具体为通过沙盒启动应用,然后在启动过程中获取数据的访问权限。
步骤S1所述的获取安卓应用的进程的数据访问权限,具体为通过替换应用自带的库文件,然后在安卓应用运行并加载库文件的过程中获取数据的访问权限。
步骤S3所述的读取应用运行时的数据,具体为采用直接读取的方式读取应用运行时的数据。
步骤S3所述的读取应用运行时的数据,具体为依据内存模型,判断内存访问的权限,再读取应用运行时的数据。
步骤S3所述的读取应用运行时的数据,具体为采用如下步骤进行读取:
A.在对内存进行读取前,保存当前的堆栈环境,并标记当前地址;
B.依据内存模型,判断内存访问的权限;
C.读取应用运行时的数据;
D.若在对内存进行访问时出现错误,则根据步骤A保存的堆栈环境和地址对内存数据进行恢复。
步骤S4所述的搜索指定的需要修改的数据,具体为采用简单字符串搜索算法,对字符串进行逐个比对,从而搜索得到指定的需要修改的数据。
步骤S4所述的搜索指定的需要修改的数据,具体为采用字符串搜索算法进行搜索,从而搜索得到指定的需要修改的数据。
步骤S4所述的搜索指定的需要修改的数据,具体为采用如下步骤进行搜索:
a.在内存中获取数据;
b.将步骤a获取的数据的格式转换为长度对齐的字符串型数据并进行存储;
c.根据步骤b进行转换时的记录的数据类型对不同的数据进行比对搜索。
步骤S5所述的修改指定的数据,具体为采用将目标数据直接写入内存的方式对指定的数据进行修改。
步骤S5所述的修改指定的数据,具体为调用系统接口函数对指定的数据进行修改。
步骤S5所述的修改指定的数据,具体为通过安卓应用的内核对象对指定的数据进行修改。
步骤S5所述的修改指定的数据,具体为使用系统接口追加数据写入的权限,然后再对指定的数据进行直接修改。
本发明提供的这种安卓应用运行时的数据修改方法,通过获取安卓应用的修改权限,并在安卓应用运行实时修改安卓应用的数据,从而达到实时检测安卓应用在极端数据情况下的运行性能的目的,因此本发明方法能够较好的提高安卓应用的测试效率。
附图说明
图1为本发明方法的方法流程图。
具体实施方式
如图1所示为本发明方法的方法流程图:本发明提供的这种安卓应用运行时的数据修改方法,包括如下步骤:
S1.获取安卓应用的进程的数据访问权限;
在具体实施时,可以采用如下几个方式获取数据访问权限:
1)通过root工具或程序及系统接口获取安卓应用的root权限,然后获取数据的访问权限;
2)通过沙盒启动应用,然后在启动过程中获取数据的访问权限;
通过沙盒获取应用权限原理是基于Linux系统的多用户机制实现:沙盒对一些系统服务进行代理和替换,为在其中运行的应用构造一个虚拟环境,使应用可以无感知运行在沙盒环境中;应用在运行时被分配不同的uid(用户id)和gid(组id),不同id的进程会被Android系统隔离,而通过沙盒启动的应用与沙盒本身具有相同的用户id,因此对应用具有root权限;
3)通过替换应用自带的库文件,然后在安卓应用运行并加载库文件的过程中获取数据的访问权限;
S2.运行安卓应用;
S3.读取应用运行时的数据;
在具体实施时,可以采用如下几个方式读取数据:
(1)采用直接读取的方式读取应用运行时的数据;
(2)依据内存模型,判断内存访问的权限,再读取应用运行时的数据;通过对内存地址判断是否拥有读、写的权限,从而规避内存错误,大大提高了内存读取和写入过程中的可靠性;
(3)基于linux信号量的异常捕获处理机制,采用如下步骤进行读取:
A.在对内存进行读取前,保存当前的堆栈环境,并标记当前地址;
B.依据内存模型,判断内存访问的权限;
C.读取应用运行时的数据;
D.若在对内存进行访问时出现错误,则根据步骤A保存的堆栈环境和地址对内存数据进行恢复;
S4.搜索指定的需要修改的数据;
在具体实施时,可以采用如下几个方式搜索需要的数据:
Ⅰ.采用简单字符串搜索算法,对字符串进行逐个比对,从而搜索得到指定的需要修改的数据;
Ⅱ.采用字符串搜索算法(比如KMP算法、Sunday算法等)进行搜索,从而搜索得到指定的需要修改的数据;
Ⅲ.采用如下步骤进行搜索:
a.在内存中获取数据;
b.将步骤a获取的数据(一般为无符号整数类型)的格式转换为长度对齐的字符串型数据并进行存储;
c.根据步骤b进行转换时的记录的数据类型对不同的数据进行比对搜索;
S5.修改指定的数据,从而完成安卓应用运行时的数据修改;
在具体实施时,可以采用如下几个方式对数据进行修改:
ⅰ.采用将目标数据直接写入内存的方式对指定的数据进行修改
ⅱ.调用系统接口函数对指定的数据进行修改;
ⅲ.通过安卓应用的内核对象对指定的数据进行修改;
ⅳ.使用系统接口追加数据写入的权限,然后再对指定的数据进行直接修改,例如mprotect函数可修改内存区保护属性:
PROT_READ:表示可写;
PROT_WRITE:表示可读;
PROT_EXEC:表示可执行;
PROT_NONE:表示不允许读或写。
以下结合一个实施例,对本发明方法进行进一步说明:
以某手机应用,极难游戏3为例,在基于沙盒环境下,对本发明的实施过程进行说明:
在手机上正常安装极难游戏3;
在手机上安装沙盒修改器;
在沙盒环境下添加和启动游戏3;
选择游戏3,并在游戏3中进行若干次操作后,暂停游戏。
调出修改器模块,并搜索此时的积分数据(此时为2万多条搜索记录),然后返回游戏;
继续在游戏3中进行若干次操作,待积分数据发生变化后,再次调出修改器界面,搜索现在的积分数据(此时记录为30多条),然后返回游戏;
继续在游戏3中进行若干次操作,积分数据发生变化后,又调出修改器界面,搜索现在的积分数据(此时记录为3条);
依次点击搜索记录,并修改积分值为想要测试的值,比如1000分,然后返回游戏;
继续游戏,发现积分开始从1000开始增加;
完成本关,并观察游戏运行的逻辑是否和程序预计的逻辑是否匹配。
类似的方式可以测试积分为10000分或者4294967295或者2147483647时程序是否能够正常进行。这样可以发现程序在极限情况下,能否正常按照设计时的逻辑运行。
通过测试,我们可以知道以下几点:
①极难游戏3中,积分值在0到2147483647之内时,程序可以正常运行。而一旦超出这个范围,积分显示将不正常(变为负数)。
②游戏的积分数据并不安全,在外部程序修改后,可以直接影响程序的运行结果,给程序安全性和健壮性带来极大的风险隐患。
③不安全的积分数据地址,如搜索结果所示地址,开发人员可以依据此信息定位数据位置。
Claims (10)
1.一种安卓应用运行时的数据修改方法,包括如下步骤:
S1.获取安卓应用的进程的数据访问权限;
S2.运行安卓应用;
S3.读取应用运行时的数据;
S4.搜索指定的需要修改的数据;
S5.修改指定的数据,从而完成安卓应用运行时的数据修改。
2.根据权利要求1所述的安卓应用运行时的数据修改方法,其特征在于步骤S1所述的获取安卓应用的进程的数据访问权限,具体为通过root工具或程序及系统接口获取安卓应用的root权限,然后获取数据的访问权限。
3.根据权利要求1所述的安卓应用运行时的数据修改方法,其特征在于步骤S1所述的获取安卓应用的进程的数据访问权限,具体为通过沙盒启动应用,然后在启动过程中获取数据的访问权限。
4.根据权利要求1所述的安卓应用运行时的数据修改方法,其特征在于步骤S1所述的获取安卓应用的进程的数据访问权限,具体为通过替换应用自带的库文件,然后在安卓应用运行并加载库文件的过程中获取数据的访问权限。
5.根据权利要求1所述的安卓应用运行时的数据修改方法,其特征在于步骤S3所述的读取应用运行时的数据,具体为依据内存模型,判断内存访问的权限,再读取应用运行时的数据。
6.根据权利要求1~4之一所述的安卓应用运行时的数据修改方法,其特征在于步骤S3所述的读取应用运行时的数据,具体为采用如下步骤进行读取:
A.在对内存进行读取前,保存当前的堆栈环境,并标记当前地址;
B.依据内存模型,判断内存访问的权限;
C.读取应用运行时的数据;
D.若在对内存进行访问时出现错误,则根据步骤A保存的堆栈环境和地址对内存数据进行恢复。
7.根据权利要求1~4之一所述的安卓应用运行时的数据修改方法,其特征在于步骤S4所述的搜索指定的需要修改的数据,具体为采用简单字符串搜索算法,对字符串进行逐个比对,从而搜索得到指定的需要修改的数据。
8.根据权利要求1~4之一所述的安卓应用运行时的数据修改方法,其特征在于步骤S4所述的搜索指定的需要修改的数据,具体为采用如下步骤进行搜索:
a.在内存中获取数据;
b.将步骤a获取的数据的格式转换为长度对齐的字符串型数据并进行存储;
c.根据步骤b进行转换时的记录的数据类型对不同的数据进行比对搜索。
9.根据权利要求1~4之一所述的安卓应用运行时的数据修改方法,其特征在于步骤S5所述的修改指定的数据,具体为调用系统接口函数对指定的数据进行修改。
10.根据权利要求1~4之一所述的安卓应用运行时的数据修改方法,其特征在于步骤S5所述的修改指定的数据,具体为使用系统接口追加数据写入的权限,然后再对指定的数据进行直接修改。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810663271.3A CN108829603A (zh) | 2018-06-25 | 2018-06-25 | 安卓应用运行时的数据修改方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810663271.3A CN108829603A (zh) | 2018-06-25 | 2018-06-25 | 安卓应用运行时的数据修改方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108829603A true CN108829603A (zh) | 2018-11-16 |
Family
ID=64138146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810663271.3A Pending CN108829603A (zh) | 2018-06-25 | 2018-06-25 | 安卓应用运行时的数据修改方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108829603A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502881A (zh) * | 2019-07-31 | 2019-11-26 | 广州微算互联信息技术有限公司 | 动态修改安卓系统只读属性的方法、系统及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354534A (zh) * | 2016-08-30 | 2017-01-25 | 歌尔科技有限公司 | Android系统下客户端对服务器中应用程序的控制方法 |
CN107016086A (zh) * | 2017-04-01 | 2017-08-04 | 四川艾特赢泰智能科技有限责任公司 | 一种提取安卓系统GooglePlay中行为及位置数据的方法 |
CN107016262A (zh) * | 2015-11-13 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 应用程序权限管理方法及客户端 |
CN108182070A (zh) * | 2016-12-08 | 2018-06-19 | 北京京东尚科信息技术有限公司 | 定制安卓系统rom的方法、装置及终端设备 |
-
2018
- 2018-06-25 CN CN201810663271.3A patent/CN108829603A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107016262A (zh) * | 2015-11-13 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 应用程序权限管理方法及客户端 |
CN106354534A (zh) * | 2016-08-30 | 2017-01-25 | 歌尔科技有限公司 | Android系统下客户端对服务器中应用程序的控制方法 |
CN108182070A (zh) * | 2016-12-08 | 2018-06-19 | 北京京东尚科信息技术有限公司 | 定制安卓系统rom的方法、装置及终端设备 |
CN107016086A (zh) * | 2017-04-01 | 2017-08-04 | 四川艾特赢泰智能科技有限责任公司 | 一种提取安卓系统GooglePlay中行为及位置数据的方法 |
Non-Patent Citations (1)
Title |
---|
冰镜80: "安卓手机游戏数据修改(《侠盗飞车4》为例", 《百度经验》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502881A (zh) * | 2019-07-31 | 2019-11-26 | 广州微算互联信息技术有限公司 | 动态修改安卓系统只读属性的方法、系统及存储介质 |
CN110502881B (zh) * | 2019-07-31 | 2021-09-07 | 广州微算互联信息技术有限公司 | 动态修改安卓系统只读属性的方法、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304720B (zh) | 一种基于机器学习的安卓恶意程序检测方法 | |
CN106940654B (zh) | 源代码中内存错误的自动检测和定位方法 | |
CN102054149B (zh) | 一种恶意代码行为特征提取方法 | |
CN107526625B (zh) | 一种基于字节码检查的Java智能合约安全检测方法 | |
CN102789416B (zh) | 面向bit软件测试的存储器故障注入方法及其模拟器 | |
CN112015491B (zh) | 实现函数跳转的方法、装置及计算机存储介质 | |
CN103049375B (zh) | 一种摄像头在线调试方法 | |
CN105184166A (zh) | 基于内核的安卓程序实时行为分析方法及系统 | |
CN101446918B (zh) | 一种实现用户态调试器调试单个函数的方法及系统 | |
US20070124114A1 (en) | Device testing framework for creating device-centric scenario-based automated tests | |
CN111796831A (zh) | 一种多芯片兼容的编译方法和装置 | |
CN110968437A (zh) | 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质 | |
CN102609275A (zh) | Bios更新系统及其方法 | |
CN112560114B (zh) | 调用智能合约的方法及装置 | |
CN106775501A (zh) | 基于非易失内存设备的数据去冗余方法及系统 | |
CN111914250A (zh) | 一种Linux系统脚本程序运行时验证与管控方法 | |
CN117369868B (zh) | 一种面向国产软件环境的冷热应用代码迁移方法 | |
CN108829603A (zh) | 安卓应用运行时的数据修改方法 | |
CN109582542A (zh) | 一种嵌入式系统核心转储的方法 | |
CN107526966B (zh) | 一种Android平台的复合污点传播追踪方法 | |
CN109947407B (zh) | 一种数据获取方法及装置 | |
CN108710504A (zh) | 数据库操作方法及装置 | |
CN109426546A (zh) | 应用启动方法及装置、计算机存储介质及设备 | |
CN101650688A (zh) | 一种访问vm_io地址空间的方法和用户态调试器 | |
CN103150408B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181116 |