root临时权限原理(转自互联网)
2012-07-03 10:18
127 查看
Android root权限获取的教程有很多,为了让大家更进一步的了解root的奥秘所在,灵客风特为您奉献本文,希望对您有所帮助。
Android的应用程序入口肯定是Java程序。应用程序的启动者是由系统临时根据Androidmanifest.xml中定义的权限而创建的临时用户。而不像linux那样是使用登陆者的身份启动,从而使得进程具有登陆者的所有权限。这也是Android的安全机制之一。
新的权限机制也带来新的问题,Android给应用程序的权限是按功能来分,java虽然可以访问文件系统。但由于应用程序本身是临时用户启动,这个临时用户权限十分有限。因此诞生了< 越狱/root机器>这样的产物。
其实root机器不是真正能让你的应用程序具有root权限。它原理就跟linux下的像sudo这样的命令。在系统的bin目录下放个su程序并属主是root并有suid权限。则通过su执行的命令都具有Android root权限。
Su的源代码网上也有,有兴趣的同学去google下。
当然使用临时用户权限想把su拷贝的/system/bin目录并改属性并不是一件容易的事情。这里用到2个工具跟2个命令。工具就是busybox。不熟悉的同学可以去网上google下。这个太有名了我就不多说了。
把busybox拷贝到你有权限访问的目录然后给他赋予4755权限,你就可以用它做很多事了。
当然busybox只能不能提升权限,真正提升权限的是ratc这个程序,这个程序中一键root包里面可以找到,作用是rooting在adb的shell。
网上介绍Ratc的文章不多,它是rage against the cage 的缩写。是真正的提升权限的破解程序。虽然我没看过源代码,但估计是利用adb源代码部分内容来实现的,原理估计跟模拟器使用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文件名来解决。有兴趣的同学不妨试试。
Android的应用程序入口肯定是Java程序。应用程序的启动者是由系统临时根据Androidmanifest.xml中定义的权限而创建的临时用户。而不像linux那样是使用登陆者的身份启动,从而使得进程具有登陆者的所有权限。这也是Android的安全机制之一。
新的权限机制也带来新的问题,Android给应用程序的权限是按功能来分,java虽然可以访问文件系统。但由于应用程序本身是临时用户启动,这个临时用户权限十分有限。因此诞生了< 越狱/root机器>这样的产物。
其实root机器不是真正能让你的应用程序具有root权限。它原理就跟linux下的像sudo这样的命令。在系统的bin目录下放个su程序并属主是root并有suid权限。则通过su执行的命令都具有Android root权限。
Su的源代码网上也有,有兴趣的同学去google下。
当然使用临时用户权限想把su拷贝的/system/bin目录并改属性并不是一件容易的事情。这里用到2个工具跟2个命令。工具就是busybox。不熟悉的同学可以去网上google下。这个太有名了我就不多说了。
把busybox拷贝到你有权限访问的目录然后给他赋予4755权限,你就可以用它做很多事了。
当然busybox只能不能提升权限,真正提升权限的是ratc这个程序,这个程序中一键root包里面可以找到,作用是rooting在adb的shell。
网上介绍Ratc的文章不多,它是rage against the cage 的缩写。是真正的提升权限的破解程序。虽然我没看过源代码,但估计是利用adb源代码部分内容来实现的,原理估计跟模拟器使用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文件名来解决。有兴趣的同学不妨试试。
相关文章推荐
- Ubuntu 获取 root 权限 (临时&永久)
- su命令、sudo临时赋予其他用户权限命令、限制root用户远程登录
- SSL/TLS的原理以及互联网究竟是如何工作的(2)—“更合适的架构,大家一起努力!”
- linux禁止root用户登录,并开启普通用户sudo权限
- 把windows一个目录mount到Ubuntu下,非root用户没有写权限
- VMware Workstation 无法连接到虚拟机。请确保您有权限运行该程序、访问改程序使用的所有目录以及访问所有临时文件目录。
- cling/rootsys原理剖析(1):JIT到底是怎么回事
- mysql修改root密码和设置权限 转摘:http://www.cnblogs.com/wangs/p/3346767.html
- root用户无法修改文件权限(lsattr/chattr: i 和 a 属性含义)
- 互联网工作原理(7.理解IP地址和Domain)
- 基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版
- Android编程获取手机root权限
- Android 二:root 手机的原理
- mysql创建用户、删除用户、创建root用户和修改用户密码,grant分配权限,查询测试,以及库中授权表解析
- huazi用户没有权限使用sudo命令以root身份执行命令 解决方法
- Ubuntu Root 权限修改
- Ubuntu root 权限详解
- [互联网面试笔试汇总C/C++-21] FIFO 、LRU、LFU的含义、原理和实现-完美世界
- 互联网推送服务原理:长连接+心跳机制(MQTT协议)
- 互联网推送服务原理:长连接+心跳机制