Android系统USR版本获取root权限

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.<platform>.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);
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值