• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

Android

修改ro属性的小工具新版本-170119

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/Android/2019/0614/540.html

 
netsniffer  
这次修改主要考虑兼容Android 4.x-7.x 。
7.x中属性数据结构及selinux策略变化太大,老的方式不好适配。
索性改了个思路,直接ptrace init进程,对标红的ro.属性的判断逻辑进行修改,跳过,这样任意属性就都可以设置了。
 
system\core\init\property_service.c*
 
 
static int property_set** (const char* name, const char* value) {
    ......
    prop_info* pi = (prop_info*) __system_property_find(name);
 
    if(pi != 0) {
        /* ro.* properties may NEVER be modified once set */
        [COLOR="Red"]if(!strncmp(name, "ro.", 3)) return -1;[/COLOR]
 
        __system_property_update(pi, value, valuelen);
    } else {
        int rc = __system_property_add(name, namelen, value, valuelen);
        if (rc < 0) {
            return rc;
        }
    }
   ...
 
 
使用该工具修改ro.属性的前提:
1. adb shell 拥有root权限,或者 adb shell su 以后可以拥有root权限;
2. 1中获取的shell 其 selinux domain为permissive domain,如 u:r:su:s0 或者 其他可以ptrace init进程且有设置ro.xx目标属性selinux权限的domain。
 
用法:
adb push .\libs\armeabi-v7a\mprop /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/mprop"
 
# 修改init进程中的ro属性判断逻辑
adb shell "/data/local/tmp/mprop"
 
# 之后就可以修改任意ro属性了,如
adb shell "setprop ro.debuggable 1"
 
# 恢复init默认逻辑,之后就无法再修改ro属性了
adb shell "/data/local/tmp/mprop -r"
 

上篇:上一篇:android 通知(关闭声音和震动)
下篇:下一篇:Android 8.0 启动service error IllegalStateException: Not al