How to change ro.xxx property in Android

在看雪論壇看到一篇有趣的文章「root环境下直接修改ro属性」

https://bbs.pediy.com/thread-222293.htm

把他source code 抓下來放到AOSP  external/ 底下

make system_properties 過了之後試下

還真的可以修改ro property

HANDYT2:/data/local/tmp # getprop ro.product.locale
en-US
HANDYT2:/data/local/tmp # ./system_properties ro.product.locale zh-TW
set ro.product.locale == zh-TW success
[ro.product.locale]:[zh-TW]
HANDYT2:/data/local/tmp # getprop ro.product.locale
zh-TW
HANDYT2:/data/local/tmp # id
uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats),3009(readproc) context=u:r:su:s0

順手編一個放這邊方便使用

看了下source code, 整體邏輯大概是:Android system prop 是以檔案的形式存在 /dev 底下,所以只要知道格式並且獲取可以讀寫的權限就可以寫入

重點函數可以看下面兩個

get_or_set_property_value(const char *prop_name, const char *prop_value)
prop_area *map_prop_area(const char *file_name, bool need_write)

一直以來我都以為 system prop 是放在init 自己memory 裡面,沒想到竟然是以檔案形式存在著!學習了!

發表留言