首页
社区
课程
招聘
[原创]修改ro属性的小工具新版本-170119
2017-1-19 16:23 35673

[原创]修改ro属性的小工具新版本-170119

2017-1-19 16:23
35673
这次修改主要考虑兼容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"

[培训]《安卓高级研修班(网课)》月薪三万计划

上传的附件:
收藏
点赞6
打赏
分享
最新回复 (40)
雪    币: 241
活跃值: (226)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
ckis 2017-1-19 16:35
2
0
支持一下

修改后 全局都生效吗?还是只在特定的范围内生效?
雪    币: 53
活跃值: (240)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
netsniffer 2017-1-19 16:59
3
0
全局生效
雪    币: 4195
活跃值: (1821)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
cqzhou 2017-1-20 10:28
4
0
这个不错哦
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hnyzlst 2017-3-5 00:12
5
0
能不能给源码,我把它弄进busybox
雪    币: 2
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
少年好学 2017-4-3 13:36
6
0
感谢  分享!!!
雪    币: 2
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
少年好学 2017-4-3 13:57
7
1
运行好像失败了      !!  malloc  :  Out  of  memory
雪    币: 169
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hongde 2017-5-11 17:08
8
0
感谢,这个厉害了
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
melonpi 2017-5-19 09:49
9
0
少年好学 运行好像失败了 !! malloc : Out of memory
同样,用不了。
雪    币: 53
活跃值: (240)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
netsniffer 2017-5-19 10:29
10
0
melonpi 同样,用不了。
什么手机?    adb  shell  getprop  ro.build.fingerprint    看一下版本,
再用  /data/local/tmp/mprop  -v  运行一下,看提示什么错误?
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
melonpi 2017-5-19 11:53
11
0
netsniffer 什么手机? adb shell getprop ro.build.fingerprint 看一下版本, 再用 /data/local/tmp/mprop -v 运行一下,看提示什么错误?
```
//fingerprint
Xiaomi/armani/armani:4.3/JLS36C/JHCCNBD22.0:user/release-keys

//执行  adb  shell  /data/local/tmp/mprop  -v
start  hacking  ...
target  mapped  area:  0xffffff5c-0xb6f7e429
!!  malloc  :  Out  of  memory
```
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
melonpi 2017-5-19 18:34
12
0
netsniffer 什么手机? adb shell getprop ro.build.fingerprint 看一下版本, 再用 /data/local/tmp/mprop -v 运行一下,看提示什么错误?
于是还有下文吗?
雪    币: 53
活跃值: (240)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
netsniffer 2017-5-22 09:32
13
0
把这个命令的输出贴一下
adb  shell  /proc/1/maps
雪    币: 224
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Zn哥 2017-5-22 16:53
14
0




netsniffer

把这个命令的输出贴一下
adb shell /proc/1/maps

非常感谢楼主的方法

直接用楼主的命令也遇到out  of  memory的问题 改成以下以下 没有问题

adb shell su
chmod 755 /data/local/tmp/mprop
data/local/tmp/mprop
setprop ro.debuggable 1
/data/local/tmp/mprop -r
运行效果如下:

上传的附件:
雪    币: 80
活跃值: (922)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
暴强 2017-6-26 07:42
15
0
源码能发出来么?
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
testvul 2017-9-29 17:42
16
0
为什么运行报错?
shell@android:/data  #  ./mprop
[1]  +  Stopped  (signal)          ./mprop
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
聖blue 2017-9-29 19:49
17
1
支持下
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_Winter 2017-11-3 11:16
18
0
我感觉没改成功,是我操作有问题么
雪    币: 6503
活跃值: (8345)
能力值: ( LV17,RANK:787 )
在线值:
发帖
回帖
粉丝
无名侠 12 2017-11-8 21:51
19
1
支持一下!
雪    币: 17
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小熊ppt 2017-11-10 16:44
20
0
wx_Winter 我感觉没改成功,是我操作有问题么
改完之后,用getprop  ro.debuggable命令可以查看debuggable的状态,显示为1,表示更改成功,不是在default.prop文件中看到的。另,发现重新开机后debuggable会失效,还要重新运行一下这个小工具。
雪    币: 1391
活跃值: (185)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
邪梦 2017-11-17 17:34
21
0
支持一下,
雪    币: 930
活跃值: (1288)
能力值: ( LV15,RANK:750 )
在线值:
发帖
回帖
粉丝
iweizime 7 2017-11-24 20:24
22
0
支持,方便开源一下代码吗
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
李治彬 2018-1-23 16:37
23
0
有没有办法不重启就生效呢?
雪    币: 418
活跃值: (1647)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
dryzh 2018-3-5 10:14
24
0
楼主,我想学习怎么ptrace  init进程的patch技术,能讲讲么?
雪    币: 3905
活跃值: (5667)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
roysue 3 2018-4-12 18:40
25
0
最好用的难道不是XDebuggable么?
游客
登录 | 注册 方可回帖
返回