能力值:
( LV2,RANK:10 )
|
-
-
2 楼
1、 不管是Linux 还是Windows ,使用API出错时, 记得打印错误码。
2、把你获取root权限的代码贴出来。
3、证明你现在是不是root . 使用getuid 看看ID就知道了。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
public static boolean RootCommand(String command)
{
Process process = null;
DataOutputStream os = null;
try
{
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes(command + "\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
} catch (Exception e)
{
Log.d("*** DEBUG ***", "ROOT REE" + e.getMessage());
return false;
} finally
{
try
{
if (os != null)
{
os.close();
}
process.destroy();
} catch (Exception e)
{
}
}
Log.d("*** DEBUG ***", "Root SUC ");
return true;
}
这是root代码
错误号是 13
getuid 10035
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
#define CAT_BUFSIZ (4096)
int raw_cat(int rfd, char * filename) {
static char *buf = NULL;
static char fb_buf[CAT_BUFSIZ];
static size_t bsize;
ssize_t nr, nw, off;
buf = fb_buf;
bsize = CAT_BUFSIZ;
LOGI("begin read");
while ((nr = read(rfd, buf, bsize)) > 0) {
for (off = 0; nr; nr -= nw, off += nw) {
LOGI("%s", buf + off);
}
}
if (nr < 0) {
LOGE("%s: invalid %d error %d", filename, nr, errno);
}
return 0;
}
Json::Value proc_maps(int pid) {
char filename[64];
register int i;
int ret;
int fd;
sprintf(filename, "/proc/%d/maps", pid);
LOGI("open %s", filename);
fd = open(filename, O_RDONLY);
if (fd == -1) {
LOGI("open %s failed error %d", filename, errno);
return Json::Value::null;
}
Json::Value root;
raw_cat(fd, filename);
close(fd);
return root;
}
完整代码
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
确实是权限问题,求教下,该怎么解决,感觉root代码有问题?,设备确实是root了,其他root软件都能正常工作,自己的软件也弹出了root 框
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
应该是有root权限,取消掉root权限代码,open /proc/pid/maps 都会出权限问题,有root代码情况下,打开可以,但是读取的时候,会出权限问题,用root explorer文件管理器获取root权限浏览,也无法获取到maps的内容
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
看了下su源代码,原因找到了
Android中App授权获取Root权限,其实不是App自身的权限提升了,而是通过具有ROOT权限的sh流来执行shell命令
明白为什么ida没有做一个APK来实现server了,而只是一个可执行文件。
uid上的限制导致 read失败
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
感谢分享
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
大哥ida调试安卓,用命令行的方式,这都被你想出原因是这个啊,但是我不能理解啊,为啥只能是命令获得了权限呢,这样如果我要写个app,来执行你上面那个读写maps文件的那段c代码可咋办!
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
请问有完整demo吗
|
|
|