对Android系统 root的理解

本文详细解析了一键root操作的实现原理,包括利用漏洞使拥有root权限的进程执行特定命令,以及root权限执行后的正常程序执行过程。重点讨论了su文件的复制与权限设置,以及如何通过adb shell命令实现root权限提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一键root原理

利用某漏洞,让拥有root权限的进程执行

copyfile("/data/local/tmp/su","/sytem/xbin/su",07777);
chmod("/system/xbin/su",07777);
copyfile("/data/local/tmp/su","/system/bin/su",07777);
chmod("/sytem/bin/su",07777);



一键root后,正常程序的执行过程
先决条件

1.su在/system/xbin/su或/system/bin/su.

2.su文件权限为 -rwsr-xr-x  root root .

注:su拷贝到 /data/lcoal/tmp/目录下 ,即-rwsr-xr-x root root data/local/tmp/su。

su执行setuid(0)函数失败,提示权限不够,经了解 su不能在data分区执行。



1.adb shell 执行su命令
1.1 shell fork ()一个shell子进程
1.2 shell 子进程 内执行 exec("su").
1.3 su 调用setgid(0)|setuid(0). 把 shell子进程提取到root权限。
1.4 进行execlp("/system/bin/sh","sh",NULL);



注意:
1.fork()函数。
代码段共享,数据独立。父进程与子进程都从fork()函数地方运行。fork函数父进程返回子进程ID。 子进程返回0.

2.exec()函数系列

进程的代码与数据都会被替换。只是保留了pid的少量信息。(Windows的ShellExecute 等API 完全不同)

3.可以利用fork() 子进程 +  子进程exec() + 父进程wait() 模拟 ShellExecute(),CreateProcess等API.





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值