CN111538985A - Android应用运行环境检测方法及其装置 - Google Patents
Android应用运行环境检测方法及其装置 Download PDFInfo
- Publication number
- CN111538985A CN111538985A CN202010074664.8A CN202010074664A CN111538985A CN 111538985 A CN111538985 A CN 111538985A CN 202010074664 A CN202010074664 A CN 202010074664A CN 111538985 A CN111538985 A CN 111538985A
- Authority
- CN
- China
- Prior art keywords
- android
- application
- call stack
- environment
- running environment
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明的Android应用运行环境检测方法以及Android应用运行环境检测装置。该方法包括:获取步骤,获取Android组件启动时的调用栈;以及匹配步骤,将所述获取步骤获取的调用栈与预先设置的检测模板进行匹配,若匹配失败,则判断为虚拟运行环境,若匹配成功则判断为Android运行环境。根据本发明,能够利用Android函数调用栈来检测是运行在Android运行环境中还是运行在虚拟运行环境中,为应用运行环境的安全性的判断提供了一个创新的评价指标,能够更准确地检测运行环境的安全性。
Description
技术领域
本发明涉及计算机技术,具体地涉及一种用于检测运行环境是否安全的Android应用运行环境检测方法、Android应用运行环境检测装置以及包含该装置的客户端装置。
背景技术
随着Android系统的发展,越来越多的手机等移动设备搭载Android操作系统,基于Android系统的应用也层出不穷。
Android系统运行环境的安全性对应用特别是支付、金融类的应用至关重要。应用的文件和应用运行时产生的数据都存在于Android系统中,如果Android系统运行环境存在风险,则其中的应用的正常使用会受到影响,数据也极易被不法分子窃取,造成用户应用体验差和财产损失。
目前用户在Android系统中登录应用时,同一个应用在同一时刻只能供一个用户登录,部分应用开发商和部分手机厂商为了拓展应用的功能,满足部分人群在同一部手机中同时登录同一个应用的多个账户的需要,推出了复制应用的功能。该功能可以使用户在同一部手机中创建同一个应用的两个或多个副本,每个副本之间相互独立,并且多个副本可以同时运行,从而实现用户在同一部手机中同时登录同一个应用的多个账户的功能。用户登录创建的副本应用以后,副本应用运行于创建该副本应用的应用开发商或手机厂商单独创建的环境中。该运行环境不同于Android系统原生环境,相较于原生环境,该环境具有不稳定性和可入侵性。副本应用运行极易发生不可预知的错误,影响用户体验。因其易被入侵,副本应用行为易被随意篡改,副本应用获取的Android系统数据也不可信,副本应用的文件数据和运行时数据均存在于该环境中,用户数据易被非法获取、修改和删除,账户安全性得不到保障。
目前,Android副本应用运行环境检测方法主要有文件目录检测、应用列表检测等。
文件目录检测采用检测应用私有文件目录的方式判断运行环境。正常情况下,应用的私有文件目录符合一定的规范,而且目录路径中会包含应用的信息。若副本应用运行于虚拟环境中,则副本应用的私有文件目录所在路径为提供虚拟环境的应用的目录。因此通过获取应用的私有文件目录,并与规范进行比较,同时判断路径中是否包含其他应用信息,便可以判断当前应用是否运行在虚拟环境中。
应用列表检测采用检测手机中安装当前应用的数量的方式判断运行环境。当副本应用运行于虚拟环境中时,加上原始应用,此时手机中同时运行了两个或多个同一应用。通过在副本应用中检测手机中安装的应用信息,如果统计出本应用在手机中同时存在两个或多个,则说明当前应用运行于虚拟环境中。
然而,以上方法通过采集应用信息实现检测,但应用信息容易被第三方应用非法篡改,或采集过程中使用错误信息替换,导致获取到的应用目录信息和安装信息失真,从而检测失败。
发明内容
鉴于上述问题,本发明旨在提出一种能够可靠检测应用运行环境安全性的Android应用运行环境检测方法、Android应用运行环境检测装置以及包含该装置的客户端装置。
本发明的Android应用运行环境检测方法,其特征在于,包括下述步骤:
获取步骤,获取Android组件启动时的调用栈;以及
匹配步骤,将所述获取步骤获取的调用栈与预先设置的检测模板进行匹配,若匹配失败,则判断为虚拟运行环境,若匹配成功则判断为Android运行环境。
可选地,预先采集Android不同版本的调用栈信息作为所述检测模板。
可选地,预先采集Android不同版本的Android系统函数作为调用栈信息并生成所述检测模板,
在所述匹配步骤中,将所述获取步骤获取的调用栈与预先设置的检测模板进行匹配,若检测出所述调用栈存在非Android系统函数,则判断为虚拟运行环境,否则判断为Android运行环境。
可选地,在所述获取步骤中,Android组件在主线程启动,在Android组件的回调过程中获取调用栈。
可选地,所述获取步骤包括:
在工作线程触发Android组件的启动;
通过系统调用使得在主线程启动Android组件;
在Android组件的回调中产生并保存调用栈;以及
在工作线程取出调用栈。
可选地,在所述匹配步骤之后进一步包括:
应用标识获取步骤,获取应用标识;
进程列表获取步骤,获取属于应用标识下的进程列表;以及
检测步骤,判断在应用标识下的进程列表中是否包含其他应用的进程,若判断结果为包含其他应用的进程,则检测为虚拟运行环境,若判断结果为每个应用id下的进程都不包含其他应用的进程,则检测为Android运行环境。
可选地,在所述检测步骤之后进一步包括:
应用用户名获取步骤,获取应用所在用户的用户名;
系统主用户名获取步骤,获取Android系统的主用户名;以及
比较步骤,比较该应用所在用户的用户名与所述主用户名是否相同,如果两者相同,则判断该应用运行在Android运行环境中,若两者不相同,则判断该应用运行在虚拟运行环境中。
可选地,在所述匹配步骤之后进一步包括:
应用用户名获取步骤,获取应用所在用户的用户名;
系统主用户名获取步骤,获取Android系统的主用户名;以及
比较步骤,比较该应用所在用户的用户名与所述主用户名是否相同,如果两者相同,则判断该应用运行在Android运行环境中,若两者不相同,则判断该应用运行在虚拟运行环境中。
可选地,在所述匹配步骤之后进一步包括:
文件目录检测步骤,获取应用的私有文件目录并与规定的规范进行比较,同时判断路径中是否包含其他应用信息,由此来判断当前应用是否运行在虚拟环境中。
可选地,在所述匹配步骤之后进一步包括:
应用列表检测步骤,获取当前应用的数量并判断该应用的数量是是否大于1个,由此来判断当前应用是否运行在虚拟环境中。
本发明的Android应用运行环境检测装置,其特征在于,
包括:函数调用栈模块,用于基于函数调用栈来检测Android应用运行环境,
其中,所述函数调用栈模块包括:
获取子模块,用于获取Android组件启动时的调用栈;以及
匹配子模块,用于将所述获取子模块获取的调用栈与预先设置的检测模板进行匹配,若匹配失败,则判断为虚拟运行环境,若匹配成功则判断为Android运行环境。
可选地,预先采集Android不同版本的调用栈信息作为所述检测模板并存储在所述匹配子模块中。
可选地,预先采集Android不同版本的Android系统函数作为调用栈信息并生成所述检测模板并存储在所述匹配子模块中,
进一步,在所述匹配子模块中,将所述获取子模块获取的调用栈与预先设置的检测模板进行匹配,若检测出所述调用栈存在非Android系统函数,则判断为虚拟运行环境,否则判断为Android运行环境。
可选地,在所述获取子模块中,用于在Android组件的回调过程中获取调用栈。
可选地,进一步包括:
进程列表检测模块,用于基于进程列表检测Android应用运行环境。
可选地,所述进程列表检测模块包括:
应用标识获取子模块,用于获取应用标识;
进程列表获取子模块,用于获取属于应用标识下的进程列表;以及
检测子模块,用于判断在应用标识下的进程列表中是否包含其他应用的进程,若判断结果为包含其他应用的进程,则检测为虚拟运行环境,若判断结果为每个应用标识的进程都不包含其他应用的进程,则检测为Android运行环境。
可选地,进一步包括:
用户名检测模块,用于基于应用的用户名来检测Android应用运行环境。
可选地,所述用户名检测模块包括:
应用用户名获取子模块,获取应用所在用户的用户名;
系统主用户名获取子模块,获取Android系统的主用户名;以及
比较子模块,比较该应用所在用户的用户名与所述主用户名是否相同,如果两者相同,则判断该应用运行在Android运行环境中,若两者不相同,则判断该应用运行在虚拟运行环境中。
可选地,进一步包括:
应用列表检测模块,用于获取当前应用的数量并判断该应用的数量是是否大于1个。
可选地,进一步包括:
文件目录检测模块,用于获取应用的私有文件目录并与规定的规范进行比较,同时判断路径中是否包含其他应用信息。
本发明的客户端装置,其特征在于,具备上述的Android应用运行环境检测装置。
可选地,所述Android应用运行环境检测装置用于收集运行环境信息,
所述运行环境信息用于表示运行环境是为虚拟运行环境还是Android运行环境。
本发明的移动终端,其特征在于,具备上述的Android应用运行环境检测装置。
可选地,所述Android应用运行环境检测装置用于收集运行环境信息,
所述运行环境信息用于表示运行环境是为虚拟运行环境还是Android运行环境。
本发明的计算机可读介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时上述的Android应用运行环境检测方法。
本发明的计算机设备,包括存储模块、处理器以及存储在存储模块上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述的Android应用运行环境检测方法。
根据本发明的Android应用运行环境检测方法以及Android应用运行环境检测装置,利用Android函数调用栈、Android多用户机制、Linux进程信息中的一个或者多个进行运行环境检测,并优选地可再进一步结合常规的检测方法,由此能够可靠地实现对应用多副本运行环境的检测,判断当前应用运行环境是否安全,提高检测的准确性。
而且,本发明的Android应用运行环境检测方法以及Android应用运行环境检测装置可以检测大部分手机以及主流的第三方提供副本运行环境的应用,检测成功率高。对于使用方,可以通过提供自身应用的信息增强检测效果。
附图说明
图1表示在Android运行环境中service的正常启动过程。
图2表示在虚拟运行环境中的service的启动过程。
图3表示service的启动过程中工作线程和主线程的动作。
图4是表示本发明的第一实施方式的Android应用运行环境检测方法的流程图。
图5是表示本发明的第一实施方式的Android应用运行环境检测装置的构造图。
图6表示在Android运行环境中uid与应用的对应关系。
图7表示在虚拟运行环境中uid与应用的对应关系。
图8是表示本发明的第二实施方式的Android应用运行环境检测方法的流程图。
图9是表示本发明的第二实施方式的Android应用运行环境检测装置的构造图。
图10表示在Android运行环境中用户名与应用的对应关系。
图11表示在虚拟运行环境中用户名与应用的对应关系。
图12是表示本发明的第三实施方式的Android应用运行环境检测方法的流程图。
图13是表示本发明的第三实施方式的Android应用运行环境检测装置的构造图。
图14是表示本发明的变形例1的Android应用运行环境检测装置的构造图。
图15是表示本发明实施例1的客户终端的构造示意图。
具体实施方式
下面介绍的是本发明的多个实施例中的一些,旨在提供对本发明的基本了解。并不旨在确认本发明的关键或决定性的要素或限定所要保护的范围。
出于简洁和说明性目的,本文主要参考其示范实施例来描述本发明的原理。但是,本领域技术人员将容易地认识到,相同的原理可等效地应用于所有类型的Android应用运行环境检测方法以及Android应用运行环境检测装置,并且可以在其中实施这些相同的原理,以及任何此类变化不背离本专利申请的真实精神和范围。
而且,在下文描述中,参考了附图,这些附图图示特定的示范实施例。在不背离本发明的精神和范围的前提下可以对这些实施例进行电、机械、逻辑和结构上的更改。此外,虽然本发明的特征是结合若干实施/实施例的仅其中之一来公开的,但是如针对任何给定或可识别的功能可能是期望和/或有利的,可以将此特征与其他实施/实施例的一个或多个其他特征进行组合。因此,下文描述不应视为在限制意义上的,并且本发明的范围由所附权利要求及其等效物来定义。
诸如“具备”和“包括”之类的用语表示除了具有在说明书和权利要求书中有直接和明确表述的单元(模块)和模块以外,本发明的技术方案也不排除具有未被直接或明确表述的其它单元(模块)和模块的情形。
本发明的Android应用运行环境检测方法以及Android应用运行环境检测装置的技术构思在于,在常规检测方法的基础上,针对Android系统层面和Linux层面,提出了更加可靠的多副本应用运行环境检测方法,提出了函数调用栈检测机制、系统进程检测机制、Android用户名检测机制等的对于系统信息进行检测的机制,以提高检测的命中率。
第一实施方式
首先,对于本发明的第一实施方式的Android应用运行环境检测方法以及Android应用运行环境检测装置进行说明。
本发明的发明人发现:在Android系统中启动Android组件(activity、service、broadcastreceiver、contentprovider)时,均需要通过调用系统函数实现。部分第三方应用通过拦截系统调用,在启动Android组件的过程中加入自身业务逻辑,创建虚拟的Android运行环境,使其他应用副本运行于该虚拟环境中,在该虚拟环境中运行的应用并未感知到异常,从而实现同一应用的多个副本同时运行于系统中。
具体地,这里以在Android系统中启动service为例进行说明。
首先,说明在Android运行环境中与在虚拟运行环境中service(服务)的启动过程的不同。
图1表示在Android运行环境中service的正常启动过程。图2表示在虚拟运行环境中的service的启动过程。
如图1所示,在Android运行环境中service的正常启动过程如下:
在Android应用中,事件触发启动service组件,通过系统调用,AMS(Activity ManagerService)组件管理器通过启动组件,使得service启动运行。
接着,说明在虚拟运行环境中service的启动过程。
如图2所示,当第三方应用创建虚拟的Android运行环境(虚拟运行环境)以后,运行于该虚拟环境中的应用的service启动过程如下:
在Android应用中,事件触发启动service组件,系统调用进入虚拟运行环境(该虚拟运行环境由第三方应用创建),最终由虚拟运行环境启动service组件。
发明人发现:在系统调用的过程中,函数调用栈描述了系统方法的调用顺序,正常流程中,调用栈中应该均为Android系统函数,若Android系统被入侵,则系统调用栈中则会存在入侵者的调用过程,获取组件启动时的调用栈信息,若检测出其中出现过非系统函数,则表明当前Android运行环境存在风险。
基于这样的发现,发明人提出了第一实施方式的Android应用运行环境检测方法。
图3表示service的启动过程中工作线程和主线程的动作。如图3所示,包括下述步骤:
从工作线程启动service;
自定义service在主线程启动;
在AMS回调自定义service的过程中,产生调用栈并保存;
向工作线程通知结果;以及
工作线程根据通知取出调用栈并根据调用栈检测运行环境。
由于Android不同版本调用栈会发生变化,因此需要提前采集各版本公共的调用栈信息,作为检测模板。例如,预先采集Android不同版本的Android系统函数作为调用栈信息来作为检测模板。
这里采集检测模块的原则在于:保证不会因为Android版本变化造成误判的情况下,尽量增大检测命中率。在应用中获取调用栈以后,与检测模板进行匹配,若匹配失败,则认为应用运行于虚拟环境中。
图4是表示本发明的第一实施方式的Android应用运行环境检测方法的流程图。
如图4所示,本发明的第一实施方式的Android应用运行环境检测方法包括下述步骤:
步骤S10:获取Android组件启动时的调用栈;
步骤S11:将获取的调用栈与预先设置的检测模板进行匹配,若匹配成功继续步骤S12,若匹配失败跳至步骤S14;
步骤S12:进一步判断是否还有下一条调用栈,若判断结果为是则返回步骤S10,若判断结果为否继续步骤S13;
步骤S13:检测为非虚拟运行环境(即Android运行环境);以及
步骤S14:检测为虚拟运行环境。
在本实施方式中以service作为Android组件为例进行了说明,本发明能够适用于包括service在内的各类Android组件,例如,activity、broadcastreceiver、contentprovider等。
接着,对于本发明的第一实施方式的Android应用运行环境检测装置进行说明。
图5是表示本发明的第一实施方式的Android应用运行环境检测装置的构造图。
如图5所示,本发明的第一实施方式的Android应用运行环境检测装置包括:函数调用栈模块100。该函数调用栈模块100用于基于函数调用栈来检测Android应用运行环境是否为虚拟运行环境。
其中,函数调用栈模块100包括:
获取子模块110,用于获取Android组件启动时的调用栈;以及
匹配子模块120,用于将所述获取子模块110获取的调用栈与预先设置的检测模板进行匹配,若匹配失败,则判断为虚拟运行环境,若匹配成功则判断为Android运行环境。
其中,获取子模块110在Android组件的回调过程中获取调用栈。
而且,在匹配子模块120中,预先采集Android不同版本的调用栈信息作为所述检测模板并存储。这样,在匹配子模块120中,将获取子模块110获取的调用栈与预先设置的检测模板进行匹配,若检测出获取子模块110获取的调用栈中存在非Android系统函数,就直接判断为包含非Android系统函数,这里只要有一条调用栈与检测模板不匹配,即判断为虚拟运行环境,如果所有的调用栈都能够与检测模板进行匹配,则判断为Android运行环境。
如上所述,在第一实施方式的Android应用运行环境检测方法以及Android应用运行环境检测装置中,能够利用Android函数调用栈来检测是运行在Android运行环境中还是运行在虚拟运行环境中,为应用运行环境的安全性的判断提供了一个创新的评价指标,能够更准确地检测运行环境的安全性。
第二实施方式
接着,对于本发明的第二实施方式的Android应用运行环境检测方法以及Android应用运行环境检测装置进行说明。第二实施方式的Android应用运行环境检测方法以及Android应用运行环境的检测装是在第一实施方式的基础上增加了应用进程列表检测。
具体地,进一步发明人发现:应用启动以后,Android系统运行环境中会留存应用的进程信息。创建虚拟Android运行环境的应用也会创建自身的进程。在Android系统中,每个应用都有独立的uid(应用标识),该uid下有该应用的进程列表。当副本应用在虚拟Android运行环境中运行时,副本应用与创建虚拟Android环境的应用共享uid,通过获取该uid的Linux进程,则可以获得副本应用和创建虚拟Android环境应用两者的进程列表。若在副本应用的进程列表中发现其他应用的进程,则表示副本应用运行于Android虚拟环境中。
图6表示在Android运行环境中uid与应用的对应关系。图7表示在虚拟运行环境中uid与应用的对应关系。
在Android运行环境中,一个uid下仅存在该uid下的应用的进程列表,如图6所示,uid1下仅存在应用1的进程信息,uid2下仅存在应用2的进程信息,uid3下仅存在应用3的进程信息。
假设应用1开启了虚拟运行环境,应用2的副本运行于应用1的虚拟运行环境中,uid与应用的对应关系如图7所示:在应用2中获取uid,并获取该uid下的进程信息,如果进程信息中存在除应用2自身进程以外进程信息,则证明应用2运行于虚拟运行环境中。
基于这样的发现,提出基于应用进程列表检测Android应用运行环境的技术方案。
图8是表示本发明的第二实施方式的Android应用运行环境检测方法中的基于应用进程列表进行检测的部分流程图。
如图8所示,本发明的第二实施方式的Android应用运行环境检测方法中的基于应用进程列表检测Android应用运行环境包括下述步骤:
步骤S20:在应用启动后获取应用的uid;
步骤S21:获取属于该应用的uid下的进程列表,例如获取该uid的Linux进程;
步骤S22:判断在该应用的uid下的进程列表中是否是本应用进程,若判断结果为是则继续步骤S23,否则继续步骤S25;
步骤S23:判断是否还有下一条进程,如果判断结果为是则返回步骤S22,如果判断结果为否则继续步骤S24;
步骤S24:检测为非虚拟环境;以及
步骤S25:检测为虚拟环境。
接着,说明本发明的第二实施方式的Android应用运行环境检测装置。
图9是表示本发明的第二实施方式的Android应用运行环境检测装置的构造图。
图9中的函数调用栈模块100的具体构造与第一实施方式中的相同,这里省略说明。
图9是表示本发明的第二实施方式的Android应用运行环境检测装置是在第一实施方式的基础进一步包括:进程列表检测模块200。
进程列表检测模块200包括:
应用标识获取子模块210,用于获取应用标识;
进程列表获取子模块220,用于获取属于应用标识下的进程列表;以及
检测子模块230,用于判断在该应用标识下的进程列表中是否包含其他应用的进程,若判断结果为包含其他应用的进程,则检测为虚拟运行环境,若判断结果为每个应用标识的进程都不包含其他应用的进程,则检测为Android运行环境。
如上所述,在第二实施方式的Android应用运行环境检测方法以及Android应用运行环境检测装置中,能够利用Linux进程信息来检测是运行在Android运行环境中还是运行在虚拟运行环境中,又为应用运行环境的安全性的判断提供了一个创新的评价指标,能够更准确地检测运行环境的安全性。
第三实施方式
接着,对于本发明的第三实施方式的Android应用运行环境检测方法以及Android应用运行环境检测装置进行说明。第三实施方式的Android应用运行环境检测方法以及Android应用运行环境检测装置是在第一实施方式的基础上增加了用户名检测机制。
具体地,进一步发明人发现:Android系统提供了多用户机制,系统启动时会默认创建主用户,应用默认运行于主用户中,在主用户下可以创建附属用户。应用可以在主用户和附属用户下同时创建,同时运行,应用副本便运行于附属用户中。Android系统会为主用户分配固定的而且是唯一的用户名即userid,通过获取应用所在用户的用户名,并与主用户的用户名进行比较,便可以判断应用是否运行于附属用户的环境中。
图10表示在Android运行环境中用户名与应用的对应关系。图11表示在虚拟运行环境中用户名与应用的对应关系。
在Android运行环境(非虚拟运行环境)中,如图10所示,Android系统会创建一个主用户名userid1,所有应用均运行于该主用户名下,即,应用1、应用2以及应用3均运行于同一个主用户userid1名下。
与此相对,在虚拟运行环境中,则如图11所示,Android系统会创建一个主用户名userid1,应用1、应用2以及应用3位于同一个主用户userid1名下,但是应用1副本、应用2副本以及应用3副本位于另外一个附属用户userid2名下。
基于这样的发现,提出了基于用户名检测Android应用运行环境的技术方案。
图12是表示本发明的第三实施方式的Android应用运行环境检测方法中的用户名检测Android应用运行环境的部分的流程图。
如图12所示,本发明的第三实施方式的Android应用运行环境检测方法中的基于用户名检测Android应用运行环境包括下述步骤:
步骤S30:获取应用所在用户的用户名;
步骤S31:获取Android系统的主用户名;以及
步骤S32:比较该应用所在用户的用户名与所述主用户名是否相同,如果两者相同,则继续步骤S33,否则继续步骤S34:
步骤S33:判断该应用运行在非虚拟运行环境中;
步骤S34:若两者不相同,则判断该应用运行在虚拟运行环境中。
接着,说明本发明的第三实施方式的Android应用运行环境检测装置。
图13是表示本发明的第二实施方式的Android应用运行环境检测装置的构造图。
图13中的函数调用栈模块100的具体构造与第一实施方式中的相同,这里省略说明。
图13是表示本发明的第三实施方式的Android应用运行环境检测装置是在第一实施方式的基础进一步包括:用户名检测模块300。
用户名检测模块300包括:
应用用户名获取子模块310,获取应用所在用户的用户名;
系统主用户名获取子模块320,获取Android系统的主用户名;以及
比较子模块330,比较该应用所在用户的用户名与所述主用户名是否相同,如果两者相同,则判断该应用运行在Android运行环境中,若两者不相同,则判断该应用运行在虚拟运行环境中。
如上所述,在第三实施方式的Android应用运行环境检测方法以及Android应用运行环境检测装置中,能够根据应用所在的用户的用户名来检测是运行在Android运行环境中还是运行在虚拟运行环境中,又为应用运行环境的安全性的判断提供了一个创新的评价指标,能够更准确地检测运行环境的安全性。
本发明还提供计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的Android应用运行环境检测方法。
本发明还提供一种计算机设备,包括存储模块、处理器以及存储在存储模块上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述的Android应用运行环境检测方法。
本发明的Android应用运行环境检测方法以及Android应用运行环境检测装置利用Android函数调用栈、Android多用户机制、Linux进程信息,并优选地可再进一步结合常规的检测方法,可以实现对应用多副本运行环境的检测,判断当前应用运行环境是否安全。
而且,本发明的Android应用运行环境检测方法以及Android应用运行环境检测装置可以检测大部分手机以及主流的第三方提供副本运行环境的应用,检测成功率高。对于使用方,可以通过提供自身应用的信息增强检测效果。
变形例1
变形例1是在第二实施方式的基础上进一步增加用户名检测机制。第一实施方式对应函数调用栈检测机制,第二实施方式在第一实施方式的基础上增加了系统进程检测机制,那么变形例1就包含了三种检测机制:函数调用栈检测机制、系统进程检测机制、用户名检测机制。
图14是表示本发明的变形例1的Android应用运行环境检测装置的构造图。如图14所示,本发明的变形例1的Android应用运行环境检测装置中,通过设置函数调用栈模块100、进程列表检测模块200以及用户名检测模块300,能够通过三种机制提高判能力,能够更进一步地提高检测精度以及准确性,由此,能够提高系统的安全性。
变形例2
变形例2是在上述实施方式以及变形例1的基础上作为补充检测机制,增加了应用文件目录检测机制。
文件目录检测采用检测应用私有文件目录的方式判断运行环境。在Android环境下,应用的私有文件目录符合一定的规范,而且目录路径中会包含应用的信息。若副本应用运行于虚拟环境的情况下,则副本应用的私有文件目录所在路径为提供虚拟环境的应用的目录。因此文件目录检测机制就是通过获取应用的私有文件目录,并与规范进行比较,同时判断路径中是否包含其他应用信息,来判断当前应用是否运行在虚拟环境中。
变形例3
变形例3是在上述实施方式以及变形例1和2的基础上作为补充检测机制,增加了应用列表检测机制。
应用列表检测采用当前应用的数量的方式判断运行环境。当副本应用运行于虚拟环境中时,加上原始应用,此时同时运行了两个或多个同一应用。通过在副本应用中检测安装的应用信息,如果统计出本应用同时存在两个或多个,则说明当前应用运行于虚拟环境中。
实施例1
图15是表示本发明实施例1的客户终端的构造示意图。
图15表示了一个应用的客户端装置10和与其通信连接的风控平台20。在该客户端装置10中具备一个设备指纹采集模块11,该设备指纹采集模块11原本用于采集设备信息和系统信息,在实施例1中进一步将第一实施方式~第三实施方式以及变形例1~变形例3的任意一个集成到该设备指纹采集模块11中,由此能够使得设备指纹采集模块1除了提供设备信息和系统信息之外,还能够提供运行环境信息(用于检查是否运行在Android应用运行环境还是运行在虚拟运行环境中),将该运行环境信息与设备信息、系统信息一起作为设备指纹信息传输到风控平台20,由此,风控平台20通过运行环境信息能够对应用环境的安全性进行评估,为之后的操作提供安全性依据。
以上例子主要说明了本发明的Android应用运行环境检测方法以及Android应用运行环境检测装置。尽管只对其中一些本发明的具体实施方式进行了描述,但是本领域普通技术人员应当了解,本发明可以在不偏离其主旨与范围内以许多其他的形式实施。因此,所展示的例子与实施方式被视为示意性的而非限制性的,在不脱离如所附各权利要求所定义的本发明精神及范围的情况下,本发明可能涵盖各种的修改与替换。
Claims (26)
1.一种Android应用运行环境检测方法,其特征在于,包括下述步骤:
获取步骤,获取Android组件启动时的调用栈;以及
匹配步骤,将所述获取步骤获取的调用栈与预先设置的检测模板进行匹配,若匹配失败,则判断为虚拟运行环境,若匹配成功则判断为Android运行环境。
2.如权利要求1所述的Android应用运行环境检测方法,其特征在于,
预先采集Android不同版本的调用栈信息作为所述检测模板。
3.如权利要求1所述的Android应用运行环境检测方法,其特征在于,
预先采集Android不同版本的Android系统函数作为调用栈信息并生成所述检测模板,
在所述匹配步骤中,将所述获取步骤获取的调用栈与预先设置的检测模板进行匹配,若检测出所述调用栈存在非Android系统函数,则判断为虚拟运行环境,否则判断为Android运行环境。
4.如权利要求1所述的Android应用运行环境检测方法,其特征在于,
在所述获取步骤中,Android组件在主线程启动,在Android组件的回调过程中获取调用栈。
5.如权利要求4所述的Android应用运行环境检测方法,其特征在于,所述获取步骤包括:
在工作线程触发Android组件的启动;
通过系统调用使得在主线程启动Android组件;
在Android组件的回调中产生并保存调用栈;以及
在工作线程取出调用栈。
6.如权利要求1所述的Android应用运行环境检测方法,其特征在于,在所述匹配步骤之后进一步包括:
应用标识获取步骤,获取应用标识;
进程列表获取步骤,获取属于应用标识下的进程列表;以及
检测步骤,判断在应用标识下的进程列表中是否包含其他应用的进程,若判断结果为包含其他应用的进程,则检测为虚拟运行环境,若判断结果为每个应用id下的进程都不包含其他应用的进程,则检测为Android运行环境。
7.如权利要求1所述的Android应用运行环境检测方法,其特征在于,在所述检测步骤之后进一步包括:
应用用户名获取步骤,获取应用所在用户的用户名;
系统主用户名获取步骤,获取Android系统的主用户名;以及
比较步骤,比较该应用所在用户的用户名与所述主用户名是否相同,如果两者相同,则判断该应用运行在Android运行环境中,若两者不相同,则判断该应用运行在虚拟运行环境中。
8.如权利要求7所述的Android应用运行环境检测方法,其特征在于,
在所述匹配步骤之后进一步包括:
应用用户名获取步骤,获取应用所在用户的用户名;
系统主用户名获取步骤,获取Android系统的主用户名;以及
比较步骤,比较该应用所在用户的用户名与所述主用户名是否相同,如果两者相同,则判断该应用运行在Android运行环境中,若两者不相同,则判断该应用运行在虚拟运行环境中。
9.如权利要求1~8任意一项所述的Android应用运行环境检测方法,其特征在于,
在所述匹配步骤之后进一步包括:
文件目录检测步骤,获取应用的私有文件目录并与规定的规范进行比较,同时判断路径中是否包含其他应用信息,由此来判断当前应用是否运行在虚拟环境中。
10.如权利要求1~8任意一项所述的Android应用运行环境检测方法,其特征在于,
在所述匹配步骤之后进一步包括:
应用列表检测步骤,获取当前应用的数量并判断该应用的数量是是否大于1个,由此来判断当前应用是否运行在虚拟环境中。
11.一种Android应用运行环境检测装置,其特征在于,
包括:函数调用栈模块,用于基于函数调用栈来检测Android应用运行环境,
其中,所述函数调用栈模块包括:
获取子模块,用于获取Android组件启动时的调用栈;以及
匹配子模块,用于将所述获取子模块获取的调用栈与预先设置的检测模板进行匹配,若匹配失败,则判断为虚拟运行环境,若匹配成功则判断为Android运行环境。
12.如权利要求11所述的Android应用运行环境检测装置,其特征在于,
预先采集Android不同版本的调用栈信息作为所述检测模板并存储在所述匹配子模块中。
13.如权利要求11所述的Android应用运行环境检测装置,其特征在于,
预先采集Android不同版本的Android系统函数作为调用栈信息并生成所述检测模板并存储在所述匹配子模块中,
进一步,在所述匹配子模块中,将所述获取子模块获取的调用栈与预先设置的检测模板进行匹配,若检测出所述调用栈存在非Android系统函数,则判断为虚拟运行环境,否则判断为Android运行环境。
14.如权利要求11所述的Android应用运行环境检测装置,其特征在于,
在所述获取子模块中,用于在Android组件的回调过程中获取调用栈。
15.如权利要求11所述的Android应用运行环境检测装置,其特征在于,进一步包括:
进程列表检测模块,用于基于进程列表检测Android应用运行环境。
16.如权利要求15所述的Android应用运行环境检测装置,其特征在于,所述进程列表检测模块包括:
应用标识获取子模块,用于获取应用标识;
进程列表获取子模块,用于获取属于应用标识下的进程列表;以及
检测子模块,用于判断在应用标识下的进程列表中是否包含其他应用的进程,若判断结果为包含其他应用的进程,则检测为虚拟运行环境,若判断结果为每个应用标识的进程都不包含其他应用的进程,则检测为Android运行环境。
17.如权利要求11所述的Android应用运行环境检测装置,其特征在于,进一步包括:
用户名检测模块,用于基于应用的用户名来检测Android应用运行环境。
18.如权利要求17所述的Android应用运行环境检测装置,其特征在于,所述用户名检测模块包括:
应用用户名获取子模块,获取应用所在用户的用户名;
系统主用户名获取子模块,获取Android系统的主用户名;以及
比较子模块,比较该应用所在用户的用户名与所述主用户名是否相同,如果两者相同,则判断该应用运行在Android运行环境中,若两者不相同,则判断该应用运行在虚拟运行环境中。
19.如权利要求11所述的Android应用运行环境检测装置,其特征在于,进一步包括:
应用列表检测模块,用于获取当前应用的数量并判断该应用的数量是是否大于1个。
20.如权利要求11所述的Android应用运行环境检测装置,其特征在于,进一步包括:
文件目录检测模块,用于获取应用的私有文件目录并与规定的规范进行比较,同时判断路径中是否包含其他应用信息。
21.一种客户端装置,其特征在于,具备权利要求11~22任意一项所述的Android应用运行环境检测装置。
22.如权利要求21所述的客户端装置,其特征在于,
所述Android应用运行环境检测装置用于收集运行环境信息,
所述运行环境信息用于表示运行环境是为虚拟运行环境还是Android运行环境。
23.一种移动终端,其特征在于,具备权利要求11~22任意一项所述的Android应用运行环境检测装置。
24.如权利要求23所述的客户端装置,其特征在于,
所述Android应用运行环境检测装置用于收集运行环境信息,
所述运行环境信息用于表示运行环境是为虚拟运行环境还是Android运行环境。
25.一种计算机可读介质,其上存储有计算机程序,其特征在于,
该计算机程序被处理器执行时实现权利要求1~10任意一项所述的Android应用运行环境检测方法。
26.一种计算机设备,包括存储模块、处理器以及存储在存储模块上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1~10任意一项所述的Android应用运行环境检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010074664.8A CN111538985A (zh) | 2020-01-22 | 2020-01-22 | Android应用运行环境检测方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010074664.8A CN111538985A (zh) | 2020-01-22 | 2020-01-22 | Android应用运行环境检测方法及其装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111538985A true CN111538985A (zh) | 2020-08-14 |
Family
ID=71974825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010074664.8A Pending CN111538985A (zh) | 2020-01-22 | 2020-01-22 | Android应用运行环境检测方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111538985A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965841A (zh) * | 2021-04-05 | 2021-06-15 | 朱小英 | 基于h5的云手机支付方法及装置 |
CN114625443A (zh) * | 2022-03-23 | 2022-06-14 | 珠海雷酷互动科技有限公司 | 一种安卓系统虚拟环境运行方法、装置、设备及存储介质 |
CN114637541A (zh) * | 2022-03-22 | 2022-06-17 | 马上消费金融股份有限公司 | 运行环境确定方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090241105A1 (en) * | 2008-03-20 | 2009-09-24 | International Business Machines Corporation | Detecting Applications in a Virtualization Environment |
CN102722672A (zh) * | 2012-06-04 | 2012-10-10 | 奇智软件(北京)有限公司 | 一种检测运行环境真实性的方法及装置 |
CN105912417A (zh) * | 2016-04-11 | 2016-08-31 | 北京金山安全软件有限公司 | 虚拟系统的检测方法和相关软件运行方法以及相关装置 |
-
2020
- 2020-01-22 CN CN202010074664.8A patent/CN111538985A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090241105A1 (en) * | 2008-03-20 | 2009-09-24 | International Business Machines Corporation | Detecting Applications in a Virtualization Environment |
CN102722672A (zh) * | 2012-06-04 | 2012-10-10 | 奇智软件(北京)有限公司 | 一种检测运行环境真实性的方法及装置 |
CN105912417A (zh) * | 2016-04-11 | 2016-08-31 | 北京金山安全软件有限公司 | 虚拟系统的检测方法和相关软件运行方法以及相关装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965841A (zh) * | 2021-04-05 | 2021-06-15 | 朱小英 | 基于h5的云手机支付方法及装置 |
CN114637541A (zh) * | 2022-03-22 | 2022-06-17 | 马上消费金融股份有限公司 | 运行环境确定方法及装置 |
CN114625443A (zh) * | 2022-03-23 | 2022-06-14 | 珠海雷酷互动科技有限公司 | 一种安卓系统虚拟环境运行方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109492378B (zh) | 一种基于设备识别码的身份验证方法、服务器及介质 | |
CN111538985A (zh) | Android应用运行环境检测方法及其装置 | |
US9910743B2 (en) | Method, system and device for validating repair files and repairing corrupt software | |
US9652632B2 (en) | Method and system for repairing file at user terminal | |
RU2535506C2 (ru) | Система и способ формирования сценариев модели поведения приложений | |
US7669059B2 (en) | Method and apparatus for detection of hostile software | |
CN112929326A (zh) | 恶意域名访问的检测方法、装置及计算机可读存储介质 | |
US7526677B2 (en) | Fragility handling | |
CN105550585B (zh) | 一种应用程序安全性测试方法、装置和系统 | |
CN110968874B (zh) | 一种漏洞检测方法、装置、服务器及存储介质 | |
CN114417335A (zh) | 一种恶意文件检测方法、装置、电子设备及存储介质 | |
CN113806811B (zh) | 一种被篡改固件自动恢复方法、装置及存储介质 | |
CN113010892B (zh) | 小程序恶意行为检测方法和装置 | |
CN107766068B (zh) | 应用系统补丁安装方法、装置、计算机设备和存储介质 | |
CN112257058A (zh) | 一种操作系统可信计算校验方法及系统 | |
CN108959915B (zh) | 一种rootkit检测方法、装置及服务器 | |
KR101716690B1 (ko) | 데이터 무단 엑세스 차단 방법 및 그 기능이 구비된 컴퓨팅 장치 | |
CN110825451A (zh) | 一种小程序页面地址的配置、校验方法及装置 | |
CN112395603A (zh) | 基于指令执行序列特征的漏洞攻击识别方法、装置及计算机设备 | |
KR102357715B1 (ko) | 보안 os 이미지 관리 방법 및 이 방법을 이용하는 인터넷 서버 | |
JP4958734B2 (ja) | 電気機器、障害防止方法及び障害防止プログラム | |
CN117786666B (zh) | 功能代码的启动校验方法、装置、电子设备及存储介质 | |
CN111158935B (zh) | 一种应用程序检测方法、装置、计算机设备及存储介质 | |
CN114090427A (zh) | 一种系统异常处理的方法和装置 | |
CN111881459B (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 |