CN112835677A - 一种基于沙盒的固有数据保护方法及系统 - Google Patents
一种基于沙盒的固有数据保护方法及系统 Download PDFInfo
- Publication number
- CN112835677A CN112835677A CN202110122968.1A CN202110122968A CN112835677A CN 112835677 A CN112835677 A CN 112835677A CN 202110122968 A CN202110122968 A CN 202110122968A CN 112835677 A CN112835677 A CN 112835677A
- Authority
- CN
- China
- Prior art keywords
- sandbox
- application program
- information
- data
- component
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种基于沙盒的固有数据保护方法及系统。该方法包括:在终端设备上安装沙盒,在沙盒内部安装应用程序,通过沙盒加载启动安装在沙盒内部的应用程序;当应用程序获取终端设备的第一固有数据时,通过沙盒使用Java反射技术和设置的动态代理方法,调用虚拟设备信息服务生成关于第一固有数据的第一虚拟数据;第一固有数据包括手机号码、IMEI、IMSI和MAC地址中的至少一种数据;当应用程序获取终端设备的第二固有数据时,通过沙盒加载终端设备的系统信息类和使用Java反射技术,生成关于第二固有数据的第二虚拟数据;第二固有数据包括终端设备型号和终端操作系统版本中的至少一种数据。本发明可对终端设备固有数据进行有力保护,提升用户隐私的安全性。
Description
技术领域
本发明涉及通信软件技术领域,尤其涉及一种基于沙盒的固有数据保护方法及系统。
背景技术
移动终端设备的应用程序基于商业目的,热衷于获取应用所在移动设备中的固有数据,作为唯一标识,用以标定设备的唯一身份。此类固有数据指的是移动终端设备上不会随时间变化的数据,例如通信终端的设备型号、IMEI、MAC地址;SIM卡的手机号码、IMSI;终端ROM的操作系统版本等等。这些固有数据如同“设备指纹”,无法被轻易修改。
即使注重隐私的用户在应用中新注册一个帐号,应用依然可以根据固有数据识别出设备,知晓“新ID”只是用户新建的一个“分身”,并以此识别跟踪用户,导致用户移动终端设备的固有数据容易被获取和标定用户身份。
目前,传统手段上,防止应用程序获取移动终端设备固有数据的方法是用户准备多个移动终端设备频繁更换,或对移动终端设备的ROM中固有数据进行修改,以防止应用程序获取到固有数据且标定用户的身份。但这两个方法成本过高,无法实际解决终端设备的固有数据被获取和跟踪识别用户身份的问题。
因此如何设计一种固有数据保护方法,能够实现对终端设备的固有数据进行有力保护,防止应用程序获取到固有数据且标定用户身份是目前急需解决的问题。
发明内容
针对由于终端设备的固有数据被应用程序获取而导致用户身份隐私被识别跟踪的问题,本发明提供一种基于沙盒的固有数据保护方法及系统,能够实现对终端设备的固有数据进行有力保护,防止应用程序获取到固有数据且标定用户身份的问题,提升用户隐私的安全性。
一方面,本发明提供一种基于沙盒的固有数据保护方法,包括:
在终端设备上安装沙盒,在所述沙盒内部安装应用程序,通过沙盒加载启动安装在所述沙盒内部的应用程序;
当所述沙盒内部的应用程序获取终端设备的第一固有数据时,通过沙盒使用Java反射技术和设置的动态代理方法,调用虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据;所述第一固有数据包括手机号码、IMEI、IMSI和MAC地址中的至少一种数据;
当所述沙盒内部的应用程序获取终端设备的第二固有数据时,通过沙盒加载终端设备的系统信息类和使用Java反射技术,生成关于所述第二固有数据的第二虚拟数据;所述第二固有数据包括终端设备型号和终端操作系统版本中的至少一种数据。
进一步地,所述通过沙盒采用Java反射技术和设置的动态代理方法,调用虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据,具体包括:
在所述沙盒内部的应用程序中采用Java反射技术,以使所述应用程序在获取终端设备的第一固有数据时转入设置的动态代理方法中;
通过动态代理方法采用进程间通信机制调用沙盒中设置的虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据,将所述第一虚拟数据返回给所述动态代理方法;
所述沙盒内部的应用程序通过所述动态代理方法获得所述第一虚拟数据。
进一步地,所述通过沙盒加载系统信息类和使用Java反射技术,生成关于所述第二固有数据的第二虚拟数据,具体包括:
在所述沙盒内部的应用程序的进程启动过程中,通过沙盒加载终端设备的系统信息类,然后使用Java反射技术将所述系统信息类的关于第二固有数据的静态成员变量进行替换保护生成关于所述第二固有数据的第二虚拟数据。
进一步地,在所述沙盒内部安装应用程序,具体包括:
所述沙盒在终端设备的操作系统上安装并启动后,解析应用程序安装包内的Androidmanifest.xml文件获得应用程序安装信息,并将所述应用程序安装信息持久化存储至所述沙盒的本地存储空间及内存空间中;其中,所述应用程序安装信息包括:组件信息、运行权限信息和图标信息;所述组件信息包括:Activity组件、Service组件、ContentProvider组件和BroadcastReceiver组件;
所述沙盒将应用程序运行时需要的.so动态链接库拷贝至沙盒内部私有目录空间中;
所述沙盒通过执行所述应用程序安装信息和所述.so动态链接库后完成应用程序的安装,并将应用程序的图标显示在沙盒的主界面上,且保存与应用程序相对应的应用程序安装信息。
进一步地,所述通过沙盒加载启动安装在所述沙盒内部的应用程序,具体包括:
所述沙盒获取与应用程序相关的启动参数信息;
所述沙盒根据启动参数信息查询应用程序安装信息,使用ContentProvider组件发出启动ContentProvider组件的进程间通信请求,并传递给操作系统;
操作系统的AMS系统服务在收到所述进程间通信请求后,查询ContentProvider组件所在的进程是否存在:若存在,则直接在所述进程里面启动ContentProvider组件;若不存在,则创建新的进程并启动ContentProvider组件,在新创建的进程内拦截操作系统函数以启动应用程序的Activity组件、Service组件和BroadcastReceiver组件;
在ContentProvider组件启动完成后,在沙盒中保存启动进程的应用程序安装信息,以用于和启动的进程进行进程间通信;
所述沙盒根据应用程序安装信息获取到应用程序的主Activity信息,创建启动Activity组件的Intent意图对象,将需要启动的Activity信息保存到所述Intent意图对象中,然后通过Binder进程间通信向AMS系统服务发送请求;
AMS系统服务接收到所述请求后,解析intent参数,创建任务栈及与Activity组件相关的信息,查询Activity组件启动时所依赖的进程是否已经启动,向已启动的进程发送启动Activity组件的进程间通信请求,并将intent参数传递至已启动的进程;
操作系统通过新启动的进程拦截Handler.HCallback接口以拦截LAUNCH_ACTIVITY的启动Activity组件的消息,修改启动进程的Application信息,启动应用程序内配置的ContentProvider组件,并对应用程序的文件和目录做访问重定向的操作;
已启动的进程接收到启动Activity组件的进程间通信请求后,先基于intent参数获取Activity组件的Intent意图对象,然后获取所述Intent意图对象中的需要启动的Activity信息,再将需要启动的Activity信息通过反射的方式设置到ActivityThread中,以启动Activity组件;
沙盒将启动的Activity组件信息保存至沙盒中,之后完成拦截的操作,进入正常启动Activity组件流程;
操作系统获取沙盒中的Activity组件信息,启动应用程序的主界面Activity组件,显示应用程序的主界面,以使应用程序正常运行。
进一步地,所述终端设备的操作系统支持安卓操作系统。
另一方面,本发明提供一种基于沙盒的固有数据保护系统,包括:安装启动模块、第一获取模块和第二获取模块;
所述安装启动模块,用于在终端设备上安装沙盒,在所述沙盒内部安装应用程序,通过沙盒加载启动安装在所述沙盒内部的应用程序;
所述第一获取模块,用于当所述沙盒内部的应用程序获取终端设备的第一固有数据时,通过沙盒使用Java反射技术和设置的动态代理方法,调用虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据;所述第一固有数据包括手机号码、IMEI、IMSI和MAC地址中的至少一种数据;
所述第二获取模块,用于当所述沙盒内部的应用程序获取终端设备的第二固有数据时,通过沙盒加载终端设备的系统信息类和使用Java反射技术,生成关于所述第二固有数据的第二虚拟数据;所述第二固有数据包括终端设备型号和终端操作系统版本中的至少一种数据。
进一步地,在所述沙盒中设置有应用程序服务单元和动态代理方法,在所述应用程序服务单元中设置有虚拟设备信息服务;
对应地,所述第一获取模块具体用于:在所述沙盒内部的应用程序中采用Java反射技术,以使所述应用程序在获取终端设备的第一固有数据时转入设置的动态代理方法中;
通过动态代理方法采用进程间通信机制调用所述虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据,将所述第一虚拟数据返回给所述动态代理方法;
所述沙盒内部的应用程序通过所述动态代理方法获得所述第一虚拟数据。
进一步地,所述第二获取模块,具体用于:在所述沙盒内部的应用程序的进程启动过程中,通过沙盒加载终端设备的系统信息类,然后使用Java反射技术将所述系统信息类的关于第二固有数据的静态成员变量进行替换保护后生成关于所述第二固有数据的第二虚拟数据。
进一步地,在所述沙盒中设置有应用接口单元;所述应用接口单元用于提供沙盒内部私有目录空间;
对应地,所述安装启动模块,具体用于:所述沙盒在终端设备的操作系统上安装并启动后,通过调用所述应用接口单元解析应用程序安装包内的Androidmanifest.xml文件获得应用程序安装信息,并将所述应用程序安装信息持久化存储至所述沙盒的本地存储空间及内存空间中;其中,所述应用程序安装信息包括:组件信息、运行权限信息和图标信息;所述组件信息包括:Activity组件、Service组件、ContentProvider组件和BroadcastReceiver组件;通过所述沙盒将应用程序运行时需要的.so动态链接库拷贝至所述沙盒内部私有目录空间中;通过所述沙盒执行所述应用程序安装信息和所述.so动态链接库后完成应用程序的安装,并将应用程序的图标显示在沙盒的主界面上,且保存与应用程序相对应的应用程序安装信息。
本发明的有益效果:
(1)本发明通过沙盒采用Java反射技术和设置的动态代理方法,调用虚拟设备信息服务将第一固有数据进行虚拟保护生成第一虚拟数据;以及通过沙盒加载系统信息类和使用Java反射技术将第二固有数据进行替换保护生成第二虚拟数据;能够保证应用程序获取到的设备固有数据都是虚拟后的随机数值,无法标定设备的唯一性和用户身份,从而保护真实的固有数据;
(2)本发明无需对终端设备ROM进行改造,也无需对第三方应用程序进行针对性防御,即可实现终端设备中固有数据的随机变化;
(3)本发明沙盒作为第三方应用程序必须安装在终端操作系统之上才能运行,沙盒作为一个安全沙盒,它有自己的封闭私有空间,也必须有运行在沙盒里面的应用程序,所以运行在沙盒里面的应用程序必须要在沙盒内部安装,从而保证属于应用程序的内容只存在于沙盒内部,不会被沙盒外部的应用程序访问到,且保证沙盒内部与外部的数据隔离,使得沙盒数据安全可靠。
附图说明
图1为本发明实施例提供的基于沙盒的固有数据保护方法的流程示意图;
图2为本发明实施例提供的基于沙盒的固有数据保护方法中安装应用程序的流程图;
图3为本发明实施例提供的基于沙盒的固有数据保护方法中启动应用程序的流程图;
图4为本发明实施例提供的基于沙盒的固有数据保护系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1所示,本发明提出一种基于沙盒的固有数据保护方法,包括以下步骤:
S101:在终端设备上安装沙盒,在所述沙盒内部安装应用程序,通过沙盒加载启动安装在所述沙盒内部的应用程序;
具体地,沙盒作为第三方应用程序必须安装在终端设备上才能运行,沙盒作为一个安全沙盒,它有自己的封闭私有空间,也必须有运行在沙盒里面的应用程序,所以运行在沙盒里面的应用程序必须要在沙盒内部安装,从而保证属于应用程序的内容只存在于沙盒内部,不会被沙盒外部的应用程序访问到,且保证沙盒内部与外部的数据隔离,使得沙盒数据安全可靠。
S102:当所述沙盒内部的应用程序获取终端设备的第一固有数据时,通过沙盒使用Java反射技术和设置的动态代理方法,调用虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据;所述第一固有数据包括手机号码、IMEI、IMSI和MAC地址中的至少一种数据;
S103:当所述沙盒内部的应用程序获取终端设备的第二固有数据时,通过沙盒加载终端设备的系统信息类和使用Java反射技术,生成关于所述第二固有数据的第二虚拟数据;所述第二固有数据包括终端设备型号和终端操作系统版本中的至少一种数据。
本发明实施例提供的基于沙盒的固有数据保护方法,通过沙盒采用Java反射技术和设置的动态代理方法,将第一固有数据进行虚拟保护生成第一虚拟数据;以及通过沙盒加载系统信息类和使用Java反射技术将第二固有数据进行替换保护生成第二虚拟数据;如此,能够保证应用程序获取到的终端设备固有数据都是虚拟后的随机数值,无法标定终端设备的唯一性和用户身份,从而保护真实的固有数据。
并且,本发明实施例无需对终端设备ROM进行改造,也无需对第三方应用程序进行针对性防御,即可实现终端设备中固有数据的随机变化。
可以理解,本发明实施例中,对步骤S102和步骤S103之间的先后顺序不限制。
实施例2
在上述实施例的基础上,与上述实施例的不同之处在于,本发明实施例中,所述通过沙盒采用Java反射技术和设置的动态代理方法,调用虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据,具体包括:
在所述沙盒内部的应用程序中采用Java反射技术,以使所述应用程序在获取终端设备的第一固有数据时转入设置的动态代理方法中;
通过动态代理方法采用进程间通信机制调用沙盒中设置的虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据,将所述第一虚拟数据返回给所述动态代理方法;
所述沙盒内部的应用程序通过所述动态代理方法获得所述第一虚拟数据。
具体地,不使用本发明方法时,即正常情况下,在终端设备上运行的第三方应用程序在需要获取数据时比如获取本终端设备的手机号码、IMEI、IMSI、MAC地址等固有数据时都是直接调用终端设备的系统函数获取真实信息。而本发明实施例中,安装在沙盒内的应用程序相当于是在一个虚拟的运行环境中运行,这些固有数据都可以被沙盒模拟并提供给安装在沙盒内的应用程序,也就是说,应用程序所获取的“固有数据”不再是终端设备真实的固有数据,而是沙盒所模拟出来的虚拟的固有数据,如此可以保护用户真实的固有数据防止泄露。
在本发明实施例中,沙盒所做的关键处理之处就在于动态代理了获取手机号码、IMEI、IMSI和MAC地址的系统服务方法,使得之后安装在沙盒内的应用进程程序在获取手机号码、IMEI、IMSI和MAC地址信息时会走入到沙盒设置的代理方法之中,接着沙盒设置的动态代理方法又会通过进程间通信调用到沙盒所提供的虚拟设备信息服务(VDeviceManagerService),此服务会模拟手机号码、IMEI、IMSI和MAC地址信息,返回给动态代理方法,即应用程序获取到了手机号码、IMEI、IMSI和MAC地址信息。也就是安装在沙盒内的应用程序所获取的手机号码、IMEI、IMSI和MAC地址信息是由沙盒虚拟设备信息服务所提供,这样就保护了真实手机号码、IMEI、IMSI和MAC地址信息防止泄露,保护固有数据手机号码、IMEI、IMSI和MAC地址信息的隐私信息。
实施例3
在上述各实施例的基础上,与上述实施例的不同之处在于,本发明实施例中,所述通过沙盒加载系统信息类和使用Java反射技术,生成关于所述第二固有数据的第二虚拟数据,具体包括:
在所述沙盒内部的应用程序的进程启动过程中,通过沙盒加载终端设备的系统信息类,然后使用Java反射技术将所述系统信息类的关于第二固有数据的静态成员变量进行替换保护生成关于所述第二固有数据的第二虚拟数据。
具体地,不使用本发明方法时,即正常情况下,在终端设备上运行的第三方应用程序在需要获取设备型号、操作系统版本固有数据都是直接调用终端系统类的静态成员变量。
在本发明实施例中,沙盒所做的关键处理之处就在于应用程序进程启动过程中,加载系统信息类,之后使用Java反射技术将系统信息类的关于设备型号/操作系统版本相关的静态成员变量替换为模拟的手机信息,如此应用程序在使用系统信息类获取设备型号/操作系统版本的时候所获取到的是替换之后的虚拟的设备型号/操作系统版本,如此就保护了真实的设备型号/操作系统版本,保护固有数据设备型号/操作系统版本信息的隐私信息。
实施例4
在上述各实施例的基础上,与上述实施例的不同之处在于,本发明实施例中,作为一种可实施方式,在所述沙盒内部安装应用程序,如图2所示,具体包括:
S201:所述沙盒在终端设备的操作系统上安装并启动后,解析应用程序安装包内的Androidmanifest.xml文件获得应用程序安装信息,并将所述应用程序安装信息持久化存储至所述沙盒的本地存储空间及内存空间中;其中,所述应用程序安装信息包括:组件信息、运行权限信息和图标信息;所述组件信息包括:Activity组件、Service组件、ContentProvider组件和BroadcastReceiver组件;
S202:所述沙盒将应用程序运行时需要的.so动态链接库拷贝至沙盒内部私有目录空间中;
S203:所述沙盒通过执行所述应用程序安装信息和所述.so动态链接库后完成应用程序的安装,并将应用程序的图标显示在沙盒的主界面上,且保存与应用程序相对应的应用程序安装信息。
具体地,沙盒作为第三方应用必须安装在操作系统之上才能运行,并且沙盒作为一个安全沙盒,它有自己的封闭私有空间,也必须有运行在沙盒里面的应用程序,所以运行在沙盒里面的应用程序必须要在沙盒内部安装。
在实际的应用中,当沙盒完成安装之后,点击沙盒应用程序图标,就可以正常启动运行沙盒,在沙盒第一次被启动运行时,就会自动安装加载配置在沙盒里面的应用程序。
可以理解,应用程序是高度组件化的,一个应用安装包其实是包含一个或多个组件的集合及资源文件等,而Androidmanifest.xml文件内保存了应用程序的所有组件信息,即Activity组件、Service组件、ContentProvider组件、BroadcastReceiver组件,以及应用程序运行时所使用到的权限信息和应用程序图标信息等,通过将解析的这些组件的集合信息以及权限的集合信息和应用程序图标信息等持久化存储到沙盒所分配的本地存储空间及内存空间中,以备在沙盒内部打开安装的应用程序时能够使用这些应用程序安装信息。
沙盒内部私有目录空间不会被沙盒外部的其他应用程序访问到,并且沙盒需要拷贝应用程序运行所需要的.so动态链接库文件到沙盒内部私有目录空间;沙盒最后会发出应用程序安装完成的广播,之后会将获取到的应用程序图标显示在沙盒主界面的安装列表上,并且会保存与图标相对应的应用程序的包名等一些安装信息,以备启动应用程序之所需,这样就完成了在沙盒内部安装第三方应用程序的流程,应用程序安装完成之后点击显示在沙盒主界面的应用程序图标就可以启动运行安装在沙盒内部的第三方应用程序。
作为一种可实施方式,所述通过沙盒加载启动安装在所述沙盒内部的应用程序,如图3所示,具体包括:
S301:所述沙盒获取与应用程序相关的启动参数信息;
S302:所述沙盒根据启动参数信息查询应用程序安装信息,使用ContentProvider组件发出启动ContentProvider组件的进程间通信请求,并传递给操作系统;
S303:操作系统的AMS系统服务在收到所述进程间通信请求后,查询ContentProvider组件所在的进程是否存在:若存在,则直接在所述进程里面启动ContentProvider组件;若不存在,则创建新的进程并启动ContentProvider组件,在新创建的进程内拦截操作系统函数以启动应用程序的Activity组件、Service组件和BroadcastReceiver组件;
S304:在ContentProvider组件启动完成后,在沙盒中保存启动进程的应用程序安装信息,以用于和启动的进程进行进程间通信;
S305:所述沙盒根据应用程序安装信息获取到应用程序的主Activity信息,创建启动Activity组件的Intent意图对象,将需要启动的真正的Activity信息保存到所述Intent意图对象中,然后通过Binder进程间通信向AMS系统服务发送请求;
S306:AMS系统服务接收到所述请求后,解析intent参数,创建任务栈及与Activity组件相关的信息,查询Activity组件启动时所依赖的进程是否已经启动,向已启动的进程发送启动Activity组件的进程间通信请求,并将intent参数传递至已启动的进程;
S307:操作系统通过新启动的进程拦截Handler.HCallback接口以拦截LAUNCH_ACTIVITY的启动Activity组件的消息,修改启动进程的Application信息,启动应用程序内配置的ContentProvider组件,并对应用程序的文件和目录做访问重定向的操作;
S308:真正要启动的Activity的信息封装在intent意图对象中,并且已将intent参数传到了已启动的进程中,已启动的进程接收到启动Activity组件的进程间通信请求后,先基于intent参数获取Activity组件的Intent意图对象,然后获取所述Intent意图对象中的需要启动的真正的Activity信息,再将需要启动的真正的Activity信息通过反射的方式设置到ActivityThread中,以启动真正的Activity组件;
S309:沙盒将启动的Activity组件信息保存至沙盒中,之后完成拦截的操作,进入正常启动Activity组件流程;
S310:操作系统获取沙盒中的Activity组件信息,启动应用程序的主界面Activity组件,显示应用程序的主界面,以使应用程序正常运行。
上述各实施例中,沙盒内部安装运行的应用程序的数量可以为多个,此时应用程序在不同时间通过沙盒获取终端设备的第一固有数据和/或第二固有数据是随机变化的。所述终端设备的操作系统支持安卓操作系统。
实施例5
对应上述的基于沙盒的固有数据保护方法,本发明实施例提供一种基于沙盒的固有数据保护系统,如图4所示,包括:安装启动模块、第一获取模块和第二获取模块;
所述安装启动模块用于在终端设备上安装沙盒,在所述沙盒内部安装应用程序,通过沙盒加载启动安装在所述沙盒内部的应用程序。所述第一获取模块用于当所述沙盒内部的应用程序获取终端设备的第一固有数据时,通过沙盒使用Java反射技术和设置的动态代理方法,调用虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据;所述第一固有数据包括手机号码、IMEI、IMSI和MAC地址中的至少一种数据。所述第二获取模块,用于当所述沙盒内部的应用程序获取终端设备的第二固有数据时,通过沙盒加载终端设备的系统信息类和使用Java反射技术,生成关于所述第二固有数据的第二虚拟数据;所述第二固有数据包括终端设备型号和终端操作系统版本中的至少一种数据。
作为一种可实施方式,在所述沙盒中设置有应用程序服务单元和动态代理方法,在所述应用程序服务单元中设置有虚拟设备信息服务;
对应地,所述第一获取模块具体用于在所述沙盒内部的应用程序中采用Java反射技术,以使所述应用程序在获取终端设备的第一固有数据时转入设置的动态代理方法中;通过动态代理方法采用进程间通信机制调用所述虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据,将所述第一虚拟数据返回给所述动态代理方法;所述沙盒内部的应用程序通过所述动态代理方法获得所述第一虚拟数据。
作为一种可实施方式,所述第二获取模块,具体用于:在所述沙盒内部的应用程序的进程启动过程中,通过沙盒加载终端设备的系统信息类,然后使用Java反射技术将所述系统信息类的关于第二固有数据的静态成员变量进行替换保护后生成关于所述第二固有数据的第二虚拟数据。
作为一种可实施方式,在所述沙盒中设置有应用接口单元;所述应用接口单元用于提供沙盒内部私有目录空间;
对应地,所述安装启动模块,具体用于:所述沙盒在终端设备的操作系统上安装并启动后,通过调用所述应用接口单元解析应用程序安装包内的Androidmanifest.xml文件获得应用程序安装信息,并将所述应用程序安装信息持久化存储至所述沙盒的本地存储空间及内存空间中;其中,所述应用程序安装信息包括:组件信息、运行权限信息和图标信息;所述组件信息包括:Activity组件、Service组件、ContentProvider组件和BroadcastReceiver组件;通过所述沙盒将应用程序运行时需要的.so动态链接库拷贝至所述沙盒内部私有目录空间中;通过所述沙盒执行所述应用程序安装信息和所述.so动态链接库后完成应用程序的安装,并将应用程序的图标显示在沙盒的主界面上,且保存与应用程序相对应的应用程序安装信息。
具体地,本发明实施例中,沙盒内部设置的应用接口单元类似于Android系统的安装第三方应用的接口单元,即在沙盒内部安装使用一个应用程序时,需要调用沙盒内部提供的应用接口单元进行上述处理。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于沙盒的固有数据保护方法,其特征在于,包括:
在终端设备上安装沙盒,在所述沙盒内部安装应用程序,通过沙盒加载启动安装在所述沙盒内部的应用程序;
当所述沙盒内部的应用程序获取终端设备的第一固有数据时,通过沙盒使用Java反射技术和设置的动态代理方法,调用虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据;所述第一固有数据包括手机号码、IMEI、IMSI和MAC地址中的至少一种数据;
当所述沙盒内部的应用程序获取终端设备的第二固有数据时,通过沙盒加载终端设备的系统信息类和使用Java反射技术,生成关于所述第二固有数据的第二虚拟数据;所述第二固有数据包括终端设备型号和终端操作系统版本中的至少一种数据。
2.根据权利要求1所述的固有数据保护方法,其特征在于,所述通过沙盒使用Java反射技术和设置的动态代理方法,调用虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据,具体包括:
在所述沙盒内部的应用程序中采用Java反射技术,以使所述应用程序在获取终端设备的第一固有数据时转入设置的动态代理方法中;
通过动态代理方法采用进程间通信机制调用沙盒中设置的虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据,将所述第一虚拟数据返回给所述动态代理方法;
所述沙盒内部的应用程序通过所述动态代理方法获得所述第一虚拟数据。
3.根据权利要求1所述的固有数据保护方法,其特征在于,所述通过沙盒加载系统信息类和使用Java反射技术,生成关于所述第二固有数据的第二虚拟数据,具体包括:
在所述沙盒内部的应用程序的进程启动过程中,通过沙盒加载终端设备的系统信息类,然后使用Java反射技术将所述系统信息类的关于第二固有数据的静态成员变量进行替换保护生成关于所述第二固有数据的第二虚拟数据。
4.根据权利要求1所述的固有数据保护方法,其特征在于,在所述沙盒内部安装应用程序,具体包括:
所述沙盒在终端设备的操作系统上安装并启动后,解析应用程序安装包内的Androidmanifest.xml文件获得应用程序安装信息,并将所述应用程序安装信息持久化存储至所述沙盒的本地存储空间及内存空间中;其中,所述应用程序安装信息包括:组件信息、运行权限信息和图标信息;所述组件信息包括:Activity组件、Service组件、ContentProvider组件和BroadcastReceiver组件;
所述沙盒将应用程序运行时需要的.so动态链接库拷贝至沙盒内部私有目录空间中;
所述沙盒通过执行所述应用程序安装信息和所述.so动态链接库后完成应用程序的安装,并将应用程序的图标显示在沙盒的主界面上,且保存与应用程序相对应的应用程序安装信息。
5.根据权利要求4所述的固有数据保护方法,其特征在于,所述通过沙盒加载启动安装在所述沙盒内部的应用程序,具体包括:
所述沙盒获取与应用程序相关的启动参数信息;
所述沙盒根据启动参数信息查询应用程序安装信息,使用ContentProvider组件发出启动ContentProvider组件的进程间通信请求,并传递给操作系统;
操作系统的AMS系统服务在收到所述进程间通信请求后,查询ContentProvider组件所在的进程是否存在:若存在,则直接在所述进程里面启动ContentProvider组件;若不存在,则创建新的进程并启动ContentProvider组件,在新创建的进程内拦截操作系统函数以启动应用程序的Activity组件、Service组件和BroadcastReceiver组件;
在ContentProvider组件启动完成后,在沙盒中保存启动进程的应用程序安装信息,以用于和启动的进程进行进程间通信;
所述沙盒根据应用程序安装信息获取到应用程序的主Activity信息,创建启动Activity组件的Intent意图对象,将需要启动的Activity信息保存到所述Intent意图对象中,然后通过Binder进程间通信向AMS系统服务发送请求;
AMS系统服务接收到所述请求后,解析intent参数,创建任务栈及与Activity组件相关的信息,查询Activity组件启动时所依赖的进程是否已经启动,向已启动的进程发送启动Activity组件的进程间通信请求,并将intent参数传递至已启动的进程;
操作系统通过新启动的进程拦截Handler.HCallback接口以拦截LAUNCH_ACTIVITY的启动Activity组件的消息,修改启动进程的Application信息,启动应用程序内配置的ContentProvider组件,并对应用程序的文件和目录做访问重定向的操作;
已启动的进程接收到启动Activity组件的进程间通信请求后,先基于intent参数获取Activity组件的Intent意图对象,然后获取所述Intent意图对象中的需要启动的Activity信息,再将需要启动的Activity信息通过反射的方式设置到ActivityThread中,以启动Activity组件;
沙盒将启动的Activity组件信息保存至沙盒中,之后完成拦截的操作,进入正常启动Activity组件流程;
操作系统获取沙盒中的Activity组件信息,启动应用程序的主界面Activity组件,显示应用程序的主界面,以使应用程序正常运行。
6.根据权利要求1所述的固有数据保护方法,其特征在于,所述终端设备的操作系统支持安卓操作系统。
7.一种基于沙盒的固有数据保护系统,其特征在于,包括:安装启动模块、第一获取模块和第二获取模块;
所述安装启动模块,用于在终端设备上安装沙盒,在所述沙盒内部安装应用程序,通过沙盒加载启动安装在所述沙盒内部的应用程序;
所述第一获取模块,用于当所述沙盒内部的应用程序获取终端设备的第一固有数据时,通过沙盒使用Java反射技术和设置的动态代理方法,调用虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据;所述第一固有数据包括手机号码、IMEI、IMSI和MAC地址中的至少一种数据;
所述第二获取模块,用于当所述沙盒内部的应用程序获取终端设备的第二固有数据时,通过沙盒加载终端设备的系统信息类和使用Java反射技术,生成关于所述第二固有数据的第二虚拟数据;所述第二固有数据包括终端设备型号和终端操作系统版本中的至少一种数据。
8.根据权利要求7所述的固有数据保护系统,其特征在于,在所述沙盒中设置有应用程序服务单元和动态代理方法,在所述应用程序服务单元中设置有虚拟设备信息服务;
对应地,所述第一获取模块具体用于:在所述沙盒内部的应用程序中采用Java反射技术,以使所述应用程序在获取终端设备的第一固有数据时转入设置的动态代理方法中;
通过动态代理方法采用进程间通信机制调用所述虚拟设备信息服务生成关于所述第一固有数据的第一虚拟数据,将所述第一虚拟数据返回给所述动态代理方法;
所述沙盒内部的应用程序通过所述动态代理方法获得所述第一虚拟数据。
9.根据权利要求7所述的固有数据保护系统,其特征在于,所述第二获取模块,具体用于:
在所述沙盒内部的应用程序的进程启动过程中,通过沙盒加载终端设备的系统信息类,然后使用Java反射技术将所述系统信息类的关于第二固有数据的静态成员变量进行替换保护后生成关于所述第二固有数据的第二虚拟数据。
10.根据权利要求7所述的固有数据保护系统,其特征在于,在所述沙盒中设置有应用接口单元;所述应用接口单元用于提供沙盒内部私有目录空间;
对应地,所述安装启动模块,具体用于:所述沙盒在终端设备的操作系统上安装并启动后,通过调用所述应用接口单元解析应用程序安装包内的Androidmanifest.xml文件获得应用程序安装信息,并将所述应用程序安装信息持久化存储至所述沙盒的本地存储空间及内存空间中;其中,所述应用程序安装信息包括:组件信息、运行权限信息和图标信息;所述组件信息包括:Activity组件、Service组件、ContentProvider组件和BroadcastReceiver组件;
通过所述沙盒将应用程序运行时需要的.so动态链接库拷贝至所述沙盒内部私有目录空间中;
通过所述沙盒执行所述应用程序安装信息和所述.so动态链接库后完成应用程序的安装,并将应用程序的图标显示在沙盒的主界面上,且保存与应用程序相对应的应用程序安装信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110122968.1A CN112835677A (zh) | 2021-01-29 | 2021-01-29 | 一种基于沙盒的固有数据保护方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110122968.1A CN112835677A (zh) | 2021-01-29 | 2021-01-29 | 一种基于沙盒的固有数据保护方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112835677A true CN112835677A (zh) | 2021-05-25 |
Family
ID=75932348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110122968.1A Withdrawn CN112835677A (zh) | 2021-01-29 | 2021-01-29 | 一种基于沙盒的固有数据保护方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835677A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114445984A (zh) * | 2022-02-07 | 2022-05-06 | 深圳正中云有限公司 | 一种城市大型建筑火灾消防应急疏散系统与方法 |
-
2021
- 2021-01-29 CN CN202110122968.1A patent/CN112835677A/zh not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114445984A (zh) * | 2022-02-07 | 2022-05-06 | 深圳正中云有限公司 | 一种城市大型建筑火灾消防应急疏散系统与方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107220083B (zh) | 一种安卓系统中免安装运行应用程序的方法和系统 | |
Xu et al. | Aurasium: Practical policy enforcement for android applications | |
CN105427096B (zh) | 支付安全沙箱实现方法及系统与应用程序监控方法及系统 | |
US8769305B2 (en) | Secure execution of unsecured apps on a device | |
US8955142B2 (en) | Secure execution of unsecured apps on a device | |
CN106446672B (zh) | 一种Android第三方类库权限隔离方法及装置 | |
CN107273142B (zh) | 程序更新方法、程序运行方法及装置 | |
CN109241731B (zh) | 一种基于虚拟应用的隐私信息保护方法、装置及存储介质 | |
US10171502B2 (en) | Managed applications | |
CN103677935A (zh) | 一种应用程序的安装控制方法、系统及装置 | |
US20180129794A1 (en) | Method for Protecting Dex File from Decompilation in Android System | |
CN104680039A (zh) | 一种应用程序安装包的数据保护方法及装置 | |
US20160055344A1 (en) | Data loss prevention during app execution using e-mail enforcement on a mobile device | |
CN109784039B (zh) | 移动终端安全运行空间的构建方法、电子设备、存储介质 | |
CN103793248A (zh) | 一种应用程序升级的方法及装置 | |
US10223526B2 (en) | Generating packages for managed applications | |
US20230061228A1 (en) | Managing shared applications at the edge of a content delivery network | |
EP3298534B1 (en) | Creating multiple workspaces in a device | |
CN112835677A (zh) | 一种基于沙盒的固有数据保护方法及系统 | |
WO2024139272A1 (zh) | 原型链污染漏洞防护方法及装置、介质、设备 | |
CN112199151B (zh) | 一种应用程序的运行方法及装置 | |
CN113220314B (zh) | App资源加载及apk生成方法、装置、设备及介质 | |
US20200326929A1 (en) | System and method for applying patches to executable codes | |
Titze et al. | Preventing library spoofing on android | |
CN114047933A (zh) | 多开Android应用的方法、装置、设备和介质 |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210525 |
|
WW01 | Invention patent application withdrawn after publication |