如何修改Android的ro属性
一、Android ro属性概述
另外,如果我们系统获取到指定属性的属性值,我们也可以通过在adb shell中输入getprop+属性名来获取,设置属性也是一样的,可以通过setprop+属性名+新值来给指定的属性名称设置新的属性。
在android中,属性一般是存放在属性文件中,系统启动的时候会对属性文件进行加载。存储属性的文件如下所示:
/default.prop
/system/build.prop
/system/default.prop(该文件不一定存在)
/data/local.prop
/data/property目录里的若干脚本
以ro开头的属性都是只读属性,以persist开头的属性,一般都是从/data/property目录中加载的。
由于对于ro属性是不可以改的。像/default.prop 是不能直接编辑的,即使修改了重启也会还原。
二、如何修改ro属性
那么如何修改ro属性呢?网上已经有人提供了一种方法,主要是通过进程注入的方式来修改的。
通过下面链接下载对应的mprop文件
https://pan.baidu.com/s/1i5NsZzR 密码:inrg
将mprop文件push到手机,并且执行
#adb push mprop/armeabi-v7a/mprop /sdcard/mprop
#adb shell
#su
#cp /sdcard/mprop /data/local/tmp
#cd /data/local/tmp
#chmod 755 mprop
#./mprop
我们可以看到使用方法
Usage: propmod [prop_name] [prop_value]
e.g.: propmod ro.secure 0
三、作用
那么有人可能会说,修改ro属性到底有什么作用呢?
假如我们想动态调试一个应用,但是往往应用都是不可调试的,因为在AndroidManifest.xml,应用往往会将android:debuggable设置为false,通常的做法是对应用进行反编译,将其android:debuggable=”false”修改为true,没有android:debuggable属性则添加android:debuggable=”true”,然后对应用再次进行打包,重新签名安装在手机上。
这种方法的有两种弊端:
(1)太麻烦,如果我们希望对大量的应用进行调试,或者使用调试工具来获取相应的信息,那么就需要对所有的应用都进行android:debuggable的修改操作。
(2)为了防止应用被篡改,现在市面上很多应用都有签名校验,如果我们对该应用重新打包签名,这样在启动应用的时候,签名校验是无法通过的,因此程序也不能正常使用。
其实如果我们希望对手机上的应用进行调试,我们只需要修改ro.debuggable属性,将它的值修改为1就可以对手机上所有的应用进行调试了,这样是不是很方便。
有了上面的方法,我只需要执行下面命令。
#./mprop ro.debuggable 1
成功之后,我们可以在Android Studio中看到,Android中所有运行的应用进程都是可以调试的。
下面我们打开Android Device Monitor,我们也可以看到当前运行的进程都是可以调试的。这样我们就可以对手机上的任何应用进行跟踪调试了。
四、参考文章
http://blog.leanote.com/post/iunknow/动态调试so
https://bbs.pediy.com/thread-215311.htm
https://bbs.pediy.com/thread-222293.htm
http://www.iloveandroid.net/2015/09/26/Android_property_1/
欢迎关注我的公众号:DroidMind
精品内容,独家发布