运行应用程序的方法和装置制造方法

文档序号:6500833阅读:135来源:国知局
运行应用程序的方法和装置制造方法
【专利摘要】本发明提供一种运行应用程序的方法和装置。在沙盒中运行所述应用程序的主程序,当所述主程序需要进行具有系统权限的操作时,通过进程通信向所述应用程序的辅助程序发送操作请求;在沙盒外运行所述应用程序的辅助程序,所述辅助程序执行所述操作请求对应的操作,通过进程通信向所述主程序返回操作结果。采用本发明提供的运行应用程序的方法和装置,能够使应用程序具有系统权限。
【专利说明】运行应用程序的方法和装置

【技术领域】
[0001] 本发明涉及计算机技术,尤其涉及一种运行应用程序的方法和装置。

【背景技术】
[0002] 在iOS系统中,应用程序均在沙盒(简称sandbox)中运行。
[0003] 在沙盒中运行的应用程序只能访问该应用程序目录下的文件。当应用程序运行在 沙盒中时,该应用程序不具有系统权限,因而不能访问其它目录下的文件,也无法调用受限 的应用程序编程接口(Application Programming Interface,简称API)。例如,在沙盒中 运行的文字处理程序无法打开在短信息收件箱中存储的短信息。


【发明内容】

[0004] 本发明的第一个方面是提供一种运行应用程序的方法,用以解决现有技术中的缺 陷,使应用程序具有系统权限。
[0005] 本发明的另一个方面是提供一种运行应用程序的装置,用以解决现有技术中的缺 陷,使应用程序具有系统权限。
[0006] 本发明的第一个方面是提供一种运行应用程序的方法,包括:
[0007] 在沙盒中运行所述应用程序的主程序,当所述主程序需要进行具有系统权限的操 作时,通过进程通信向所述应用程序的辅助程序发送操作请求;
[0008] 在沙盒外运行所述应用程序的辅助程序,所述辅助程序执行所述操作请求对应的 操作,通过进程通信向所述主程序返回操作结果。
[0009] 如上所述的方法,其中,
[0010] 所述辅助程序通过挂钩技术挂载到系统程序中。
[0011] 如上所述的方法,其中,所述在沙盒中运行所述应用程序的主程序之前,还包括:
[0012] 备份系统程序的初始化代码;
[0013] 采用挂钩技术,将当前的系统程序的初始化代码替换为所述辅助程序的初始化代 码,所述辅助程序的初始化代码中包括实现所述辅助程序与所述主程序的进程通信的代 码;
[0014] 调用备份的系统程序的初始化代码;
[0015] 备份系统程序的反初始化代码;
[0016] 采用挂钩技术,将当前的系统程序的反初始化代码替换为所述辅助程序的反初始 化代码;
[0017] 调用备份的系统程序的反初始化代码。
[0018] 如上所述的方法,其中,所述辅助程序为独立运行的程序。
[0019] 本发明的另一个方面是提供一种运行应用程序的装置,包括:
[0020] 沙盒,用于运行所述应用程序的主程序,当所述主程序需要进行具有系统权限的 操作时,通过进程通信向所述应用程序的辅助程序发送操作请求;
[0021] 辅助程序单元,用于运行所述辅助程序,所述辅助程序执行所述操作请求对应的 操作,通过进程通信向所述主程序返回操作结果。
[0022] 如上所述的装置,其中,所述辅助程序单元为通过挂钩技术挂载所述辅助程序的 系统程序单元。
[0023] 如上所述的装置,其中,所述系统程序单元包括:
[0024] 初始化子单元,用于备份系统程序的初始化代码,采用挂钩技术将当前的系统程 序的初始化代码替换为所述辅助程序的初始化代码,所述辅助程序的初始化代码中包括实 现所述辅助程序与所述主程序的进程通信的代码,调用备份的系统程序的初始化代码;
[0025] 反初始化子单元,用于备份系统程序的反初始化代码,采用挂钩技术将当前的系 统程序的反初始化代码替换为所述辅助程序的反初始化代码,调用备份的系统程序的反初 始化代码。
[0026] 如上所述的装置,其中,所述辅助程序单元为独立的程序运行单元。
[0027] 由上述
【发明内容】
可见,在沙盒运行应用程序的主程序,在沙盒以外运行该应用程 序的辅助程序,在主程序与辅助程序之间通过进程通信,如果主程序需要进行具有系统权 限的操作,主程序通过进程通信消息向辅助程序发送操作请求,由辅助程序执行该操作,并 将操作结果通过进程通信消息返回给主程序,因此,主程序能够通过辅助程序执行具有系 统权限的操作,从而使得该应用程序具有系统权限。

【专利附图】

【附图说明】
[0028] 图1为本发明实施例一的运行应用程序的方法的流程图;
[0029] 图2为本发明实施例二的运行应用程序的方法的流程图;
[0030] 图3为本发明实施例三的运行应用程序的装置的结构示意图;
[0031] 图4为本发明实施例四的运行应用程序的装置的结构示意图。

【具体实施方式】
[0032] 在本发明各个实施例中,将应用程序分为主程序和辅助程序,主程序与辅助程序 采用进程通信方式进行通信,其中,主程序用于执行该应用程序的各个功能,其中包括需要 系统权限才能实现的功能,当主程序需要实现上述需要系统权限才能实现的功能时,主程 序通过进程通信告知辅助程序,辅助程序用于执行主程序涉及的需要系统权限才能执行的 各种操作。本发明提出的运行应用程序的方法和装置如下述各个实施例所述。
[0033] 图1为本发明实施例一的运行应用程序的方法的流程图。如图1所示,该方法包 括以下过程。
[0034] 步骤101 :在沙盒中运行应用程序的主程序,通过进程通信向所述应用程序的辅 助程序发送操作请求。
[0035] 在本步骤中,在沙盒中运行应用程序的主程序,当所述主程序需要进行具有系统 权限的操作时,通过进程通信向所述应用程序的辅助程序发送操作请求。
[0036] 步骤102 :在沙盒外运行应用程序的辅助程序,辅助程序执行所述操作请求对应 的操作,通过进程通信向主程序返回操作结果。
[0037] 在本步骤中,辅助程序在沙盒外运行,辅助程序执行所述操作请求对应的操作,通 过进程通信向主程序返回操作结果。
[0038] 在本发明实施例一中,将应用程序分为主程序和辅助程序,在沙盒中运行应用程 序的主程序,在沙盒外运行该应用程序的辅助程序,在主程序与辅助程序之间建立进程通 信,如果主程序需要进行具有系统权限的操作,主程序通过进程通信向辅助程序发送操作 请求,由辅助程序执行该操作,并将操作结果通过进程通信返回给主程序,因此,主程序能 够通过辅助程序执行具有系统权限的操作,从而使得该应用程序具有系统权限。
[0039] 在上述本发明实施例一中,辅助程序可以通过挂钩技术挂载到系统程序中,或者, 辅助程序还可以为一个独立运行的程序。
[0040] 图2为本发明实施例二的运行应用程序的方法的流程图。在本发明实施例二中, 仅以辅助程序通过挂钩技术挂载到系统程序中为例。如图2所示,该方法包括以下过程。
[0041] 首先,将辅助程序通过挂钩(简称Hook)技术挂载到系统程序中,具体地,该过程可 以包括以下的步骤201至步骤206。
[0042] 步骤201 :备份系统程序的初始化代码。
[0043] 在本步骤执行前,当前的系统程序的初始化代码为原始的系统程序的初始化代 码,在本步骤中,对上述系统程序的初始化代码进行备份。在完成备份操作后,存储备份的 系统程序的初始化代码,以供后续的步骤203使用,并且,对于当前的系统程序的初始化代 码执行以下步骤202。
[0044] 步骤202 :采用挂钩技术,将当前的系统程序的初始化代码替换为辅助程序的初 始化代码。
[0045] 在本步骤中,采用挂钩技术,将当前的系统程序的初始化代码替换为辅助程序的 初始化代码。其中,辅助程序的初始化代码中包括实现所述辅助程序与所述主程序的进程 通信的代码。本发明实施例对进程通信的实现方式不做限制,例如,可以采用套接字(简称 Socket)方式、管道方式或者其它能够支持进程通信的任何方式。
[0046] 步骤203 :调用备份的系统程序的初始化代码。
[0047] 在本步骤中,调用备份的系统程序的初始化代码,也就是调用原始的系统程序的 初始化代码,从而保证步骤202的挂钩处理不会影响系统功能。
[0048] 步骤204 :备份系统程序的反初始化代码。
[0049] 在本步骤执行前,当前的系统程序的反初始化代码为原始的系统程序的反初始化 代码,在本步骤中,对上述系统程序的反初始化代码进行备份。在完成备份操作后,存储备 份的系统程序的反初始化代码,以供后续的步骤206使用,并且,对于当前的系统程序的反 初始化代码执行以下步骤205。
[0050] 步骤205 :采用挂钩技术,将当前的系统程序的反初始化代码替换为所述辅助程 序的反初始化代码。
[0051] 步骤206 :调用备份的系统程序的反初始化代码。
[0052] 在本步骤中,调用备份的系统程序的反初始化代码,也就是调用原始的系统程序 的反初始化代码,从而保证步骤205的挂钩处理不会影响系统功能。
[0053] 在执行完步骤206之后,完成了通过挂钩技术将应用程序的辅助程序挂载到系统 程序中的过程,接下来,运行应用程序的主程序和辅助程序。
[0054] 步骤207 :在沙盒中运行应用程序的主程序,当主程序需要进行具有系统权限的 操作时,通过进程通信向应用程序的辅助程序发送操作请求。
[0055] 在本步骤中,在沙盒中运行应用程序的主程序,当主程序需要进行具有系统权限 的操作时,通过进程通信向应用程序的辅助程序发送操作请求,例如,主程序向辅助程序发 送第一进程通信消息,该第一进程通信消息中包括操作请求。以文字处理应用程序为例,其 主程序运行在沙盒中,当用户使用该文字处理应用程序读取短信息收件箱中存储的短信息 时,由于该短信息不在该文字处理应用程序的目录下,因此该操作为具有系统权限的操作, 该文字处理应用程序的主程序通过进程通信向辅助程序发送操作请求,该操作请求表示: 请求读取短信息收件箱中存储的短信息。
[0056] 步骤208 :辅助程序执行操作请求对应的操作,通过进程通信向主程序返回操作 结果。
[0057] 在本步骤中,辅助程序执行操作请求对应的操作,通过进程通信向主程序返回操 作结果,例如,辅助程序向主程序返回第二进程通信消息,该第二进程通信消息中包括操作 结果。仍以用户使用文字处理应用程序读取短信息收件箱中存储的短信息为例,该文字处 理应用程序运行在沙盒中,该文字处理应用程序的主程序通过进程通信向辅助程序发送操 作请求后,该辅助程序根据该操作请求,执行读取短信息收件箱中存储的短信息的操作,该 操作的操作结果为该短信息的内容,辅助程序通过进程通信向主程序返回上述操作结果, 从而使得主程序能过获得该短信息的内容。
[0058] 在本发明实施例二中,通过将应用程序分为主程序和辅助程序,在沙盒中运行应 用程序的主程序,在沙盒外运行该应用程序的辅助程序,该辅助程序用于执行具有系统权 限的操作,在主程序与辅助程序之间建立进程通信,从而使得主程序能够通过辅助程序执 行具有系统权限的操作,即,应用程序具有系统权限。
[0059] 并且,采用本发明实施例一和本发明实施例二的上述方法,在进行应用程序的推 广和传播时,其程序包中可以仅包括该应用程序的主程序,而不包括辅助程序,该应用程序 的辅助程序可以在主程序运行时,通过主程序的更新过程传送给用户,从而使得用户更加 方便、快捷地获取应用程序。
[0060] 图3为本发明实施例三的运行应用程序的装置的结构示意图。如图3所示,该装 置包括:沙盒31和辅助程序单元32。
[0061] 其中,沙盒31用于运行所述应用程序的主程序,当所述主程序需要进行具有系统 权限的操作时,通过进程通信向所述应用程序的辅助程序发送操作请求。
[0062] 辅助程序单元32用于运行所述辅助程序,所述辅助程序执行所述操作请求对应 的操作,通过进程通信向所述主程序返回操作结果。
[0063] 在上述技术方案的基础上,进一步地,辅助程序单元32可以为通过挂钩技术挂载 所述辅助程序的系统程序单元,或者,辅助程序单元32还可以为独立的程序运行单元。
[0064] 图4为本发明实施例四的运行应用程序的装置的结构示意图。在本发明实施例4 中,以辅助程序单元为通过挂钩技术挂载辅助程序的系统程序单元的情况为例。如图4所 示,该装置包括:沙盒41和辅助程序单元42。
[0065] 其中,所述辅助程序可以存储在动态库中。所述系统程序单元包括:初始化子单元 421和反初始化子单元422。动态库通过挂钩技术连接到上述初始化子单元421和反初始 化子单元422。其中,初始化子单元421用于备份系统程序的初始化代码,采用挂钩技术将 当前的系统程序的初始化代码替换为所述辅助程序的初始化代码,所述辅助程序的初始化 代码中包括实现所述辅助程序与所述主程序的进程通信的代码,调用备份的系统程序的初 始化代码。反初始化子单元422用于备份系统程序的反初始化代码,采用挂钩技术将当前 的系统程序的反初始化代码替换为所述辅助程序的反初始化代码,调用备份的系统程序的 反初始化代码。
[0066] 沙盒41用于运行所述应用程序的主程序,当所述主程序需要进行具有系统权限 的操作时,通过进程通信向所述应用程序的辅助程序发送操作请求,具体可以向上述动态 库中的所述应用程序的辅助程序发送操作请求。辅助程序单元42用于运行所述辅助程序, 所述辅助程序执行所述操作请求对应的操作,通过进程通信向所述主程序返回操作结果。 具体地,辅助程序单元42中的动态库运行所述辅助程序,所述辅助程序执行所述操作请求 对应的操作,通过进程通信向所述主程序返回操作结果。
[0067] 本发明实施例三和本发明实施例四的运行应用程序的装置可以用于执行上述本 发明实施例一和本发明实施例二记载的运行应用程序的方法,其执行方式和技术效果可以 参见本发明实施例一和本发明实施例二所述,在此不再赘述。
[0068] 在上述本发明各个实施例中,系统程序具体可以采用主屏幕程序(简称 SpringBoard)或移动电话程序(简称MobilePhone)或其它多种系统程序。
[0069] 本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通 过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程 序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟 或者光盘等各种可以存储程序代码的介质。
[0070] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制; 尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其 依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征 进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技 术方案的范围。
【权利要求】
1. 一种运行应用程序的方法,其特征在于,包括: 在沙盒中运行所述应用程序的主程序,当所述主程序需要进行具有系统权限的操作 时,通过进程通信向所述应用程序的辅助程序发送操作请求; 在沙盒外运行所述应用程序的辅助程序,所述辅助程序执行所述操作请求对应的操 作,通过进程通信向所述主程序返回操作结果。
2. 根据权利要求1所述的方法,其特征在于, 所述辅助程序通过挂钩技术挂载到系统程序中。
3. 根据权利要求1或2所述的方法,其特征在于,所述在沙盒中运行所述应用程序的主 程序之前,还包括: 备份系统程序的初始化代码; 采用挂钩技术,将当前的系统程序的初始化代码替换为所述辅助程序的初始化代码, 所述辅助程序的初始化代码中包括实现所述辅助程序与所述主程序的进程通信的代码; 调用备份的系统程序的初始化代码; 备份系统程序的反初始化代码; 采用挂钩技术,将当前的系统程序的反初始化代码替换为所述辅助程序的反初始化代 码; 调用备份的系统程序的反初始化代码。
4. 根据权利要求1所述的方法,其特征在于, 所述辅助程序为独立运行的程序。
5. -种运行应用程序的装置,其特征在于,包括: 沙盒,用于运行所述应用程序的主程序,当所述主程序需要进行具有系统权限的操作 时,通过进程通信向所述应用程序的辅助程序发送操作请求; 辅助程序单元,用于运行所述辅助程序,所述辅助程序执行所述操作请求对应的操作, 通过进程通信向所述主程序返回操作结果。
6. 根据权利要求5所述的装置,其特征在于, 所述辅助程序单元为通过挂钩技术挂载所述辅助程序的系统程序单元。
7. 根据权利要求6所述的装置,其特征在于,所述系统程序单元包括: 初始化子单元,用于备份系统程序的初始化代码,采用挂钩技术将当前的系统程序的 初始化代码替换为所述辅助程序的初始化代码,所述辅助程序的初始化代码中包括实现所 述辅助程序与所述主程序的进程通信的代码,调用备份的系统程序的初始化代码; 反初始化子单元,用于备份系统程序的反初始化代码,采用挂钩技术将当前的系统程 序的反初始化代码替换为所述辅助程序的反初始化代码,调用备份的系统程序的反初始化 代码。
8. 根据权利要求7所述的装置,其特征在于,所述辅助程序单元为独立的程序运行单 J Li 〇
【文档编号】G06F9/54GK104063284SQ201310086196
【公开日】2014年9月24日 申请日期:2013年3月18日 优先权日:2013年3月18日
【发明者】陈静聪, 李斌 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1