应用程序配置方法与装置制造方法

文档序号:6636448阅读:180来源:国知局
应用程序配置方法与装置制造方法
【专利摘要】本发明涉及一种应用程序配置方法,其包括以下步骤:解析所述应用程序原安装包,获得其内部文件;构造集合所述原安装包与所述内部文件的加壳安装包,所述被集合的内部文件中配置有加载模块,该加载模块,用于将被集合的原安装包加载到沙箱运行环境中以运行所述应用程序;安装该加壳安装包。此外,本发明还涉及与该方法相应的一种应用程序配置装置。本发明使得目标应用程序能够运行于沙箱运行环境中,并且能确保系统的安全。
【专利说明】应用程序配置方法与装置

【技术领域】
[0001] 本发明涉及计算机软件安全【技术领域】,尤其涉及一种应用程序配置方法及相应的 装直。

【背景技术】
[0002] 沙箱是一种按照安全策略限制程序行为的执行环境,目前已经广泛实用于各种操 作系统中。以Android为例,一些应用程序,出于实现应用程序固有功能需要之外的目的, 特别是商业目的,随意申请系统权限,获取用户隐私数据、执行网络访问、保持设备活动、发 送短信行为等。轻则可能导致用户隐私数据泄露,或者占用系统资源,重则可能通过恶意扣 费、植入广告、消耗资费、欺诈诱骗等,使用户遭受损失。因此,通过沙箱技术提供的执行环 境,由沙箱对系统的资源、权限进行管理,让应用程序于该沙箱中运行,应用程序的访问先 经沙箱按安全策略进行审查,由此,形成一种相对于系统本身的隔离运行效果,可以有效地 保护系统的安全。对于沙箱中所用到的安全策略,适应各种不同的操作系统有不同的细节 考虑,这些有关技术实现的基本知识,均已为本领域技术人员所掌握,恕不赘述。
[0003] 目前有多种实例来实现沙箱技术。这些实例中,一方面,沙箱技术为了兼容市面的 多种应用,一般仅仅通过限定沙箱的安全策略,控制该应用的可执行资源而实现。然而,在 安全领域,攻防双方的技术水平此消彼长,传统的仅仅通过限制安全策略的沙箱,有时难以 确保能够达到所期望的目的,必须借助于更富技术含量的新方案。另一方面,沙箱技术往往 涉及系统底层操作,而在诸如以Android为代表的Unix系的操作系统中,本身有着严格的 权限管理,这样,便导致在未获得Root授权的前提下,难以应用沙箱技术去构造沙箱。可以 独辟蹊径,去实现免Root环境下的沙箱环境,然而,在这种情况下,往往会引起多方面的一 些技术障碍,这些障碍依沙箱的具体实现方式而定。
[0004] 目前现有技术中,对于这种免Root沙箱,尽管存在理论可能,未见成熟案例。但 是,从以上的分析可以看出,要基于免Root环境实现一种更为安全的沙箱技术,需要结合 其具体技术原理,来考虑其自身的具体构造以及在必要时考虑对相关应用程序的重构,使 得重构后的应用程序可以无缝运行于已经基于系统而保持相对独立的沙箱之中,通过该应 用程序在沙箱中的运行,实现应有的安全控制效果。


【发明内容】

[0005] 本发明的第一目的在于提供一种应用程序配置方法,以便为免Root沙箱环境配 置便于加载运行的应用程序。
[0006] 本发明的第二目在于提供一种适于构造第一目的所述的方法的应用程序配置装 置。
[0007] 为实现本发明的目的,本发明采取如下技术方案:
[0008] 本发明提供的一种应用程序配置方法,包括以下步骤:
[0009] 解析所述应用程序原安装包,获得其内部文件;
[0010] 构造集合所述原安装包与所述内部文件的加壳安装包,所述被集合的内部文件中 配置有加载模块,该加载模块,用于将被集合的原安装包加载到沙箱运行环境中以运行所 述应用程序;
[0011] 安装该加壳安装包。
[0012] 具体而言:
[0013] 所述内部文件之一为被集合的原安装包的配置文件的副本,所述加壳安装包与其 中的所述原安装包具有相同的包名。较佳的,所述配置文件的副本特指Androidmanifest. xml文件。
[0014] 所述加载模块设置于内部文件之一的代码文件中,该加载模块被配置为采用反射 调用机制加载所述被集合的原安装包以运行所述应用程序。所述代码文件特指classes, dex文件。
[0015] 所述内部文件包括被集合的自原安装包获得的资源文件和/或动态库文件及其 相应的目录结构。较佳的,所述资源文件特指Res目录及其下所包含的文件,所述动态库文 件特指Lib目录及其下所包含的文件。进一步,所述资源文件包括图标文件,且该图标文件 基于被集合的自原安装包获得的相应图标文件进行局部修改所得。
[0016] 较佳的,所述被集合的原安装包被置于加壳安装包的Assets目录中。
[0017] 所述加载模块被配置为引导沙箱运行环境对所述应用程序的运行进程实施安全 监控,以实现该应用程序在沙箱运行环境中的正常运行。
[0018] 本发明提供的一种应用程序配置装置,与上述应用程序配置方法的功能性实例, 其包括:
[0019] 获取单元,用于解析所述应用程序原安装包,获得其内部文件;
[0020] 构造单元,用于构造集合所述原安装包与所述内部文件的加壳安装包,所述被集 合的内部文件中配置有加载模块,该加载模块,用于将被集合的原安装包加载到沙箱运行 环境中以运行所述应用程序;
[0021] 安装单元,用于安装该加壳安装包。
[0022] 相较于现有技术,本发明至少具有如下优点:
[0023] 1、借助目标应用程序安装包自身的内部文件为该安装包加壳,生成加壳安装 包,使加壳安装包具有与原安装包相同的包名(PackageName),由此,在宿主应用程序 安装运行后,再借助反射调用机制去加载安装包的四大组件时,该四大组件由于与宿 主应用程序具有相同的包名,在Android系统中,既能使活动组件和服务组件建立与 ActivityManagerService的正常通信,又能使活动组件、服务组件以及广播组件等,顺利被 PackageManagerService识别,降低现有技术中有关加壳应用程序运行异常的错误率。
[0024] 2、通过在加壳的宿主应用程序中配置用于反射调用原安装包的加载模块,并且由 加载模块建立起原安装包的目标应用程序与沙箱运行环境之间的通信,使得目标应用程序 的活动过程可以进一步被沙箱运行环境进行监视,从而对其适用安全策略,以及对其进行 资源引用重定向等,确保目标应用程序能被宿主应用程序正常加载并保持正常运行。
[0025] 3、由于宿主应用程序与目标应用程序使用了相同的包名,不必为被反射调 用的目标应用程序的各个组件(Activity, Service, Receiver)单独构造主函数入口 (ActivityThread. main),也不必考虑因包名而带来的PackageManagerService校验的程 序实现复杂度问题,从而大大提高程序运行效率。
[0026] 本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变 得明显,或通过本发明的实践了解到。

【专利附图】

【附图说明】
[0027] 本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变 得明显和容易理解,其中:
[0028] 图1是本发明的应用程序配置方法的流程原理图;
[0029] 图2是本发明的应用程序配置装置的原理图;
[0030] 图3是本发明的应用程序运行控制方法的流程原理图;
[0031] 图4是本发明的应用程序运行控制装置的原理图。

【具体实施方式】
[0032] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终 相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附 图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0033] 本【技术领域】技术人员可以理解,除非特意声明,这里使用的单数形式"一"、"一 个"、"所述"和"该"也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措 辞"包括"是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加 一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元 件被"连接"或"耦接"到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在 中间元件。此外,这里使用的"连接"或"耦接"可以包括无线连接或无线耦接。这里使用 的措辞"和/或"包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
[0034] 本【技术领域】技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术 术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应 该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中 的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含 义来解释。
[0035] 本【技术领域】技术人员可以理解,这里所使用的"终端"、"终端设备"既包括无线信 号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件 的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备 可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示 器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信系统),其可 以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个 人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、 日历和/或GPS (Global Positioning System,全球定位系统)接收器;常规膝上型和/或 掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算 机或其他设备。这里所使用的"终端"、"终端设备"可以是便携式、可运输、安装在交通工具 (航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式, 运行在地球和/或空间的任何其他位置运行。这里所使用的"终端"、"终端设备"还可以是 通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID (MobiIe Internet Device, 移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒 等设备。
[0036] 本【技术领域】技术人员可以理解,这里所使用的服务器、云端、远端网络设备等概 念,具有等同效果,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集 或多个服务器构成的云。在此,云由基于云计算(Cloud Computing)的大量计算机或网络 服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超 级虚拟计算机。本发明的实施例中,远端网络设备、终端设备与WNS服务器之间可通过任何 通信方式实现通信,包括但不限于,基于3GPP、LTE、WIMX的移动通信、基于TCP/IP、UDP协 议的计算机网络通信以及基于蓝牙、红外传输标准的近距无线传输方式。
[0037] 本领域技术人员应当理解,本发明所称的"应用"、"应用程序"、"应用软件"以及类 似表述的概念,是业内技术人员所公知的相同概念,是指由一系列计算机指令及相关数据 资源有机构造的适于电子运行的计算机软件。除非特别指定,这种命名本身不受编程语言 种类、级别,也不受其赖以运行的操作系统或平台所限制。理所当然地,此类概念也不受任 何形式的终端所限制。
[0038] 本发明以下即将描述的一种应用程序配置方法和装置所实施的应用场景,是安装 在移动终端上的基于Android操作系统的运行环境。
[0039] 为了说明本发明的实施,本发明试图结合计算机程序的静态和动态两个方面进行 描述,所谓静态方面,是指程序安装包、文件、数据库等存储于媒介的存储对象;所谓动态方 面,是指被调入内存中执行的动态对象,包括但不局限于进程、线程、所用到的数据等。鉴于 计算机软件技术的这些特点,不应将本发明所述及的各个方法、步骤、子步骤、装置、单元、 模块等,孤立地理解为仅静态或仅动态的方面,本领域技术人员对此应当知晓。故而,本领 域技术人员应当能够依据本发明有关静态的表述而将其对应到动态的进程活动,或者依据 本发明有关动态的进程活动对应到其静态的表现形式,建立起静态与动态两方面的必然性 关联,以此为基础来理解本发明。
[0040] 本领域技术人员应当知晓,本发明是基于免Root提权而提出的,然而,提权操 作只是Android系统所实施的权限管理控制,本发明也当然地适用于已经Root提权的 Android操作系统中。
[0041] 本发明是基于沙箱原理而提出的,故而,本领域技术人员得以结合公知的沙箱实 现原理来理解本发明的实施。沙箱的作用是为目标应用程序的提供相对封闭的运行环境, 使应用程序对系统的资源访问,借助沙箱安全策略的应用,而被限制在规定的范围之内。因 而,本发明的实质在于提供一种沙箱实例,从两个方面来实现,第一方面是提供构造目标应 用程序的解决方案,第二方面是提供与前者相应的运行控制方案。这两个方面可以被集成 到一个沙箱实现软件中,利用其第一方面的实现对目标应用程序进行加工,进而利用其第 二方面的实现,为目标应用程序提供安全的沙箱运行环境。
[0042] 有鉴于此,本发明的应用程序配置方法,主要体现沙箱实例的第一方面,用于加工 适配于相应的沙箱运行环境的目标应用程序,在如图1所示的实例中,该方法包括如下步 骤:
[0043] S11、解析所述应用程序原安装包,获得其内部文件。
[0044] 这里所称的应用程序,即前文所称的目标应用程序。由于本发明基于免Root需求 而提出,根据Android固有的原理,所述目标应用程序一般为用户自行安装的第三方应用。
[0045] 本发明可以通过接管安装器,来实现对第三方应用的安装控制。具体而言,可以 由用户通过本发明提供的沙箱应用程序下载并安装该第三方应用而获得所述原安装包,或 者,也可由该沙箱应用程序从/data/app中获取相应安装包文件。对于已装应用,可以本发 明处理完毕之后,诱导用户卸载旧应用,安装新应用。
[0046] 解析应用程序的原安装包的手段,为本领域技术人员所熟知。安装包APK文件本 质上是利用ZIP压缩技术结合签名技术实现的压缩包,因此,一方面可以通过解压技术释 放其内部文件,另一方面还可通过Apktool之类的工具软件获取其内部文件(在这种情况 下其代码文件会被反向为.smali文件)。本领域技术人员均能娴熟地利用这些公知技术在 一个给定目录中对原安装包进行处理,从而通过内存操作(非文件操作)的方式来获得其 中的内部文件。
[0047] Android安装包的内部文件,参阅下表所示:
[0048] 表I APK文件内部的文件结构
[0049]

【权利要求】
1. 一种应用程序配置方法,其特征在于,包括以下步骤: 解析所述应用程序原安装包,获得其内部文件; 构造集合所述原安装包与所述内部文件的加壳安装包,所述被集合的内部文件中配置 有加载模块,该加载模块,用于将被集合的原安装包加载到沙箱运行环境中以运行所述应 用程序; 安装该加壳安装包。
2. 根据权利要求1所述的应用程序配置方法,其特征在于,所述内部文件之一为被集 合的原安装包的配置文件的副本,所述加壳安装包与其中的所述原安装包具有相同的包 名。
3. 根据权利要求2所述的应用程序配置方法,其特征在于,所述配置文件的副本特指 Androidmanifest. xml 文件。
4. 根据权利要求1所述的应用程序配置方法,其特征在于,所述加载模块设置于内部 文件之一的代码文件中,该加载模块被配置为采用反射调用机制加载所述被集合的原安装 包以运行所述应用程序。
5. 根据权利要求4所述的应用程序配置方法,其特征在于,所述代码文件特指 classes, dex 文件。
6. 根据权利要求1至5中任意一项所述的应用程序配置方法,其特征在于,所述内部文 件包括被集合的自原安装包获得的资源文件和/或动态库文件及其相应的目录结构。
7. 根据权利要求6所述的应用程序配置方法,其特征在于,所述资源文件特指Res目录 及其下所包含的文件,所述动态库文件特指Lib目录及其下所包含的文件。
8. 根据权利要求6所述的应用程序配置方法,其特征在于,所述资源文件包括图标文 件,且该图标文件基于被集合的自原安装包获得的相应图标文件进行局部修改所得。
9. 根据权利要求1至5中任意一项所述的应用程序配置方法,其特征在于,所述被集合 的原安装包被置于加壳安装包的Assets目录中。
10. -种应用程序配置装置,其特征在于,包括: 获取单元,用于解析所述应用程序原安装包,获得其内部文件; 构造单元,用于构造集合所述原安装包与所述内部文件的加壳安装包,所述被集合的 内部文件中配置有加载模块,该加载模块,用于将被集合的原安装包加载到沙箱运行环境 中以运行所述应用程序; 安装单元,用于安装该加壳安装包。
【文档编号】G06F21/53GK104408367SQ201410708574
【公开日】2015年3月11日 申请日期:2014年11月28日 优先权日:2014年11月28日
【发明者】杨威 申请人:北京奇虎科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1