Android中什么是ROOT?获取root权限的方式
什么是root
对于android手机用户来说的root是指拥有root权限,一般情况下,手机厂商出于安全考虑会关闭手机的root权限,手机是运行在普通用户权限下的,用户是无法操作系统中的文件与数据的。
拥有root可以对系统中的所有对象进行操作。
什么是刷机
如htc手机在刷机前需要保证s-off,s-off代表什么呢?
s代表 securitylock安全锁,保护锁的意思,s-off就是关掉锁保护。
然后是motorola的手机,这个厂商对于不同型号的手机设置是不同的,很多motorola型号的手机将bootloader是锁住的,因此,在刷机前需要先解锁bootloader。(boot在计算机科学领域称为 “引导”,bootloader顾名思义 引导启动)
还有中兴手机,这厂商更是变态,一次次的版本升级只是为了锁住用户不让用户升级,也就导致了同一型号的手机由于版本不同有的型号带recovery,有的又不带。
三星的手机现在可以说是最好卖的,一方面是出色的硬件配置与外观,另一方面是有众多的rom包可以刷。三星的好几款手机是google的测试样机,而且三星手机在出厂时对用户的限制相比其它品牌是较少的,这也是广大android开发者对它青睐有加的原因。
早先的android手机要想获取root权限可以有以下几种方式:
1.使用本地提权利用工具来直接root,这是最原始最纯洁的方式。随着厂商对rom的升级,这些内核的漏洞随时都可能被修补,因此,这种root方法在时间与空间上都有着很大的局限性。
2.由于手机厂商对硬件的封闭,加上内核补丁修补很完全,这个时候获取root权限就更难了,这个时候刷机与root就联合起来了,由于不能从系统内部通过exploits(利用,运用)来获取root权限,只能通过修改rom包来达到root的目的,这也是目前很多第三方rom包自带了root的原因,然而手机厂商也不是吃干饭的,手机厂商在ota升级时使用recovery对包签名进行验证来防止用户刷入修改过的包。对于这种变态的厂商,只能通过fastboot来线刷了,这里内容就不再展开了。
3.当然,还有一部分厂商,为了吸引更多用户购买他们的手机,还是在手机中偷偷的留了后门的,比如不锁bootloader,让用户刷第三方的recovery,又或是干脆留个以前的漏洞不补,让用户自己来exploits等等。
su与superuser.apk是如何协作的
在root后手机会植入su与superuser.apk两个文件,
su会被放入手机的/system/bin目录下,
superuser.apk被放到/system/app目录下,它们组合在一起,为系统提供了su权限的管理。
这两个工具目前由xda上的chainsdd在维护(顺便说一下,国内xxroot工具也有自已的su与superuser.apk文件,修改取自并修改于chainsdd的代码,并且版权被切)。
su程序与linux平台上的su本身无太大差别,只是由于系统的特殊性去掉了部分内容,并加上了一些控制代码。
su程序保留的命令行参数不多,“-c”与“-s”可能是最常用的,整个程序核心功能由两个方向性的函数allow()与deny()组成,在经过计算获取到了命令行参数与命令后,会执行以下代码:
aid_root与aid_shell分别是root与shell权限,程序直接放行,stat()函数会检查手机是否安装有superuser.apk,没有程序会拒绝执行。条件满足就会以superuser的权限往下执行:
database_init()与database_check()负责从superuser.apk程序databases目录下的permissions.sqlite中读取权限设置,这也是为什么superuser.apk有能力控制su的原因!(人家主动找上门的)等dballow弄到手,该放行该拒绝就看着办了,如果没搜索到记录就代表是第一次,需要往下建立socket来send_intent,send_intent()采用底层构造intent方式来发送广播,这个广播会被superuser.apk接收,等返回后会给你返回个字符串“allow”或“deny”,这时候su程序该咋地就咋地了:
推荐阅读
-
Android用代码获取手机root之后的最高权限
-
Android用代码获取手机root之后的最高权限
-
Android中Root权限获取的简单代码
-
Android获取ROOT权限的实例代码
-
Android中Root权限获取的简单代码
-
Android手机获取root权限并实现关机重启功能的方法
-
Android获取ROOT权限的实例代码
-
YII2中,MODEL获取表字段作为属性的方式为什么是使用“SHOW FULL COLUMNS FROM TABLE”?
-
Android手机获取root权限并实现关机重启功能的方法
-
YII2中,MODEL获取表字段作为属性的方式为什么是使用“SHOW FULL COLUMNS FROM TABLE”?