Android系统USR版本获取root权限

来源:互联网 发布:mac vi编辑器保存退出 编辑:程序博客网 时间:2024/05/16 14:14

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 0
原创粉丝点击