开放Android root权限
2015-06-03 09:53
441 查看
开放系统root权限,即使任何用户都可以执行su程序,以使得临时用户也具有了root的权限,然后去进行一些系统级的设置,如设置IP地址,DNS等。
1、修改su程序对临时用户的限制,默认su只允许root和shell用户执行
vi system/extras/su/su.c
注释掉语句块
/*
myuid = getuid();
if (myuid != AID_ROOT && myuid != AID_SHELL) {
fprintf(stderr,"su: uid %d not allowed to su\n", myuid);
return 1;
}
*/
就安全性而言这种方式是不太可取的,因此才有了类似于superuser.apk的出现,它们的作用就是在外面再提供一层保护。
2、修改su程序的suid,可以通过ls -l来查看,在system/core/rootdir/init.rc中添加语句
chmod 4755 /system/xbin/su
3、如果涉及到/data目录而非/data/data/<你的包名>/的修改,则修改system/core/rootdir/init.rc
将 mount yaffs2 mtd@userdata /data nosuid nodev 改为 mount yaffs2 mtd@userdata /data nodev
4、通过java app进行验证
package com.test;
import java.io.DataOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class TestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
Process process = Runtime.getRuntime().exec("su");//(这里执行是系统已经开放了root权限,而不是说通过执行这句来获得root权限)
DataOutputStream os = new DataOutputStream(process.getOutputStream());
os.writeBytes("ifconfig
eth0 192.168.18.122\n");
os.writeBytes("exit\n");
os.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Reference
1、http://android-dls.com/wiki/index.php?title=Magic_Root_Access
2、https://github.com/git-core/su-binary/wiki
3、http://my.unix-center.net/~Simon_fu/?p=1069
1、修改su程序对临时用户的限制,默认su只允许root和shell用户执行
vi system/extras/su/su.c
注释掉语句块
/*
myuid = getuid();
if (myuid != AID_ROOT && myuid != AID_SHELL) {
fprintf(stderr,"su: uid %d not allowed to su\n", myuid);
return 1;
}
*/
就安全性而言这种方式是不太可取的,因此才有了类似于superuser.apk的出现,它们的作用就是在外面再提供一层保护。
2、修改su程序的suid,可以通过ls -l来查看,在system/core/rootdir/init.rc中添加语句
chmod 4755 /system/xbin/su
3、如果涉及到/data目录而非/data/data/<你的包名>/的修改,则修改system/core/rootdir/init.rc
将 mount yaffs2 mtd@userdata /data nosuid nodev 改为 mount yaffs2 mtd@userdata /data nodev
4、通过java app进行验证
package com.test;
import java.io.DataOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class TestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
Process process = Runtime.getRuntime().exec("su");//(这里执行是系统已经开放了root权限,而不是说通过执行这句来获得root权限)
DataOutputStream os = new DataOutputStream(process.getOutputStream());
os.writeBytes("ifconfig
eth0 192.168.18.122\n");
os.writeBytes("exit\n");
os.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Reference
1、http://android-dls.com/wiki/index.php?title=Magic_Root_Access
2、https://github.com/git-core/su-binary/wiki
3、http://my.unix-center.net/~Simon_fu/?p=1069
相关文章推荐
- android常用的命令
- Android NFC基础开发教程
- android studio加载动态库
- Android listview addHeaderView和addFooterView详解
- Android圆角边框
- android studio导入外部项目或类库的方法
- "Selenium for Android"的Robotium 一 概述
- 【转载】Android中attr自定义标签详解
- Android学习 - ant批量打包
- android开发用户和密码登陆
- Android px、dp和sp单位区别
- Android 向ListView里动态添加内容
- android (12) Fragment使用上
- android 多进程编程 必看!
- 博文共赏:Android推送服务——百度云推送
- Android新控件RecyclerView浅析及上拉和下拉刷新
- 【Android笔记】Activity的四种启动模式
- GitHub上史上最全的Android开源项目分类汇总
- Android 实现记住用户名和密码的功能
- Android中Task任务栈的分配