原创内容,转载请注明原文网址: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

