发明内容
基于此,有必要提供一种沙箱内安装软件的方法,能实现在沙箱内安装root权限软件,使得软件安装方式灵活。
此外,还有必要提供一种沙箱内安装软件的系统,能实现在沙箱内安装root权限软件,使得软件安装方式灵活。
一种沙箱内安装软件的方法,包括以下步骤:
检测是否有安装软件的超级权限,若有,则搜索得到沙箱内普通权限的文件;
备份所述文件;
将预先选择的注入代码内容和沙箱进程标识替换所述文件的内容,所述注入代码内容包括超级权限的待安装代码和超级权限的唤醒进程标识;
在沙箱内激活超级权限的沙箱进程,执行所述注入代码内容,将所述待安装代码注入到唤醒进程中;
激活所述唤醒进程,执行所述待安装代码;
安装完成后恢复备份的文件。
在其中一个实施例中,在所述检测是否有安装软件的超级权限的步骤之前,还包括:
安装越狱插件。
在其中一个实施例中,所述文件包括执行文件和指定注入进程标识的文件;
所述将预先选择的注入代码内容和沙箱进程标识替换所述文件的内容的步骤包括:
将所述注入代码内容替换所述执行文件的内容;
将所述沙箱进程标识替换所述指定注入进程标识的文件的内容。
在其中一个实施例中,将所述注入代码内容替换所述执行文件的内容的步骤包括:
将注入代码内容编译生成可执行文件,并所述可执行文件的内容序列化,读取序列化后的所述可执行文件的内容,将所述可执行文件的内容覆盖所述执行文件的内容。
在其中一个实施例中,所述方法还包括:对终端进行重启或注销。
一种沙箱内安装软件的方法,包括以下步骤:
检测是否有安装软件的超级权限,若有,则搜索得到沙箱内普通权限的文件,所述文件包括执行文件和指定注入进程标识的文件;
新增文件;
将预先选择的注入代码内容替换所述执行文件的内容,以及将预先选择的沙箱进程标识替换所述指定注入进程标识的文件的内容,所述注入代码内容包括超级权限的待安装代码和超级权限的唤醒进程标识;
在沙箱内激活超级权限的沙箱进程,执行所述注入代码内容,将所述待安装代码注入到唤醒进程中;
激活所述唤醒进程,执行所述待安装代码;
安装完成后恢复所述新增文件。
在其中一个实施例中,将所述注入代码内容替换所述执行文件的内容的步骤包括:
将注入代码内容编译生成可执行文件,并所述可执行文件的内容序列化,读取序列化后的所述可执行文件的内容,将所述可执行文件的内容覆盖所述执行文件的内容。
一种沙箱内安装软件的系统,包括:
检测模块,用于检测是否有安装软件的超级权限;
搜索模块,用于在检测到有安装软件的超级权限时,搜索得到沙箱内普通权限的文件;
备份模块,用于备份所述文件;
替换模块,用于将预先选择的注入代码内容和沙箱进程标识替换所述文件的内容,所述注入代码内容包括超级权限的待安装代码和超级权限的唤醒进程标识;
注入模块,用于在沙箱内激活超级权限的沙箱进程,执行所述注入代码内容,将所述待安装代码注入到唤醒进程中;
执行模块,用于激活所述唤醒进程,执行所述待安装代码;
恢复模块,用于在安装完成后恢复备份的文件。
在其中一个实施例中,所述系统还包括:
插件安装模块,用于安装越狱插件。
在其中一个实施例中,所述文件包括执行文件和指定注入进程标识的文件;
所述替换模块还用于将所述注入代码内容替换所述执行文件的内容,以及将所述沙箱进程标识替换所述指定注入进程标识的文件的内容。
在其中一个实施例中,所述替换模块还用于将注入代码内容编译生成可执行文件,并所述可执行文件的内容序列化,读取序列化后的所述可执行文件的内容,将所述可执行文件的内容覆盖所述执行文件的内容。
在其中一个实施例中,所述系统还包括:重启/注销模块,用于对终端进行重启或注销。
一种沙箱内安装软件的系统,包括:
检测模块,用于检测是否有安装软件的超级权限;
备份模块,用于新增文件;
搜索模块,用于在检测到有安装软件的超级权限时,搜索得到沙箱内普通权限的文件,所述文件包括执行文件和指定注入进程标识的文件;
替换模块,用于将预先选择的注入代码内容替换所述执行文件的内容,以及将预先选择的沙箱进程标识替换所述指定注入进程标识的文件的的内容,所述注入代码内容包括超级权限的待安装代码和超级权限的唤醒进程标识;
注入模块,用于在沙箱内激活超级权限的沙箱进程,执行所述注入代码内容,将所述待安装代码注入到唤醒进程中;
执行模块,用于激活所述唤醒进程,执行所述待安装代码;
恢复模块,用于安装完成后恢复所述新增文件。
在其中一个实施例中,所述替换模块还用于将注入代码内容编译生成可执行文件,并所述可执行文件的内容序列化,读取序列化后的所述可执行文件的内容,将所述可执行文件的内容覆盖所述执行文件的内容。
上述沙箱内安装软件的方法和系统,通过将注入代码内容和沙箱进程标识替换沙箱内的普通权限的文件,然后再将超级权限的待安装代码注入到唤醒进程中,以实现安装待安装代码,实现了在沙箱内安装超级权限的软件,使得超级权限的软件的安装方式更灵活,不再局限于在越狱情况下添加软件源,获取更新的软件,搜索得到所需的软件,然后下载进行安装这一安装方式。
具体实施方式
下面结合具体的实施例及附图对沙箱内安装软件的方法和系统的技术方案进行详细的描述,以使其更加清楚。
如图1所示,在一个实施例中,一种沙箱内安装软件的方法,包括以下步骤:
步骤S102,检测是否有安装软件的超级权限,若有,执行步骤S104,否则结束。
具体的,在步骤S102之前,可在终端上安装越狱插件。该终端可为智能手机、掌上电脑、个人数字助理等。以智能手机为例,该越狱插件可为MobileSubstrate,该插件能够自动对/Library/MobileSubstrate/DynamicLibraries目录下面的动态库进行加载,如:
/Library/MobileSubstrate/DynamicLibraries/MobileSafety.dylib,及其对应的plist,如MobileSafety.plist。
其中,dylib文件为执行文件,其内包含执行的内容;plist文件为指定注入进程标识的文件,以声明要注入的进程标识。注入进程标识可为注入进程名称或编号等。
超级权限(root权限)指可进行任意操作的最高权限。
步骤S104,搜索得到沙箱内普通权限的文件。
具体的,普通权限(mobile权限)是相对超级权限,其权限范围小,能完成部分操作。一般系统软件的安装等需要超级权限。因在沙箱内无法对超级权限的文件进行变更操作,需要搜索得到普通权限的文件。本实施例中,搜索得到/Library/MobileSubstrate/DynamicLibraries目录下可进行写入的文件作为普通权限的文件,如MobileSafety.dylib和MobileSafety.plist。
步骤S106,备份该文件。
具体的,该文件包括执行文件和指定注入进程标识的文件。该注入进程标识可为注入进程的名称或编号等。将MobileSafety.dylib备份为backup1,MobileSafety.plist备份为backup2文件。
步骤S108,将预先选择的注入代码内容和沙箱进程标识替换该文件的内容。
具体的,该注入代码内容包括超级权限的待安装代码和超级权限的唤醒进程标识。该待安装代码可为Detian软件代码或Windows操作系统代码或安卓系统代码。超级权限的待安装代码和唤醒进程是指需要在超级权限下才能运行。
唤醒进程标识可为唤醒进程名称或编号,根据唤醒进程名称或编号可得到对应的唤醒进程。沙箱进程标识可为沙箱进程名称或编号等。
在一个实施例中,如图2所示,步骤S108包括:
步骤S208,将该注入代码内容替换该执行文件的内容。
具体的,将注入代码内容编译生成可执行文件,并该可执行文件的内容序列化,读取序列化后的该可执行文件的内容,将该可执行文件的内容覆盖该执行文件的内容。
进一步的,将可执行文件的内容的序列化形成的字符串反序列化,然后写入该执行文件中。
例如注入代码内容为abcdef,MobileSafety.dylib文件的内容为fedcba,则将注入代码内容覆盖MobileSafety.dylib文件的内容,得到MobileSafety.dylib文件的内容为abcdef。
步骤S218,将该沙箱进程标识替换该指定注入进程标识的文件的内容。
具体的,将沙箱进程(sandboxd进程)标识替换MobileSafety.plist文件的内容。
步骤S110,在沙箱内激活超级权限的沙箱进程,执行该注入代码内容,将该待安装代码注入到唤醒进程中。
具体的,sandboxd进程是负责控制对沙箱的操作,该进程不属于常驻进程,需在特定的情况下才会启动,如在进入沙箱的App(Applicant,应用)里面,沙箱App退到后台,以及沙箱App的一些操作。启动sandboxd进程,会加载注入代码内容,执行超级权限代码到sandboxd进程中。该超级权限代码包括待安装代码(dpkg)和重启代码(reboot)。因sandboxd进程具有不稳定及自动退出的机制,采用唤醒进程对待安装代码执行操作。
根据沙箱进程标识可得到对应的沙箱进程,即可根据沙箱进程名称或编号获得对应的沙箱进程。
将待安装代码替换MobileSafety.dylib文件的内容,将唤醒进程标识替换MobileSafety.plist文件的内容。该唤醒进程可为Locationd进程或Configd进程。
将待安装代码注入到唤醒进程后,执行killall唤醒进程指令,杀掉唤醒进程,然后再重新唤醒,如此唤醒进程中注入了待安装代码。
步骤S112,激活该唤醒进程,执行该待安装代码。
本实施例中,唤醒进程为Locationd进程,激活Locationd进程,使用dpkg指令对detian软件进行安装。
根据唤醒进程标识可得到对应的唤醒进程,即可根据唤醒进程名称或编号获得对应的唤醒进程。
步骤S114,安装完成后恢复备份的文件。
具体的,安装完成后通过备份的两个文件backup1和backup2进行恢复,恢复得到原始的MobileSafety.dylib文件和MobileSafety.plist文件。
进一步的,所述方法还包括步骤:对终端进行重启或注销。
具体的,可通过reboot或者killallSpringBoard命令自动对终端进行重启或注销。SpringBoard属于Dock结构,包括iDevice的解锁后主菜单界面、Spotlight搜索界面和多任务切换菜单,其存在于iDevice进程中,可通过killallSpringBoard重启终端。重启或注销后安装完成。
在其他实施例中,步骤S106和步骤S114可省略。或者,步骤106可替换为新增文件,该新增文件可为搜索得到的沙箱内普通权限的文件或者其他文件,步骤114则为安装完成后恢复该新增文件。
上述沙箱内安装软件的方法,通过将注入代码内容和沙箱进程标识替换沙箱内的普通权限的文件,然后再将超级权限的待安装代码注入到唤醒进程中,以实现安装待安装代码,实现了在沙箱内安装超级权限的软件,使得超级权限的软件的安装方式更灵活,且该安装方式适用于推广debtian软件的应用。
如图3所示,在一个实施例中,一种沙箱内安装软件的系统,包括检测模块102、搜索模块104、备份模块106、替换模块108、注入模块110、执行模块112和恢复模块114。其中:
检测模块102用于检测是否有安装软件的超级权限。超级权限(root权限)指可进行任意操作的最高权限。
搜索模块104用于在检测到有权限安装软件时,搜索得到沙箱内普通权限的文件。具体的,普通权限(mobile权限)是相对超级权限,其权限范围小,能完成部分操作。一般系统软件的安装等需要超级权限。因在沙箱内无法对超级权限的文件进行变更操作,需要搜索得到普通权限的文件。本实施例中,搜索得到/Library/MobileSubstrate/DynamicLibraries目录下可进行写入的文件作为普通权限的文件,如MobileSafety.dylib和MobileSafety.plist。
其中,dylib文件为执行文件,其内包含执行的内容;plist文件为指定注入进程标识的文件,以声明要注入的进程标识。注入进程标识可为注入进程名称或编号等。
备份模块106用于备份该文件。
具体的,该文件包括执行文件和指定注入进程标识的文件。该注入进程标识可为注入进程的名称或编号等。将MobileSafety.dylib备份为backup1,MobileSafety.plist备份为backup2文件。
替换模块108用于将预先选择的注入代码内容和沙箱进程标识替换该文件的内容,该注入代码内容包括超级权限的待安装代码和超级权限的唤醒进程标识。
该待安装代码可为Detian软件代码或Windows操作系统代码或安卓系统代码。超级权限的待安装代码和唤醒进程是指需要在超级权限下才能运行。唤醒进程标识可为唤醒进程名称或编号,根据唤醒进程名称或编号可得到对应的唤醒进程。沙箱进程标识可为沙箱进程名称或编号等。
进一步的,替换模块108还用于将该注入代码内容替换该执行文件的内容,以及将该沙箱进程标识替换该指定注入进程标识的文件的内容。
具体的,替换模块108还用于将注入代码内容编译生成可执行文件,并该可执行文件的内容序列化,读取序列化后的该可执行文件的内容,将该可执行文件的内容覆盖该执行文件的内容。
例如注入代码内容为abcdef,MobileSafety.dylib文件的内容为fedcba,则将注入代码内容覆盖MobileSafety.dylib文件的内容,得到MobileSafety.dylib文件的内容为abcdef。将沙箱进程(sandboxd进程)标识替换MobileSafety.plist文件的内容。沙箱进程标识可为沙箱进程名称或编号等。
注入模块110用于在沙箱内激活超级权限的沙箱进程,执行该注入代码内容,将该待安装代码注入到唤醒进程中。
具体的,sandboxd进程是负责控制对沙箱的操作,该进程不属于常驻进程,需在特定的情况下才会启动,如在进入沙箱的App(Applicant,应用)里面,沙箱App退到后台,以及沙箱App的一些操作。启动sandboxd进程,会加载注入代码内容,执行超级权限代码到sandboxd进程中。该超级权限代码包括待安装代码(dpkg)和重启代码(reboot)。因sandboxd进程具有不稳定及自动退出的机制,采用唤醒进程对待安装代码执行操作。
根据沙箱进程标识可得到对应的沙箱进程,即可根据沙箱进程名称或编号获得对应的沙箱进程。
将待安装代码替换MobileSafety.dylib文件的内容,将唤醒进程标识替换MobileSafety.plist文件的内容。该唤醒进程可为Locationd进程或Configd进程。
将待安装代码注入到唤醒进程后,执行killall唤醒进程指令,杀掉唤醒进程,然后再重新唤醒,如此唤醒进程中注入了待安装代码。
执行模块112用于激活该唤醒进程,执行该待安装代码。
本实施例中,唤醒进程为Locationd进程,激活Locationd进程,使用dpkg指令对detian软件进行安装。
根据唤醒进程标识可得到对应的唤醒进程,即可根据唤醒进程名称或编号获得对应的唤醒进程。
恢复模块114用于在安装完成后恢复备份的文件。
具体的,安装完成后通过备份的两个文件backup1和backup2进行恢复,恢复得到原始的MobileSafety.dylib文件和MobileSafety.plist文件。
上述沙箱内安装软件的系统,通过将注入代码内容和沙箱进程标识替换沙箱内的普通权限的文件,然后再将超级权限的待安装代码注入到唤醒进程中,以实现安装待安装代码,实现了在沙箱内安装超级权限的软件,使得超级权限的软件的安装方式更灵活,且该安装方式适用于推广debtian软件的应用。
如图4所示,在一个实施例中,上述沙箱内安装软件的系统,除了包括检测模块102、搜索模块104、备份模块106、替换模块108、注入模块110、执行模块112和恢复模块114,还包括插件安装模块116和重启/注销模块118。其中:
插件安装模块116用于安装越狱插件。该终端可为智能手机、掌上电脑、个人数字助理等。以智能手机为例,该越狱插件可为MobileSubstrate,该插件能够自动对/Library/MobileSubstrate/DynamicLibraries目录下面的动态库进行加载,如:
/Library/MobileSubstrate/DynamicLibraries/MobileSafety.dylib,及其对应的plist,如MobileSafety.plist。
重启/注销模块118用于对终端进行重启或注销。
具体的,可通过reboot或者killallSpringBoard命令自动对终端进行重启或注销。SpringBoard属于Dock结构,包括iDevice的解锁后主菜单界面、Spotlight搜索界面和多任务切换菜单,其存在于iDevice进程中,可通过killallSpringBoard重启终端。重启或注销后安装完成。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。