CN109241731A - 一种基于虚拟应用的隐私信息保护方法、装置及存储介质 - Google Patents
一种基于虚拟应用的隐私信息保护方法、装置及存储介质 Download PDFInfo
- Publication number
- CN109241731A CN109241731A CN201811055791.2A CN201811055791A CN109241731A CN 109241731 A CN109241731 A CN 109241731A CN 201811055791 A CN201811055791 A CN 201811055791A CN 109241731 A CN109241731 A CN 109241731A
- Authority
- CN
- China
- Prior art keywords
- virtual application
- sandbox
- application
- service
- information
- 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
- 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
- G06F21/53—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 by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Telephonic Communication Services (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于虚拟应用的隐私信息保护方法、装置及存储介质,该方法包括:获取用于虚拟应用的应用安装包和应用信息;构建运行所述虚拟应用的沙箱并在沙箱中创建代理服务;将所述虚拟应用安装在所述沙箱中;在所述沙箱中创建所述虚拟应用的子进程,并使用代理服务进程替换所述子进程;拦截该虚拟应用获取用户信息的***API并监控所述虚拟应用的行为,将该虚拟应用调用的***API返回为用户设置的信息或者随机信息。本发明的方法使得只要是有调用***API获取的信息都能被拦截,保护程度高、稳定性好,且本发明的沙箱并不是指令级别的虚拟化,只是代理了安卓的服务和Hook了部分API,对***性能影响小,且不需要root权限。
Description
技术领域
本发明涉及数据安全技术领域,特别是一种基于虚拟应用的隐私信息保护方法、装置及存储介质。
背景技术
随着移动通信技术的不断发展,安卓***的市场占有率不断的提高,据2018年市场调研机构Gartner发布了一份报告,数据显示去年全球范围内销售的智能手机中安卓***占有率高达85.7%。随着移动技术的发展,移动支付、在线商城、即时通讯等等的技术大大方便了我们的日常生活。
同时在手机安全方面,手机病毒、恶意软件、广告泛滥、滥用权限、隐私泄露等等的问题,严重威胁着安卓用户。目前市面上的大多数应用获取了大量的应用权限,搜集各种用户信息。谷歌和各个手机厂商意识到了这个问题。不断完善安卓***权限控制***,目前安卓***中安装应用时候会提示应用需要的权限,但是众多的请求让非专业的用户区别十分的困难。更有许多应用中的功能有着“不同意开启某权限无法继续使用”这样的行为。据调查显示大部分应用在安卓***上需要获取的应用权限比IOS***多出了几倍。安卓开放的生态圈导致了开发者对权限的滥用,各种应用对用户隐私肆无忌惮的收集导致了大量的个人信息的泄露。隐私信息的泄漏会导致诈骗、频繁的广告推销电话短信、账户被盗等,严重影响我们的日常生活。所以对于安卓的隐私保护刻不容缓。
虽然现在市面上有很多权限管理的应用及手机管理应用,但是效果却不尽如人意。手机管理应用都需要通过在后台开启多个管理服务,周期性地将驻留进程杀死,此方法对内存、电池等性能消耗较大。有些应用通过修改***底层,拒绝向未授权的程序提供隐私API接口,但此种方法需要Root权限,而且有可能会造成程序获取不到权限而崩溃,用户体验不佳。而且目前Root权限在很多***中的越来越难获取,因为获取了Root权限很可能带来更严重的安全风险,所以手机厂商都对其做了限制。
发明内容
本发明针对上述现有技术中的缺陷,提出了如下技术方案。
一种基于虚拟应用的隐私信息保护方法,该方法包括:
获取步骤,获取用于虚拟应用的应用安装包和应用信息;
构建步骤,构建运行所述虚拟应用的沙箱并在沙箱中创建代理服务;
安装步骤,将所述虚拟应用安装在所述沙箱中;
替换步骤,在所述沙箱中创建所述虚拟应用的子进程,并使用代理服务进程替换所述子进程;
保护步骤,拦截该虚拟应用获取用户信息的***API并监控所述虚拟应用的行为,将该虚拟应用调用的***API返回为用户设置的信息或者随机信息。
更进一步地,所述虚拟应用为安卓虚拟应用。
更进一步地,所述获取步骤的操作为:获取应用的安装包并保存至预定目录,解析所述安装包中的Manifest.xml文件获取应用信息,其中,所述应用信息包括组件信息、权限信息、包名和/或MainActivity。
更进一步地,所述沙箱包括:一个沙箱主进程、一个服务进程和多个客户端进程;所述沙箱主进程用于提供用户管理界面,通过所述用户管理界面管理运行在沙箱的虚拟应用、设置用户信息和/或设置是否允许虚拟应用获取个人隐私资料;服务进程用于提供代理服务,通过Content Provider来启动,通过对安卓***的BinderProxy进行重新构造并替换,实现了一套伪造的安卓***framework层的***service,其中的service是对原安卓***中的service的封装,从而实现对原安卓***服务的代理和替换;所述客户端进程是运行的虚拟应用的进程。
更进一步地,所述安装步骤的操作为:复制所述安装包到沙箱的程序缓存空间中预定的文件夹,并为所述安装包中的so文件准备目录空间,以及将所述安装包中的so文件解压到所述文件夹中。
更进一步地,所述替换步骤的操作为:fork一个主进程作为宿主进程,用于寄宿作为客户端进程的虚拟应用;使用安卓***提供的API,动态加载所述安装包;通过HookStartActivity方法在调用***API时启动StubAcivity;在StubAcivity中将虚拟应用的服务替换为创建的代理服务;通过反射获取到虚拟应用中的MainActivity的class;使用StartActivity启动所述虚拟应用。
更进一步地,所述保护步骤的操作为:在所述客户端进程启动之前对所述虚拟应用使用的API进行Hook;在每个Hook的***API中***监控的代码,记录所述虚拟应用使用的API、次数和调用参数;将所述虚拟应用调用***API的返回值,修改为用户在主界面设置的隐私信息或者随机的隐私信息,从而防止所述虚拟应用获取用户的所述隐私信息。
本发明还提出了一种基于虚拟应用的隐私信息保护装置,该装置包括:
获取单元,用于获取用于虚拟应用的应用安装包和应用信息;
构建单元,用于构建运行所述虚拟应用的沙箱并在沙箱中创建代理服务;
安装单元,用于将所述虚拟应用安装在所述沙箱中;
替换单元,用于在所述沙箱中创建所述虚拟应用的子进程,并使用代理服务进程替换所述子进程;
保护单元,用于拦截该虚拟应用获取用户信息的***API并监控所述虚拟应用的行为,将该虚拟应用调用的***API返回为用户设置的信息或者随机信息。
更进一步地,所述虚拟应用为安卓虚拟应用。
更进一步地,所述获取模块执行的操作为:获取应用的安装包并保存至预定目录,解析所述安装包中的Manifest.xml文件获取应用信息,其中,所述应用信息包括组件信息、权限信息、包名和/或MainActivity。
更进一步地,所述沙箱包括:一个沙箱主进程、一个服务进程和多个客户端进程;所述沙箱主进程用于提供用户管理界面,通过所述用户管理界面管理运行在沙箱的虚拟应用、设置用户信息和/或设置是否允许虚拟应用获取个人隐私资料;服务进程用于提供代理服务,通过Content Provider来启动,通过对安卓***的BinderProxy进行重新构造并替换,实现了一套伪造的安卓***framework层的***service,其中的service是对原安卓***中的service的封装,从而实现对原安卓***服务的代理和替换;所述客户端进程是运行的虚拟应用的进程。
更进一步地,所述安装模块执行的操作为:复制所述安装包到沙箱的程序缓存空间中预定的文件夹,并为所述安装包中的so文件准备目录空间,以及将所述安装包中的so文件解压到所述文件夹中。
更进一步地,所述替换模块执行的操作为:fork一个主进程作为宿主进程,用于寄宿作为客户端进程的虚拟应用;使用安卓***提供的API,动态加载所述安装包;通过HookStartActivity装置在调用***API时启动StubAcivity;在StubAcivity中将虚拟应用的服务替换为创建的代理服务;通过反射获取到虚拟应用中的MainActivity的class;使用StartActivity启动所述虚拟应用。
更进一步地,所述保护模块执行的操作为:在所述客户端进程启动之前对所述虚拟应用使用的API进行Hook;在每个Hook的***API中***监控的代码,记录所述虚拟应用使用的API、次数和调用参数;将所述虚拟应用调用***API的返回值,修改为用户在主界面设置的隐私信息或者随机的隐私信息,从而防止所述虚拟应用获取用户的所述隐私信息。
本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行上述之任一的方法。
本发明的技术效果为:本发明通过构建运行沙箱并在沙箱中创建代理服务,将应用在沙箱中形成虚拟应用进行执行并将该虚拟应用调用的***API返回为用户设置的信息或者随机信息,应用进程中只要是有调用***API获取的信息都能被拦截,保护程度高、稳定性好,用户可以选择一些不希望被获取隐私的应用安装在本发明中的沙箱中,且本发明的沙箱并不是指令级别的虚拟化,只是代理了安卓的服务和Hook了部分API,对***性能影响小,且不需要root权限。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。
图1是根据本发明的实施例的基于虚拟应用的隐私信息保护方法的流程图。
图2是根据本发明的实施例的沙箱的结构图。
图3是根据本发明的实施例的基于虚拟应用的隐私信息保护装置的结构图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了本发明的一种基于虚拟应用的隐私信息保护方法,该方法包括:
获取步骤S101,获取用于虚拟应用的应用安装包和应用信息。
构建步骤S102,构建运行所述虚拟应用的沙箱并在沙箱中创建代理服务。
安装步骤S103,将所述虚拟应用安装在所述沙箱中。
替换步骤S104,在所述沙箱中创建所述虚拟应用的子进程,并使用代理服务进程替换所述子进程。
保护步骤S105,拦截该虚拟应用获取用户信息的***API并监控所述虚拟应用的行为,将该虚拟应用调用的***API返回为用户设置的信息或者随机信息。
在一个实施例中,所述虚拟应用为安卓虚拟应用,虚拟应用的是相对于直接运行在安卓***中的应用来说的,虚拟应用可以是运行在沙箱中的应用、运行在虚拟机中的应用等等,即非直接运行在操作***上的应用。
所述获取步骤S101的操作为:获取应用的安装包并保存至预定目录,解析所述安装包中的Manifest.xml文件获取应用信息,其中,所述应用信息包括组件信息、权限信息、包名和/或MainActivity。
在一个实施例中,获取指定安卓应用的安装包并保存至指定目录。安卓应用安装后会将APK安装包拷贝到***的应用目录下,对于已安装的安卓应用可以使用安卓***PackageManager提供的接口,具体实现调用方法:getPackageManager().getApplicationInfo(packageName,0).SourceDir;解析APK获取指定安卓应用信息是通过解析APK中的Manifest.xml文件获取应用的信息,包括组件信息、权限信息、包名、MainActivity等。然后将这些信息保存在磁盘和内存中,以备后续使用。
如图2所示,所述沙箱包括:一个沙箱主进程(Main Process)、一个服务进程(Server Process)和多个客户端进程(Client);所述沙箱主进程用于提供用户管理界面,通过所述用户管理界面管理运行在沙箱的虚拟应用、设置用户信息和/或设置是否允许虚拟应用获取个人隐私资料;服务进程用于提供代理服务,通过Content Provider来启动,通过对安卓***的BinderProxy进行重新构造并替换,实现了一套伪造的安卓***framework层的***service,其中的service是对原安卓***中的service的封装,从而实现对原安卓***服务的代理和替换;所述客户端进程是运行的虚拟应用的进程。
在一个实施例中,沙箱是一个可以在其中运行其他应用的容器。本发明中被设计成一个安卓应用,具体沙箱的结构如图2所示,这些进程均使用沙箱APP的用户ID(UserID),这样做主要是为了解决Android/Linux***的应用隔离机制。Android/Linux***隔离机制是基于多用户机制实现的,应用在安装时会分配到不同的Linux用户uid/gid。不同的uid就不能访问不同进程的内存空间,除非获取得超级管理员(Root)权限。沙箱中进程使用相同的uid就不会有多用户之间的隔离,就解决了沙箱与应用之间隔离机制。这样在接下来的监控操作就不需要获取Root权限。
在一个实施例中,沙箱环境中需要对许多***服务进行了代理和替换才能保证客户端进程能正常的在沙箱内运行并且被监控。代理服务的原理是使用了代理Binder机制。安卓***中应用在调用***服务时是通过Binder机制进行进程间通信(Inter-ProcessCommunication)。安卓***提供给应用程序调用的***服务并不是真正的服务,而是Binder的代理(BinderProxy),所以通过对这些BinderProxy重新构造并替换,就可以实现对***服务的代理和替换。在沙箱的服务进程,中实现了一套伪造的安卓***framework层的***service,其中的service本质上是对原本的***中的service的封装,这样就可以在伪造的service加入一些监控或者拦截的代码。沙箱的构建及在沙箱中创建代理服务是本发明中重要发明点,其适用性良好、操作方便、可靠性良好,全过程不管是用户还是开发中都不需要刷机、不需要Root、不需要替换***文件、不需要修改应用的安装包;用户可定制性高,用户管理界面有用户可以控制和设置信息的界面。只需要安装一个应用级别的一个APP就可以监控管理和用户隐私保护。用户可以选择性的选一些不希望被获取隐私的应用安装在本发明中,对于其他应用不影响。
在一个实施例中,所述安装步骤S103的操作为:复制所述安装包到沙箱的程序缓存空间中预定的文件夹,并为所述安装包中的so文件准备目录空间,以及将所述安装包中的so文件解压到所述文件夹中。对于支持ART运行时(Android Runtime)的安卓***,还可以选择性的为APK中的dex文件做优化。该步骤实现了将直接运行在安卓***中的应用安装在沙箱中形成虚拟应用。
在一个实施例中,所述替换步骤S104的操作为:fork一个主进程作为宿主进程,用于寄宿作为客户端进程的虚拟应用;使用安卓***提供的API,动态加载所述安装包;通过Hook StartActivity方法在调用***API时启动StubAcivity;在StubAcivity中将虚拟应用的服务替换为创建的代理服务;通过反射获取到虚拟应用中的MainActivity的class;使用StartActivity启动所述虚拟应用。这样就完成了对应用APK的动态加载并替换***服务。这也是本发明的一个重要发明点,其使得用户的隐私信息保护程度高、稳定性好,通过Hook技术拦截***底层的API,应用进程中只要是有调用***API获取的信息都能被拦截。拦截的API都返回虚拟数据,不会导致调用API失败引起崩溃或者无法执行。
在一个实施例中,所述保护步骤S105的操作为:在所述客户端进程启动之前对所述虚拟应用使用的API进行Hook;在每个Hook的***API中***监控的代码,记录所述虚拟应用使用的API、次数和调用参数;将所述虚拟应用调用***API的返回值,修改为用户在主界面设置的隐私信息或者随机的隐私信息,从而防止所述虚拟应用获取用户的所述隐私信息。
使用免Root的Hook方法拦截该应用获取用户信息的***API。由于创建的Client进程都是动态加载的,所以在启动之前可以先对其使用的API进行Hook。
安卓程序一般都是由2个部分的代码组成,一部分是使用Java编写的在DVM(Dalvik Virtual Machine)或者ART(Android Runtime)上运行的代码,另一部分采用原生的C/C++编写。所以需要对2种都实现Hook。对于原生层(Native)API的Hook可以使用开源的跨平台Hook库Substrate。使用该库就可以对C/C++函数进行Hook。对于Java层的API就需要对DVM或者ART运行时中执行Java方法的函数进行的Hook,然后在运行时中执行到需要拦截的Java方法时其执行我们定义的拦截代码,就能实现对Java层的Hook。可以使用开源库AndHook或者epic。
监控应用程序的行为是在每个Hook***的***API中***监控的代码,记录其使用的API、次数和具体调用参数等,以便进一步的统计分析和在用户界面上的展示统计分析的信息。将该应用调用***API的返回值,修改为用户在主界面设置的隐私信息或者随机的隐私信息。从而防止虚拟应用获得用户的真正隐私信息。本发明的通过沙箱防止虚拟应用获取真正的用户隐私信息,其对资源占用和性能影响小,不需要像手机管理软件一样总是在后台有一个或多个服务进程。本发明只需要在用的时候才开启,本发明的沙箱并不是指令级别的虚拟化,只是代理了安卓的服务和Hook了部分API,对性能影响小。这是本申请的重要发明点之一。
进一步参考图3,作为对上述图1所示方法的实现,本申请提供了基于虚拟应用的隐私信息保护装置的一个实施例,该装置实施例与图1所示的方法实施例相对应,该装置具体可以包含于各种电子设备中。
图3示出了本发明的一种基于虚拟应用的隐私信息保护装置,该装置包括:
获取单元301,用于获取用于虚拟应用的应用安装包和应用信息。
构建单元302,用于构建运行所述虚拟应用的沙箱并在沙箱中创建代理服务。
安装单元303,用于将所述虚拟应用安装在所述沙箱中。
替换单元304,用于在所述沙箱中创建所述虚拟应用的子进程,并使用代理服务进程替换所述子进程。
保护单元305,用于拦截该虚拟应用获取用户信息的***API并监控所述虚拟应用的行为,将该虚拟应用调用的***API返回为用户设置的信息或者随机信息。
在一个实施例中,所述虚拟应用为安卓虚拟应用,虚拟应用的是相对于直接运行在安卓***中的应用来说的,虚拟应用可以是运行在沙箱中的应用、运行在虚拟机中的应用等等,即非直接运行在操作***上的应用。
所述获取单元301执行的操作为:获取应用的安装包并保存至预定目录,解析所述安装包中的Manifest.xml文件获取应用信息,其中,所述应用信息包括组件信息、权限信息、包名和/或MainActivity。
在一个实施例中,获取指定安卓应用的安装包并保存至指定目录。安卓应用安装后会将APK安装包拷贝到***的应用目录下,对于已安装的安卓应用可以使用安卓***PackageManager提供的接口,具体实现调用装置:getPackageManager().getApplicationInfo(packageName,0).sourceDir;解析APK获取指定安卓应用信息是通过解析APK中的Manifest.xml文件获取应用的信息,包括组件信息、权限信息、包名、MainActivity等。然后将这些信息保存在磁盘和内存中,以备后续使用。
如图2所示,所述沙箱包括:一个沙箱主进程(Main Process)、一个服务进程(Server Process)和多个客户端进程(Client);所述沙箱主进程用于提供用户管理界面,通过所述用户管理界面管理运行在沙箱的虚拟应用、设置用户信息和/或设置是否允许虚拟应用获取个人隐私资料;服务进程用于提供代理服务,通过Content Provider来启动,通过对安卓***的BinderProxy进行重新构造并替换,实现了一套伪造的安卓***framework层的***service,其中的service是对原安卓***中的service的封装,从而实现对原安卓***服务的代理和替换;所述客户端进程是运行的虚拟应用的进程。
在一个实施例中,沙箱是一个可以在其中运行其他应用的容器。本发明中被设计成一个安卓应用,具体沙箱的结构如图2所示,这些进程均使用沙箱APP的用户ID(UserID),这样做主要是为了解决Android/Linux***的应用隔离机制。Android/Linux***隔离机制是基于多用户机制实现的,应用在安装时会分配到不同的Linux用户uid/gid。不同的uid就不能访问不同进程的内存空间,除非获取得超级管理员(Root)权限。沙箱中进程使用相同的uid就不会有多用户之间的隔离,就解决了沙箱与应用之间隔离机制。这样在接下来的监控操作就不需要获取Root权限。
在一个实施例中,沙箱环境中需要对许多***服务进行了代理和替换才能保证客户端进程能正常的在沙箱内运行并且被监控。代理服务的原理是使用了代理Binder机制。安卓***中应用在调用***服务时是通过Binder机制进行进程间通信(Inter-ProcessCommunication)。安卓***提供给应用程序调用的***服务并不是真正的服务,而是Binder的代理(BinderProxy),所以通过对这些BinderProxy重新构造并替换,就可以实现对***服务的代理和替换。在沙箱的服务进程,中实现了一套伪造的安卓***framework层的***service,其中的service本质上是对原本的***中的service的封装,这样就可以在伪造的service加入一些监控或者拦截的代码。沙箱的构建及在沙箱中创建代理服务是本发明中重要发明点,其适用性良好、操作方便、可靠性良好,全过程不管是用户还是开发中都不需要刷机、不需要Root、不需要替换***文件、不需要修改应用的安装包;用户可定制性高,用户管理界面有用户可以控制和设置信息的界面。只需要安装一个应用级别的一个APP就可以监控管理和用户隐私保护。用户可以选择性的选一些不希望被获取隐私的应用安装在本发明中,对于其他应用不影响。
在一个实施例中,所述安装单元303执行的操作为:复制所述安装包到沙箱的程序缓存空间中预定的文件夹,并为所述安装包中的so文件准备目录空间,以及将所述安装包中的so文件解压到所述文件夹中。对于支持ART运行时(Android Runtime)的安卓***,还可以选择性的为APK中的dex文件做优化。该步骤实现了将直接运行在安卓***中的应用安装在沙箱中形成虚拟应用。
在一个实施例中,所述替换单元304执行的操作为:fork一个主进程作为宿主进程,用于寄宿作为客户端进程的虚拟应用;使用安卓***提供的API,动态加载所述安装包;通过Hook StartActivity装置在调用***API时启动StubAcivity;在StubAcivity中将虚拟应用的服务替换为创建的代理服务;通过反射获取到虚拟应用中的MainActivity的class;使用StartActivity启动所述虚拟应用。这样就完成了对应用APK的动态加载并替换***服务。这也是本发明的一个重要发明点,其使得用户的隐私信息保护程度高、稳定性好,通过Hook技术拦截***底层的API,应用进程中只要是有调用***API获取的信息都能被拦截。拦截的API都返回虚拟数据,不会导致调用API失败引起崩溃或者无法执行。
在一个实施例中,所述保护单元305执行的操作为:在所述客户端进程启动之前对所述虚拟应用使用的API进行Hook;在每个Hook的***API中***监控的代码,记录所述虚拟应用使用的API、次数和调用参数;将所述虚拟应用调用***API的返回值,修改为用户在主界面设置的隐私信息或者随机的隐私信息,从而防止所述虚拟应用获取用户的所述隐私信息。
使用免Root的Hook装置拦截该应用获取用户信息的***API。由于创建的Client进程都是动态加载的,所以在启动之前可以先对其使用的API进行Hook。
安卓程序一般都是由2个部分的代码组成,一部分是使用Java编写的在DVM(Dalvik Virtual Machine)或者ART(Android Runtime)上运行的代码,另一部分采用原生的C/C++编写。所以需要对2种都实现Hook。对于原生层(Native)API的Hook可以使用开源的跨平台Hook库Substrate。使用该库就可以对C/C++函数进行Hook。对于Java层的API就需要对DVM或者ART运行时中执行Java装置的函数进行的Hook,然后在运行时中执行到需要拦截的Java装置时其执行我们定义的拦截代码,就能实现对Java层的Hook。可以使用开源库AndHook或者epic。
监控应用程序的行为是在每个Hook***的***API中***监控的代码,记录其使用的API、次数和具体调用参数等,以便进一步的统计分析和在用户界面上的展示统计分析的信息。将该应用调用***API的返回值,修改为用户在主界面设置的隐私信息或者随机的隐私信息。从而防止虚拟应用获得用户的真正隐私信息。本发明的通过沙箱防止虚拟应用获取真正的用户隐私信息,其对资源占用和性能影响小,不需要像手机管理软件一样总是在后台有一个或多个服务进程。本发明只需要在用的时候才开启,本发明的沙箱并不是指令级别的虚拟化,只是代理了安卓的服务和Hook了部分API,对性能影响小。这是本申请的重要发明点之一。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
最后所应说明的是:以上实施例仅以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
Claims (15)
1.一种基于虚拟应用的隐私信息保护方法,其特征在于,该方法包括:
获取步骤,获取用于虚拟应用的应用安装包和应用信息;
构建步骤,构建运行所述虚拟应用的沙箱并在沙箱中创建代理服务;
安装步骤,将所述虚拟应用安装在所述沙箱中;
替换步骤,在所述沙箱中创建所述虚拟应用的子进程,并使用代理服务进程替换所述子进程;
保护步骤,拦截该虚拟应用获取用户信息的***API并监控所述虚拟应用的行为,将该虚拟应用调用的***API返回为用户设置的信息或者随机信息。
2.根据权利要求1所述的方法,其特征在于,所述虚拟应用为安卓虚拟应用。
3.根据权利要求2所述的方法,其特征在于,所述获取步骤的操作为:获取应用的安装包并保存至预定目录,解析所述安装包中的Manifest.xml文件获取应用信息,其中,所述应用信息包括组件信息、权限信息、包名和/或MainActivity。
4.根据权利要求3所述的方法,其特征在于,所述沙箱包括:一个沙箱主进程、一个服务进程和多个客户端进程;所述沙箱主进程用于提供用户管理界面,通过所述用户管理界面管理运行在沙箱的虚拟应用、设置用户信息和/或设置是否允许虚拟应用获取个人隐私资料;服务进程用于提供代理服务,通过Content Provider来启动,通过对安卓***的BinderProxy进行重新构造并替换,实现了一套伪造的安卓***framework层的***service,其中的service是对原安卓***中的service的封装,从而实现对原安卓***服务的代理和替换;所述客户端进程是运行的虚拟应用的进程。
5.根据权利要求4所述的方法,其特征在于,所述安装步骤的操作为:
复制所述安装包到沙箱的程序缓存空间中预定的文件夹,并为所述安装包中的so文件准备目录空间,以及将所述安装包中的so文件解压到所述文件夹中。
6.根据权利要求5所述的方法,其特征在于,所述替换步骤的操作为:
fork一个主进程作为宿主进程,用于寄宿作为客户端进程的虚拟应用;使用安卓***提供的API,动态加载所述安装包;通过Hook StartActivity方法在调用***API时启动StubAcivity;在StubAcivity中将虚拟应用的服务替换为创建的代理服务;通过反射获取到虚拟应用中的MainActivity的class;使用StartActivity启动所述虚拟应用。
7.根据权利要求6所述的方法,其特征在于,所述保护步骤的操作为:
在所述客户端进程启动之前对所述虚拟应用使用的API进行Hook;在每个Hook的***API中***监控的代码,记录所述虚拟应用使用的API、次数和调用参数;将所述虚拟应用调用***API的返回值,修改为用户在主界面设置的隐私信息或者随机的隐私信息,从而防止所述虚拟应用获取用户的所述隐私信息。
8.一种基于虚拟应用的隐私信息保护装置,其特征在于,该装置包括:
获取单元,用于获取用于虚拟应用的应用安装包和应用信息;
构建单元,用于构建运行所述虚拟应用的沙箱并在沙箱中创建代理服务;
安装单元,用于将所述虚拟应用安装在所述沙箱中;
替换单元,用于在所述沙箱中创建所述虚拟应用的子进程,并使用代理服务进程替换所述子进程;
保护单元,用于拦截该虚拟应用获取用户信息的***API并监控所述虚拟应用的行为,将该虚拟应用调用的***API返回为用户设置的信息或者随机信息。
9.根据权利要求8所述的装置,其特征在于,所述虚拟应用为安卓虚拟应用。
10.根据权利要求9所述的装置,其特征在于,所述获取模块执行的操作为:获取应用的安装包并保存至预定目录,解析所述安装包中的Manifest.xml文件获取应用信息,其中,所述应用信息包括组件信息、权限信息、包名和/或MainActivity。
11.根据权利要求10所述的装置,其特征在于,所述沙箱包括:一个沙箱主进程、一个服务进程和多个客户端进程;所述沙箱主进程用于提供用户管理界面,通过所述用户管理界面管理运行在沙箱的虚拟应用、设置用户信息和/或设置是否允许虚拟应用获取个人隐私资料;服务进程用于提供代理服务,通过Content Provider来启动,通过对安卓***的BinderProxy进行重新构造并替换,实现了一套伪造的安卓***framework层的***service,其中的service是对原安卓***中的service的封装,从而实现对原安卓***服务的代理和替换;所述客户端进程是运行的虚拟应用的进程。
12.根据权利要求11所述的装置,其特征在于,所述安装模块执行的操作为:
复制所述安装包到沙箱的程序缓存空间中预定的文件夹,并为所述安装包中的so文件准备目录空间,以及将所述安装包中的so文件解压到所述文件夹中。
13.根据权利要求12所述的装置,其特征在于,所述替换模块执行的操作为:
fork一个主进程作为宿主进程,用于寄宿作为客户端进程的虚拟应用;使用安卓***提供的API,动态加载所述安装包;通过Hook StartActivity装置在调用***APl时启动StubAcivity;在StubAcivity中将虚拟应用的服务替换为创建的代理服务;通过反射获取到虚拟应用中的MainActivity的class;使用StartActivity启动所述虚拟应用。
14.根据权利要求13所述的装置,其特征在于,所述保护模块执行的操作为:
在所述客户端进程启动之前对所述虚拟应用使用的API进行Hook;在每个Hook的***API中***监控的代码,记录所述虚拟应用使用的API、次数和调用参数;将所述虚拟应用调用***API的返回值,修改为用户在主界面设置的隐私信息或者随机的隐私信息,从而防止所述虚拟应用获取用户的所述隐私信息。
15.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行权利要求1-7之任一的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811055791.2A CN109241731B (zh) | 2018-09-11 | 2018-09-11 | 一种基于虚拟应用的隐私信息保护方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811055791.2A CN109241731B (zh) | 2018-09-11 | 2018-09-11 | 一种基于虚拟应用的隐私信息保护方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109241731A true CN109241731A (zh) | 2019-01-18 |
CN109241731B CN109241731B (zh) | 2020-12-15 |
Family
ID=65067349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811055791.2A Active CN109241731B (zh) | 2018-09-11 | 2018-09-11 | 一种基于虚拟应用的隐私信息保护方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109241731B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309646A (zh) * | 2019-06-28 | 2019-10-08 | 广州小鹏汽车科技有限公司 | 个人信息保护方法、保护装置和车辆 |
CN110460716A (zh) * | 2019-06-28 | 2019-11-15 | 华为技术有限公司 | 一种响应请求的方法及电子设备 |
CN111212420A (zh) * | 2019-12-31 | 2020-05-29 | 北京指掌易科技有限公司 | 一种通过vsa技术伪装设备信息的方法 |
CN111459385A (zh) * | 2020-03-31 | 2020-07-28 | 维沃移动通信有限公司 | 信息显示方法和电子设备 |
CN112199151A (zh) * | 2020-09-07 | 2021-01-08 | 成都安易迅科技有限公司 | 一种应用程序的运行方法及装置 |
CN114416480A (zh) * | 2022-01-12 | 2022-04-29 | 广州九尾信息科技有限公司 | 一种监测安卓应用隐私相关api调用的方法 |
CN114995955A (zh) * | 2022-06-16 | 2022-09-02 | 广州千悦科技有限公司 | 一种Android插件化虚拟化Binder Hook方法 |
CN116108495A (zh) * | 2023-04-13 | 2023-05-12 | 北京中科特瑞科技有限公司 | 基于容器技术的隐私计算沙箱实现方法及*** |
CN117609989A (zh) * | 2023-12-24 | 2024-02-27 | 中国人民解放军61660部队 | 一种通过隐藏应用特征在互联网上保护个人信息的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587456A (zh) * | 2009-07-08 | 2009-11-25 | 腾讯科技(深圳)有限公司 | 一种对软件运行的保护处理方法及装置 |
CN105893839A (zh) * | 2016-06-20 | 2016-08-24 | 北京奇虎科技有限公司 | 一种安卓应用的广播的代理处理方法和装置 |
CN106030528A (zh) * | 2014-02-19 | 2016-10-12 | 微软技术许可有限责任公司 | 数据代理服务 |
-
2018
- 2018-09-11 CN CN201811055791.2A patent/CN109241731B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587456A (zh) * | 2009-07-08 | 2009-11-25 | 腾讯科技(深圳)有限公司 | 一种对软件运行的保护处理方法及装置 |
CN106030528A (zh) * | 2014-02-19 | 2016-10-12 | 微软技术许可有限责任公司 | 数据代理服务 |
CN105893839A (zh) * | 2016-06-20 | 2016-08-24 | 北京奇虎科技有限公司 | 一种安卓应用的广播的代理处理方法和装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309646A (zh) * | 2019-06-28 | 2019-10-08 | 广州小鹏汽车科技有限公司 | 个人信息保护方法、保护装置和车辆 |
CN110460716A (zh) * | 2019-06-28 | 2019-11-15 | 华为技术有限公司 | 一种响应请求的方法及电子设备 |
CN111212420A (zh) * | 2019-12-31 | 2020-05-29 | 北京指掌易科技有限公司 | 一种通过vsa技术伪装设备信息的方法 |
CN111459385A (zh) * | 2020-03-31 | 2020-07-28 | 维沃移动通信有限公司 | 信息显示方法和电子设备 |
CN111459385B (zh) * | 2020-03-31 | 2022-05-17 | 维沃移动通信有限公司 | 信息显示方法和电子设备 |
CN112199151A (zh) * | 2020-09-07 | 2021-01-08 | 成都安易迅科技有限公司 | 一种应用程序的运行方法及装置 |
CN112199151B (zh) * | 2020-09-07 | 2023-10-24 | 成都安易迅科技有限公司 | 一种应用程序的运行方法及装置 |
CN114416480A (zh) * | 2022-01-12 | 2022-04-29 | 广州九尾信息科技有限公司 | 一种监测安卓应用隐私相关api调用的方法 |
CN114995955A (zh) * | 2022-06-16 | 2022-09-02 | 广州千悦科技有限公司 | 一种Android插件化虚拟化Binder Hook方法 |
CN114995955B (zh) * | 2022-06-16 | 2023-03-21 | 广州千悦科技有限公司 | 一种Android插件化虚拟化Binder Hook方法 |
CN116108495A (zh) * | 2023-04-13 | 2023-05-12 | 北京中科特瑞科技有限公司 | 基于容器技术的隐私计算沙箱实现方法及*** |
CN117609989A (zh) * | 2023-12-24 | 2024-02-27 | 中国人民解放军61660部队 | 一种通过隐藏应用特征在互联网上保护个人信息的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109241731B (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241731A (zh) | 一种基于虚拟应用的隐私信息保护方法、装置及存储介质 | |
US11552955B2 (en) | Data security across data residency restriction boundaries | |
US10620927B2 (en) | Method, arrangement, computer program product and data processing program for deploying a software service | |
CN103559118B (zh) | 一种基于aop与注解信息***的安全审计方法 | |
US9280660B2 (en) | Mobile information management methods and systems | |
US7779304B2 (en) | Diagnosing changes in application behavior based on database usage | |
CN109831504A (zh) | 微服务请求处理方法、装置及设备 | |
US9612942B2 (en) | Verification of a computer program in respect to an unexpected response to an access request | |
US11907941B2 (en) | Anonymization of data fields in transactions | |
US20170171049A1 (en) | Systems and/or methods for remote application introspection in cloud-based integration scenarios | |
CN111368330B (zh) | 一种基于区块链的以太坊智能合约审计***及方法 | |
CA2623242A1 (en) | A method and system for managing and organizing software package installations | |
CN106897610A (zh) | 一种定位保护的方法和装置 | |
CN116760705B (zh) | 基于综合能源管理***的多租户平台隔离管理***及方法 | |
CN112685020A (zh) | 动态创建服务接口的方法、装置、电子设备及存储介质 | |
CN106203110B (zh) | 基于逆向解析机制的Android安全增强*** | |
CN103309696B (zh) | 一种Java卡扩展库更新方法、装置和Java卡 | |
US7822729B2 (en) | Swapping multiple object aliases in a database system | |
US11783065B2 (en) | Business data protection for running tasks in computer system | |
CN107636667A (zh) | 在设备中创建多个工作空间 | |
CN105653904B (zh) | 应用锁屏的处理方法、装置及移动终端 | |
US10122758B2 (en) | Dynamic management of enterprises policies | |
CN108628620B (zh) | Pos应用开发的实现方法、装置、计算机设备和存储介质 | |
CN116108435A (zh) | 移动端安全切面的按需开启方法及装置 | |
Dragoni et al. | A load time Policy Checker for open multi-application smart cards |
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 |