android usr版本,Android系统USR版本获取root权限

博客围绕Android系统中ADB Root权限展开,涉及adb.c文件中权限判断与初始化代码的修改,system/core/init.rc文件部分内容的去除,以及MMI APP层HuaAdbRootActivity类中对ADB Root权限开关的处理,包括界面交互和属性设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

adb.c中

int adb_main(int is_daemon, int server_port)

{

... ...

property_get("ro.adb.secure", value, "0");

auth_enabled = !strcmp(value, "1");

/* Modify byXXX */

if (auth_enabled) {

adb_auth_init();

property_get("persist.service.adb.root", value, "0");

auth_enabled = !strcmp(value, "0");

}

/* End modify */

... ...

/* don't listen on a port (default 5037) if running in secure mode */

/* don't run as root if we are running in secure mode */

if (should_drop_privileges()) {

drop_capabilities_bounding_set_if_needed();

... ...

}

static int should_drop_privileges() {

/* Add by XXX*/

char value1[PROPERTY_VALUE_MAX];

property_get("persist.service.adb.root", value1, "");

if (strcmp(value1, "1") == 0) {

return 0;

}

/* End add */

... ...

}

static void drop_capabilities_bounding_set_if_needed() {

/* Modify by XXX*/

char value1[PROPERTY_VALUE_MAX];

property_get("persist.service.adb.root", value1, "");

if (strcmp(value1, "1") == 0) {

return;

}

/* End modify */

... ...

}

system/core/init.rc中红色部分去掉。

# adbd is controlled via property triggers in init..usb.rc

service adbd /sbin/adbd --root_seclabel=u:r:su:s0

class core

socket adbd stream 660 system system

disabled

seclabel u:r:adbd:s0

在MMI APP层

public class HuaAdbRootActivity extends Activity implements OnCheckedChangeListener {

private final String TAG = "XXX";

private CheckBox mCheckBoxAdbRoot;

private Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 1);

mCheckBoxAdbRoot.setEnabled(true);

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.hua_adb_root);

mCheckBoxAdbRoot = (CheckBox) findViewById(R.id.checkBoxAdbRoot);

mCheckBoxAdbRoot.setChecked(SystemProperties.getInt("persist.service.adb.root", 0) > 0);

if (ActivityManager.isUserAMonkey()) {

Log.d(TAG, getClass() + " in monkey test mode");

} else {

mCheckBoxAdbRoot.setOnCheckedChangeListener(this);

}

}

@Override     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {         mCheckBoxAdbRoot.setEnabled(false);         SystemProperties.set("persist.service.adb.root", isChecked ? "1" : "0");         Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 0);         mHandler.sendEmptyMessageDelayed(0, 1000);     } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值