一种在安卓系统中阻止用户获取超级用户权限的方法

文档序号:6379769阅读:293来源:国知局
专利名称:一种在安卓系统中阻止用户获取超级用户权限的方法
一种在安卓系统中阻止用户获取超级用户权限的方法技术领域
本发明属于智能手机操作系统的技术领域,尤其涉及一种在安卓系统中阻止用户获取超级用户权限的方法。
背景技术
安卓(Android)是一种以Iinux为基础的开放源码操作系统,主要适用于便捷设备如智能手机、平板电脑、学习机、MP4等等。在使用Android操作系统时,用户取得系统的超级权限后,可以进行如下操作启动或停止一个进程,删除或增加用户,增加或者禁用硬件等等,获得超级权限的用户可以访问和修改Android系统中几乎所有的文件。这样虽然可以使用户取得更大权限,拥有更多的操作选择,但是同时也带来许多问题。首先,厂家可以自己定制Android系统,从商业的角度上说有些系统隐私不宜公开,而用户取得超级权限后,就可以随意访问或者修改这些系统隐私;其次,从安全的角度,有些系统应用不可删除,否则影响系统正常启动及稳定性,对于众多普通的安卓用户,往往没有足够的专业知识,经常会因为错误删除系统文件导致Android系统无法使用;最后,当用户获得Android 系统的超级授权后,有可能因为系统设置的过于开放,而导致更容易被一些黑客入侵,导致系统内的隐私信息外泄。因此,有必要阻止用户获取超级用户权限,可有效预防上述问题。
目前的技术往往是区分普通权限用户和超级权限用户,禁止普通用户获得超级权限。而产生的问题是,经过破解超级权限用户的登录门禁后,用户就可以取得超级用户的权限,如此也就带来了上文中的所述问题。发明内容
针对现有技术中的问题,本发明旨在提供一种安卓系统阻止用户获取超级用户权限的方法,其特征在于包括如下步骤
步骤I、安装Iinux环境,安装Iinux环境下的开发工具;
步骤2、下载安卓系统源代码,按用户模式编译安卓系统,生成系统文件;
步骤3、将编译生成的busybox目录下的su文件删除;
步骤4、用fsck. cramfs命令将文件系统system文件夹重新打包成system, img ;
步骤5、设置system文件夹分区所占空间与system, img文件所占空间相等;
步骤6、将系统文件system, img烧写到目标系统中。
进一步,本发明所述的安卓系统阻止用户获取超级用户权限的方法,其特征在于所述 Iinux环境下的开发工具包括Gitl. 5. 4、GUN privacy Guard、JDK、bison、gperf、zip、 curl、fsck. cramfso
进一步,本发明所述的安卓系统阻止用户获取超级用户权限的方法,其特征在于在所述步骤2中,通过repo工具下载Android系统源代码。
进一步,本发明所述的安卓系统阻止用户获取超级用户权限的方法,其特征在于在所述步骤2中,修改build/envsetup. sh,于envsetup. sh最开始添加代码exportTARGET BUILD VARIANT=User,来设置编译模式为USER模式。
进一步,本发明所述的安卓系统阻止用户获取超级用户权限的方法,其特征在于步骤5中进一步包括将system分区权限设置为只读,并将该分区可用空间设置为O。
总而言之,以用户模式编译后的Android系统无法通过调式桥获取超级用户权限;去掉用户切换命令su文件后用户无法通过切换命令来获取超级用户权限;因system 分区剩余空间大小为O且为只读,所以也无法通过移植一个用户切换命令su文件到system 分区里,并试图通过用户切换来获取超级用户权限。这样用户始终以普通用户来使用该 Android 系统。


图I是本发明所述在安卓系统中阻止用户获取超级用户权限的方法的实施流程图。
具体实施方式
为使本发明实施过程、技术方案和优点更加清楚,下面将结合附图,对本发明的技术方案进行清楚、完整地描述。
图I是本发明所述在安卓系统中阻止用户获取超级用户权限的方法的实施流程图。如图I所示,本发明在安卓系统中阻止用户获取超级用户权限的方法的包括如下步骤:
步骤I、安装Iinux环境,安装Iinux环境下的开发工具;
具体来说,由于Android系统的编译需要在Iinux环境下进行,所以需要安装一个 Iinux环境,作为Android系统的开发环境,并下载安装各种开发工具。必要的开发工具包括Gitl. 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中添加环境变量7bin,方便用户使用repo命令。程序实现如下
#CCT(将当前工作目录转到用户根目录下)
#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 my An droid (创建 my An droid 目录,用来存放源码)
#cd myAndroid (将当前工作目录转到myAndroid目录)
#repo init-u https://android, googlesource. com/pIatform/manifest( T~Hi 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
步骤5、设置system文件夹分区所占空间与system, img文件所占空间相等;
设置system分区大小为system, img大小,权限为只读,并将该分区可用空间设置为0,则用户无法修改该文件系统。
步骤6、将系统文件system, img烧写到目标系统中。
修改烧录脚本,将修改后的脚本与system, img及out目录下生成的其他镜像文件如boot. img、userdata. img、recovery, img 烧录至Ij 目标系统中。system, img 是 Android 系统镜像;boot. img是系统Iinux内核镜像;userdata. img是系统用户镜像,如提供给一些应用程序等!recovery, img系统恢复镜像。
此时,启动目标目标系统,则该系统就是我们制作的可以阻止用户获取超级用户权限的安卓系统。
总而言之,以用户模式编译后的Android系统无法通过调式桥获取超级用户权限;去掉用户切换命令su文件后用户无法通过切换命令来获取超级用户权限;因system 分区剩余空间大小为O且为只读,所以也无法通过移植一个用户切换命令su文件到system 分区里,并试图通过用户切换来获取超级用户权限。这样用户始终以普通用户来使用该 Android 系统。
以上是对本发明的优选实施例进行的详细描述,但本领域的普通技术人员应该意识到,在本发明的范围内和精神指导下,各种改进、添加和替换都是可能的,例如调整接口调用顺序、改变消息格式和内容、使用不同的编程语言(如C、C++、Java等)实现等。这些都在本发明的权利要求所限定的保护范围内。
权利要求
1.一种在安卓系统中阻止用户获取超级用户权限的方法,其特征在于包括以下步骤 步骤I、安装Iinux环境,安装Iinux环境下的开发工具; 步骤2、下载安卓系统源代码,按用户模式编译安卓系统,生成系统文件; 步骤3、将编译生成的busybox目录下的su文件删除; 步骤4、用fsck. cramfs命令将文件系统system文件夹重新打包成system, img ; 步骤5、设置system文件夹分区所占空间与system, img文件所占空间相等; 步骤6、将系统文件system, img烧写到目标系统中。
2.根据权利要求I所述的在安卓系统中阻止用户获取超级用户权限的方法,其特征在于所述 Iinux 环境下的开发工具包括Gitl. 5. 4、GUN privacy Guard、JDK、bison、gperf >zip、curl、fsck.cramfs。
3.根据权利要求I所述的在安卓系统中阻止用户获取超级用户权限的方法,其特征在于在所述步骤2中,通过repo工具下载Android系统源代码。
4.根据权利要求I或3所述的在安卓系统中阻止用户获取超级用户权限的方法,其特征在于在所述步骤2中,修改build/envsetup. sh,于envsetup. sh最开始添加代码exportTARGET_BUILD VARIANT=user,来设置编译模式为USER模式。
5.根据权利要求I所述的在安卓系统中阻止用户获取超级用户权限的方法,其特征在于步骤5中进一步包括将system分区权限设置为只读,并将该分区可用空间设置为O。
全文摘要
一种在安卓系统中阻止用户获取超级用户权限的方法,属于智能手机操作系统的技术领域,本发明以用户模式编译后的Android系统无法通过调式桥获取超级用户权限;并去掉用户切换命令su文件,则用户无法通过该命令来获取超级用户权限;再将system分区剩余空间大小设置为0,系统权限设置为只读,因此用户也无法通过移植一个用户切换命令su文件到system分区里,最终阻止用户试图通过该命令进行用户切换来获取超级用户权限。这样用户始终以普通用户来使用该Android系统。
文档编号G06F21/30GK102930190SQ20121041390
公开日2013年2月13日 申请日期2012年10月25日 优先权日2012年10月25日
发明者唐旭念, 高默, 余美强, 左飞 申请人:中科方德软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1