博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android系统Root认识
阅读量:7042 次
发布时间:2019-06-28

本文共 1970 字,大约阅读时间需要 6 分钟。

root指的是你有权限可以再系统上对所有档案有 "读" "写" "执行"的权力。root这名词常出现再Linux & unix上,Android是架构再Liinux上面所有才会有root这名词。而root相当于windows 上的administration,一个管理者的身份。当你在Windows上是属于administration的权限下,你几乎可以再任何地方对任何档案删除他,你删除时 Windows上是会问你是否删除。但再Linux(Android也一样)当你是 root后,你删除文件是值接删除的且不会跟你确定是否删除,这删除不是放到类似垃圾桶的地方而是真的删了....

Android的应用程序入口是Java程序。应用程序的启动者是由系统临时根据Androidmanifest.xml中定义的权限而创建的临时用户。而不像linux那样是使用登陆者的身份启动,从而使得进程具有登陆者的所有权限。这也是Android的安全机制之一。新的权限机制也带来新的问题,Android给应用程序的权限是按功能来分,java虽然可以访问文件系统。但由于应用程序本身是临时用户启动,这个临时用户权限十分有限。因此诞生了<越狱/root机器>这样的产物。

其实root机器不是真正能让你的应用程序具有root权限。它原理就跟linux下的像sudo这样的命令。在系统的bin目录下放个su程序并属主是root并有suid权限。则通过su执行的命令都具有Android root权限。当然使用临时用户权限想把su拷贝的/system/bin目录并改属性并不是一件容易的事情。这里用到2个工具跟2个命令。把busybox拷贝到你有权限访问的目录然后给他赋予4755权限,你就可以用它做很多事了。当然busybox只能不能提升权限,真正提升权限的是ratc这个程序,这个程序中一键root包里面可以找到,作用是rooting在adb的shell,它是rage against the cage 的缩写。原理估计跟模拟器使用adb shell登陆可以获得root shell差不多。(因为它运行需要adb连接才会成功)。

使用busybox前先运行ratc,这样运行busybox的UID将是0,也就是root。首先把system目录改成可读性的:busybox mount -o remount,rw /system,当然你还不能改下面的文件,因为system下文件的所有者都不是你。但你可以偷梁换柱把system下的目录给换掉。使用命令Busybox mount -t tmpfs none /system/xbin,呵呵这下xbin目录你随便写了。将su跟busybox弄过去cp/data/data/xxx/su /system/xbin。然后赋权限chmod 4755 /system/xbin/su。然后使目录生效busybox --install -s /system/xbin,别忘善后busybox mount -o remount,ro /system去掉system可写。这样只是临时的,只能用su跟busybox能执行一些原来系统没有权限执行的命令而已。当系统重启后/system/xbin又变为原来的文件。真正要改系统的话需要自己写内核代码(相当于windows的驱动程序)。内核文件拥有所有权限。使用busybox命令insmod /data/data/xxx/xxx.ko装载内核文件,你想干嘛就可以干嘛了。

当然我们不是搞破解的没必要去改别人的机器,我们只是想让自己应用程序具有root权限而已。所以临时的su就可以了。我们用c++写一个可执行文件。使用socket可以跟java的程序通讯。然后将需要使用root权限才能执行的代码放在c++程序里,然后java程序中创建新的su进程,将c++程序带全路径作为参数1。启动后就可以通过socket调用c++函数去执行你想干的事了。最后程序执行完了别忘了善后busybox umount /system/xbin。

最后说说要注意的事情,如果机器已经拥有Android root权限的话就不需要做这些事情了,但root过的机器都有装有个权限管理的程序。会弹出对话框。但这个程序管理能力有限,如果不想让他弹出的话。也许可以通过改su文件名来解决。另外看到两篇相关文章如下:

    http://www.cnblogs.com/xiaoxiaoboke/archive/2012/02/13/2349719.html

http://hi.baidu.com/%CF%B1%B8%BE%C2%B1%C3%E6/blog/item/14c5dc296003ce225243c170.html

你可能感兴趣的文章
学习Hadoop大数据基础框架
查看>>
Ansible-playbook roles安装mysql实例(学习笔记二十七)
查看>>
HT for Web列表和3D拓扑组件的拖拽应用
查看>>
javascript replaceAll方法
查看>>
Hacker News 12 月招聘趋势:React 已霸榜 19 个月
查看>>
SpringBoot配置devtools实现热部署
查看>>
实验吧 ---- 隐写术之so beautiful so white
查看>>
sklearn调包侠之线性回归
查看>>
《Linux命令行与shell脚本编程大全》 第四章
查看>>
Flask开发微电影网站(四)
查看>>
使用Maven搭建Springboot版ssm框架
查看>>
中介者模式
查看>>
怎么就死循环了!
查看>>
Jmeter之tomcat性能测试+性能改进措施
查看>>
MP实战系列(七)之集成springboot
查看>>
hexo 创建文章、标签、分类的Front-matter
查看>>
Confluence 6 复杂授权或性能问题
查看>>
从中国质造到淘宝心选:CBM赋能“数造”新品牌
查看>>
Python 学习笔记1
查看>>
python(logging )日志模块学习
查看>>