公开/公告号CN102930190A
专利类型发明专利
公开/公告日2013-02-13
原文格式PDF
申请/专利权人 中科方德软件有限公司;
申请/专利号CN201210413902.9
申请日2012-10-25
分类号G06F21/30(20130101);
代理机构
代理人
地址 100190 北京市海淀区中关村南四街4号4号楼2层
入库时间 2024-02-19 17:52:51
法律状态公告日
法律状态信息
法律状态
2019-10-18
未缴年费专利权终止 IPC(主分类):G06F21/30 授权公告日:20151209 终止日期:20181025 申请日:20121025
专利权的终止
2015-12-09
授权
授权
2013-03-20
实质审查的生效 IPC(主分类):G06F21/30 申请日:20121025
实质审查的生效
2013-02-13
公开
公开
技术领域
本发明属于智能手机操作系统的技术领域,尤其涉及一种在安卓系统中阻止用户获取超级用户权限的方法。
背景技术
安卓(Android)是一种以linux为基础的开放源码操作系统,主要适用于便捷设备如:智能手机、平板电脑、学习机、MP4等等。在使用Android操作系统时,用户取得系统的超级权限后,可以进行如下操作:启动或停止一个进程,删除或增加用户,增加或者禁用硬件等等,获得超级权限的用户可以访问和修改Android系统中几乎所有的文件。这样虽然可以使用户取得更大权限,拥有更多的操作选择,但是同时也带来许多问题。首先,厂家可以自己定制Android系统,从商业的角度上说有些系统隐私不宜公开,而用户取得超级权限后,就可以随意访问或者修改这些系统隐私;其次,从安全的角度,有些系统应用不可删除,否则影响系统正常启动及稳定性,对于众多普通的安卓用户,往往没有足够的专业知识,经常会因为错误删除系统文件导致Android系统无法使用;最后,当用户获得Android系统的超级授权后,有可能因为系统设置的过于开放,而导致更容易被一些黑客入侵,导致系统内的隐私信息外泄。因此,有必要阻止用户获取超级用户权限,可有效预防上述问题。
目前的技术往往是区分普通权限用户和超级权限用户,禁止普通用户获得超级权限。而产生的问题是,经过破解超级权限用户的登录门禁后,用户就可以取得超级用户的权限,如此也就带来了上文中的所述问题。
发明内容
针对现有技术中的问题,本发明旨在提供一种安卓系统阻止用户获取超级用户权限的方法,其特征在于包括如下步骤:
步骤1、安装linux环境,安装linux环境下的开发工具;
步骤2、下载安卓系统源代码,按用户模式编译安卓系统,生成系统文件;
步骤3、将编译生成的busybox目录下的su文件删除;
步骤4、用fsck.cramfs命令将文件系统system文件夹重新打包成system.img;
步骤5、设置system文件夹分区所占空间与system.img文件所占空间相等;
步骤6、将系统文件system.img烧写到目标系统中。
进一步,本发明所述的安卓系统阻止用户获取超级用户权限的方法,其特征在于所述linux环境下的开发工具包括:Git1.5.4、GUN privacy Guard、JDK、bison、gperf、zip、curl、fsck.cramfs。
进一步,本发明所述的安卓系统阻止用户获取超级用户权限的方法,其特征在于在所述步骤2中,通过repo工具下载Android系统源代码。
进一步,本发明所述的安卓系统阻止用户获取超级用户权限的方法,其特征在于在所述步骤2中,修改build/envsetup.sh,于envsetup.sh最开始添加代码:export TARGET BUILD VARIANT=user,来设置编译模式为USER模式。
进一步,本发明所述的安卓系统阻止用户获取超级用户权限的方法,其特征在于步骤5中进一步包括将system分区权限设置为只读,并将该分区可用空间设置为0。
总而言之,以用户模式编译后的Android系统无法通过调式桥获取超级用户权限;去掉用户切换命令su文件后用户无法通过切换命令来获取超级用户权限;因system分区剩余空间大小为0且为只读,所以也无法通过移植一个用户切换命令su文件到system分区里,并试图通过用户切换来获取超级用户权限。这样用户始终以普通用户来使用该Android系统。
附图说明
图1是本发明所述在安卓系统中阻止用户获取超级用户权限的方法的实施流程图。
具体实施方式
为使本发明实施过程、技术方案和优点更加清楚,下面将结合附图,对本发明的技术方案进行清楚、完整地描述。
图1是本发明所述在安卓系统中阻止用户获取超级用户权限的方法的实施流程图。如图1所示,本发明在安卓系统中阻止用户获取超级用户权限的方法的包括如下步骤:
步骤1、安装linux环境,安装linux环境下的开发工具;
具体来说,由于Android系统的编译需要在linux环境下进行,所以需要安装一个linux环境,作为Android系统的开发环境,并下载安装各种开发工具。必要的开发工具包括:Git1.5.4、GUN privacy Guard、JDK、bison、gperf、zip、curl、fsck.cramfs。其中:
Git是分布式源码管理工具。Android官方使用git版本控制,因此需要安装git工具来下载与管理Android源代码。
JDK(Java Development Kit)是Java产品开发的工具。Android源码大都使用Java语言编写,因此需要该工具参与编译。
GNU的gperf工具是一种“完美的”散列函数,可以为用户提供的一组特定字符串生成散列表、散列函数和查找函数的代码,主要用于的命令行处理,类似一个文本传输工具。
GUN privacy Guard,是传输时用来做文件加密用。
bison是编译时用到的插件。
curl是利用URL语法在命令行方式下工作的文件传输工具。它支持很多协议:FTP,FTPS,HTTP,HTTPS等。
zip和fsck.cramfs是文件压缩包管理工具。
步骤2、下载安卓系统源代码,按用户模式编译安卓系统,生成系统文件;
Android操作系统是基于Linux内核的开源操作系统,可以通过repo工具下载Android系统源代码,repo是google写的用来管理多个git的工具。Android源码有多个git,因此需要使用该工具来下载及管理源码。
Android源代码的具体下载过程为:安装repo工具,将repo安装到~/bin中,也就是将repo工具安装在根目录bin文件夹下,方便该用户使用。修改repo执行权限为可以执行,在PATH中添加环境变量~/bin,方便用户使用repo命令。程序实现如下:
#cd~(将当前工作目录转到用户根目录下)
#mkdir bin(创建bin文件夹)
#curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo>~/bin/repo(下载repo工具)
#chmod a+x~/bin/repo (为repo工具添加可执行权限)
#export PATH=$PATH:/~/bin (为repo添加环境变量)
通过repo下载Android源代码:
#mkdir myAndroid(创建myAndroid目录,用来存放源码)
#cd myAndroid(将当前工作目录转到myAndroid目录)
#repo init-u https://android.googlesource.com/platform/manifest(下载Android源代码)
#repo sync(同步源码)。
设置编译模式为USER模式需要修改build/envsetup.sh,于envsetup.sh最开始添加代码:export TARGET_BUILD_VARIANT=user,保存并退出。
envsetup.sh是用于编译前的一些环境变量初始化脚本,功能就是进行环境变量初始化。
执行#source build/envsetup.sh(执行脚本envsetup.sh进行环境变量初始化)
再执行#m(执行编译命令)
等待编译完成即可。用户模式编译,是Android源代码编译的一种方式。按该方式编译后的Android系统安全性高,系统提供给用户的所有权限为普通权限。按用户模式编译Android源代码,则Android系统启动后adbd进程会以普通用户模式启动。adbd是AndroidDebug Bridge Daemon的缩写,意为Android系统的调试桥。如果该调式桥以超级用户模式启动,则用户通过该桥就会拥有超级用户权限,所以,该调式桥必须修改为普通用户模式启动,因此需要按用户模式编译Android源码。普通用户模式用户无法拥有超级用户权限,因而用户无法通过该桥获取拥有超级用户权限。
步骤3、将编译生成的busybox目录下的su文件删除;
编译后生成的文件在out文件夹中,out/target/product/generic目录下有root、system、data、等子文件夹。system包括了Android系统的包、库文件,系统启动后挂载到根目录的system下,data存放用户数据,系统启动后挂载到根目录的data下。检查编译完成后的out/target/product/system/busybox/目录下是否存在su文件,若存在该文件则直接删除,若无则什么都不用修改。该文件为可执行文件,执行该文件可用于用户切换如:从普通用户切换到超级用户。因此,需要去掉该文件,以免用户通过该文件获取超级用户权限。
步骤4、用fsck.cramfs命令将文件系统system文件夹重新打包成system.img;
退出system目录并用命令fsck.cramfs将目录system文件夹打包成system.img文件。fsck.cramfs是专门针对闪存设计的只读压缩的文件系统,文件系统类型可以是ext2或ext3,将system文件夹子重新打包成只读文件系统。
步骤5、设置system文件夹分区所占空间与system.img文件所占空间相等;
设置system分区大小为system.img大小,权限为只读,并将该分区可用空间设置为0,则用户无法修改该文件系统。
步骤6、将系统文件system.img烧写到目标系统中。
修改烧录脚本,将修改后的脚本与system.img及out目录下生成的其他镜像文件如:boot.img、userdata.img、recovery.img烧录到目标系统中。system.img是Android系统镜像;boot.img是系统linux内核镜像;userdata.img是系统用户镜像,如提供给一些应用程序等;recovery.img系统恢复镜像。
此时,启动目标目标系统,则该系统就是我们制作的可以阻止用户获取超级用户权限的安卓系统。
总而言之,以用户模式编译后的Android系统无法通过调式桥获取超级用户权限;去掉用户切换命令su文件后用户无法通过切换命令来获取超级用户权限;因system分区剩余空间大小为0且为只读,所以也无法通过移植一个用户切换命令su文件到system分区里,并试图通过用户切换来获取超级用户权限。这样用户始终以普通用户来使用该Android系统。
以上是对本发明的优选实施例进行的详细描述,但本领域的普通技术人员应该意识到,在本发明的范围内和精神指导下,各种改进、添加和替换都是可能的,例如调整接口调用顺序、改变消息格式和内容、使用不同的编程语言(如C、C++、Java等)实现等。这些都在本发明的权利要求所限定的保护范围内。
机译: 获取超级用户权限的方法和装置
机译: 用于将适于与供应商的元素相关联的用户权限转移到消费者权利的方法,与元素相关联的许可证,以及用于从元权限中获取适于与元素一起使用的权限的方法。
机译: 用于由缺乏超级用户权限的用户控制文件系统安装操作的性能的方法和装置