首页
社区
课程
招聘
[求助]Runtime exec(su)执行失败
发表于: 2016-12-1 08:38 16110

[求助]Runtime exec(su)执行失败

2016-12-1 08:38
16110
完全root的机器,执行runtime.getruntime().exec(su)后,返回process正常,但是执行其它命令,如读取system下面文件时,通过getInputStream读取输出,一直没有内容,文件确定是有内容的,路径也没有问题,同样代码在另外一台root的机器上运行没有问题。各位有没有遇到过这样的问题?

PS:在adb中,su后执行cat读取文件是正常的。
PS2:su所在位置/system/bin/su,android系统版本4.4.4,ColorOS 2.0.1
系统进程消息如下:

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 82
活跃值: (104)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
id看看呢,还有就是系统是多少的?
2016-12-1 08:44
0
雪    币: 435
活跃值: (172)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
3
调用完su后只是那个sh获得了root权限, 你的app还是原来的权限, 访问系统文件之类的要在那个sh里面做, 不是在app的java代码里面写
2016-12-1 09:07
0
雪    币: 97
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
[QUOTE='火翼[CCG];1455559']调用完su后只是那个sh获得了root权限, 你的app还是原来的权限, 访问系统文件之类的要在那个sh里面做, 不是在app的java代码里面写[/QUOTE]

这是当然,下面是执行代码:
process = Runtime.getRuntime().exec("su");
            int iPid = getProcessId(process.toString());
            dataOutputStream = new DataOutputStream(process.getOutputStream());
            dataInputStream = new DataInputStream(process.getInputStream());
            dataOutputStream.writeBytes("cat /data/misc/wifi/*.conf\n");
            dataOutputStream.writeBytes("exit\n");
            dataOutputStream.flush();
            InputStreamReader inputStreamReader = new InputStreamReader(
                    dataInputStream, "UTF-8");
            BufferedReader bufferedReader = new BufferedReader(
                    inputStreamReader);
            String line = null;
            while ((line = bufferedReader.readLine()) != null) {
                wifiConf.append(line);
            }
            bufferedReader.close();
            inputStreamReader.close();
            process.waitFor();
2016-12-1 09:22
0
雪    币: 3
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
[QUOTE='火翼[CCG];1455559']调用完su后只是那个sh获得了root权限, 你的app还是原来的权限, 访问系统文件之类的要在那个sh里面做, 不是在app的java代码里面写[/QUOTE]

额,不知道就别瞎比比啊fuck,以前我也跟楼主一样尝试了很久没成功,然后大伙就跟你的说法一样,马丹啊,根本不是那样,楼主你可以尝试楼上那段代码,那才是正确姿势
2016-12-1 14:22
0
雪    币: 138
活跃值: (460)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
[QUOTE='火翼[CCG];1455559']调用完su后只是那个sh获得了root权限, 你的app还是原来的权限, 访问系统文件之类的要在那个sh里面做, 不是在app的java代码里面写[/QUOTE]

@cherryfly
1、用 adb shell , su 然后执行下 id 贴个图上来,然后尝试 cat /data/misc/wifi/*.conf 看看是否有权限
2、如果以上可以能确定有root权限, su 是否直接拒绝了代码执行?如果你的程序不方便看日志, 可以尝试用 “终端模拟器” 执行 su 再 cat /data/misc/wifi/*.conf  操作, 会有详细日志打印
3、问题描述太过朦胧 导致我们的 火翼[CCG] 被 黑夜破解 骂,罪过啊

总结:执行其他命令正常 这点是否包含了root才能执行的命令? 普通命令也会执行正常的,只有特权命令失败那就考虑是否得到了真正的root了

@黑夜破解
你说的楼上就是楼主代码,什么是正确姿势?
你既然遇到过 为什么不回答下呢,说一个回答者瞎bb 就是一个正确的姿势了?

我也是菜鸟, 回答的不对,或者对楼主的问题理解的不对 希望不会有人说我瞎BB
2016-12-2 09:31
0
雪    币: 3
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
4楼就是你要的答案啊,你丫的是在搞一个apk控制注入别人的程序吧,你丫的是不是再弄外挂集合软件你丫的胆子不小啊,不怕被抓啊
2016-12-2 15:49
0
雪    币: 6737
活跃值: (796)
能力值: ( LV13,RANK:393 )
在线值:
发帖
回帖
粉丝
8
楼主,不是我不告诉你,只是我觉得你不可能不知道自己错在哪里了,你既然都知道一条命令后面必须加\n才能执行,怎么会犯这种低级错误?
2016-12-4 21:28
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
su -c cat /data/misc/wifi/*.conf
2016-12-5 00:14
0
雪    币: 53
活跃值: (280)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
先 exec 这个看看su进程的各个capability位吧
cat /proc/$$/status

建议: 不要用root来干读取wifi密码的事
2016-12-6 16:17
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
这就是他自己用的啊。
这个黑夜破解很有意思啊,谁都怼,我很看好你。
这个问题很明显啊,值为空就是命令没有执行成功啊,有的机子上就是少些命令的,你用adb shell测试一下啊
2016-12-16 12:23
0
雪    币: 3
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
来啊咬我啊,咋滴你还跟踪我啊,什么叫我没用过,我以前就碰到过这种情况好吧,命令执行为空是因为代码写错了,换成4楼那个人说的就对了,根本不是什么少命令好不好,不知道你也别乱说行吧!
2016-12-16 23:58
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
拜托你看帖认真点行不,4楼就是楼主自己
2016-12-17 12:25
0
雪    币: 3
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
尴尬了
2016-12-26 14:20
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
su -c 'cat ***'
2017-2-2 15:37
0
游客
登录 | 注册 方可回帖
返回
//