首页
社区
课程
招聘
[讨论]遇到一个很奇怪的问题:简单su获取root失败
2015-3-15 14:27 11446

[讨论]遇到一个很奇怪的问题:简单su获取root失败

2015-3-15 14:27
11446
su.c是自己搞的简化版,主要就调用了这两个函数:setgid(0),setuid(0)。
去掉了和superuser.apk交互的部分,即任何人调用su都会成功,没有检查。

操作步骤:
1、手机已经root;
2、用ndk编译su.c成功,push到system/xbin/,并设置好sbit
3、去掉手机的root
4、进入adb shell(此时不是root,前缀是$)
5、执行su,成功,前缀变成#。但是实际上没有获得root权限,相关操作都返回“Permission denied”。
比如: ls data/data
返回:opendir failed, Permission denied

百思不得其解,求各位高人解答

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞0
打赏
分享
最新回复 (8)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whnet 2015-3-15 15:11
2
0
1、  你只是set 了而已。。  然后就退出了。 所以你的进程就退了。

2、别人的su 会自己再exec  一个shell

3、 使用id 可以知道当前shell 的身份。
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dreamasm 2015-3-15 15:45
3
0
安卓4.3及以上版本,setuid setgid没办法获取root权限。
雪    币: 5
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
牛宝宝 2015-3-16 14:18
4
0
Android 4.3以上启用了seandroid ,所以su 的setuid()setgid()均会失败。目前大家采用的策略是启动daemon的方式。这也是无奈之举。随着Android版本升级,系统本身的安全性也越来越高,未来给我们这些安全的开发者的出路也就越来越窄。
雪    币: 59
活跃值: (185)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
heartbeast 2015-3-16 14:53
5
0
那要怎么搞??
雪    币: 59
活跃值: (185)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
heartbeast 2015-3-16 14:55
6
0
Android4.3和4.4的SEAndroid没有强制开启啊,默认不都是permissive模式么?
雪    币: 5
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
牛宝宝 2015-3-16 16:04
7
0
http://tieba.baidu.com/p/2501675889 这个说的很明白,你看一下吧
雪    币: 173
活跃值: (2085)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jpacg 2015-3-17 09:28
8
0
具体请参考cm su的源码,当然,源码还要修改下才能支持4.3及以后版本。
https://github.com/CyanogenMod/android_system_extras_su
雪    币: 59
活跃值: (185)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
heartbeast 2015-3-17 14:58
9
0
看了这个帖子,感觉更迷糊了
adb shell对应的是adbd的进程吧?
和Zygote的权限处理应该没关系啊??
还是我理解错了。。。
游客
登录 | 注册 方可回帖
返回