2026年10月29日 · 今日 0 帖 · 会员 6.1万 · 主题 17.4万
登录 · 注册 · 游客,欢迎随便逛逛
返回版块
JK-0098594
Lv5甘首五朝臣等级图标等级图标
勋章勋章
帖子
21
回复
611
积分
8,130
注册
2012-03-10
[安卓交流]

[安卓技术]安卓高级教程之获取root原理解析系列四

[复制链接]
查看 433 回复 3
楼主 发表于 | 只看该作者

上文说过,root的本质就是往 /system/bin/ 下放一个su文件,不检查调用者权限的su文件。普通程序可以调用该su来运行root权限的命令。superuser.apk中就自带了一个这样的su程序。一开始superuser会检测/system/bin/su是否存在:

File su = new File(“/system/bin/su“);

// 检测su文件是否存在,如果不存在则直接返回

if (!su.exists()) {

Toast toast = Toast.makeText(this, “Unable to find /system/bin/su.“, Toast.LENGTH_LONG);

toast.show();

return;

}

//如果大小一样,则认为su文件正确,直接返回了事。

if (su.length() == suStream.available())

{

suStream.close();

return; //

}

// 如果检测到/system/bin/su 文件存在,但是不对头,则把自带的su先写到“/data/data/com.koushikdutta.superuser/su“

//再写到/system/bin/su。

byte[] bytes = new byte[suStream.available()];

DataInputStream dis = new DataInputStream(suStream);

dis.readFully(bytes);

FileOutputStream suOutStream = new FileOutputStream(“/data/data/com.koushikdutta.superuser/su“);

suOutStream.write(bytes);

suOutStream.close();

Process process = Runtime.getRuntime().*(“su“);

登录回复
JK-0076284
Lv6胸怀六国志等级图标等级图标等级图标
勋章勋章勋章勋章勋章勋章
帖子
25
回复
1,796
积分
26万
注册
2011-10-05
1 楼

这帖不错,该顶

JK-0126641
Lv3畅意三江水等级图标
帖子
2
回复
367
积分
5,775
注册
2012-11-06
2 楼

安卓我最行!

JK-0087830
Lv5甘首五朝臣等级图标等级图标等级图标
勋章
帖子
47
回复
798
积分
5.9万
注册
2011-12-17
3 楼

安卓问题、内信53331

登录后可以回复这个帖子。旧账号可使用原密码登录。

登录 注册新号
← 返回版块