4

[原创]android ro.debuggable属性调试修改(mprop逆向)

IamHuskar 2018-8-6 22:05 3629

android ro属性调试修改(mprop逆向)

     大家都知道如果需要调试android 的程序,以下两个条件满足一个就行。第一是apk的配置文件内的AndroidManifest.xml的 android:debuggable=”true”,第二就是/default.prop中ro.debuggable=1。两种方式第一种通常是解包添加属性再打包,随着加壳软件以及apk校验等,容易出现安装包异常。第二种由于一般的手机发布时ro.debuggable一般是0 也就是不允许调试,通过修改rom的办法在手机上比较麻烦,需要刷机等等,模拟器上一般是vmdk的虚拟机,也没法修改rom。这样我们就无法调试应用了,比如使用DDMS时,只能看到手机,看不到进程信息。



        后来发现有人提供了一个软件叫做mprop,但是只有二进制的文件arm架构的,没有源码,一个问题是在有些手机上测试是无效的,第二个问题是在X86模拟器上调试就不可能了。所以尝试一下逆向mprop并且解决这个调试问题。

         打开mprop发现主要是附加了1号进程也就是init进程。通过对/dev/__properties__属性段执行修改来修改对应的数值。





针对于android4.4版本的x86模拟器。

我们进入源码中看看为何在init进程这里修改就可以了。在

system/core/init/property_service.c

system/core/init/init.c

Main执行时

property_init->init_property_area-> __system_property_area_init函数(位于bionic/libc/bionic/system_properties.c)->map_prop_area_rw  fd = open(property_filename, O_RDWR | O_CREAT | O_NOFOLLOW | O_CLOEXEC | O_EXCL, 0444)

打开了/dev/__properties__

随后调用property_load_boot_defaults加载了default.prop调用load_properties 通过property_set(key, value);将对应的键值设置好。

在 property_set 函数中 ro.开头的函数只能设置一次。否则就返回失败。所以我们后续调用setprop就是无效的。否则将调用__system_property_update执行更新。因此我们可以模拟__system_property_find 得到prop_info结构

__system_property_update prop_info结构中的数据

(bionic/libc/bionic/system_properties.c)实现。

关键就是 这个结构。name中是ro.debuggable value中是0

struct prop_info 
{
unsigned volatile serial; 
char value[PROP_VALUE_MAX]; 
char name[0]; 
};

因此我们只要在 /dev/__properties__ 段中找到 对应的name然后向上移动PROP_VALUE_MAX(android4.4中是96)个字节。修改value为对应的值即可。我们dump可以看出来.


剩下就是编码 主要是通过ptrace进入init然后修改memory具体可以下代码



后续的操作如下

编译modprop





Push到/data/local/tmp


修改可执行


查看当前值


执行修改


修改完毕\


获取修改后的值


运行微信。可以调试了


进程需要杀掉重启才行。





快讯:[看雪招聘]十八年来,看雪平台输出了大量安全人才,影响三代安全人才!

上传的附件:
最新回复 (8)
iwang王大军 2018-8-7 08:27
2
https://security.tencent.com/index.php/opensource/detail/17  这个更方便
SevenSir 2018-8-7 09:11
3
感谢大佬分享详细步骤。
zysyyz 2018-8-7 09:30
4
感谢大佬分享细节!
IamHuskar 2018-8-7 09:31
5
iwang王大军 https://security.tencent.com/index.php/opensource/detail/17 这个更方便[em_1]
有部分加壳的没法用。
人在塔在 2018-8-8 09:02
6
大佬现在搞安卓去了啊
ucantseeme 2018-8-10 15:29
7
mprop有源码啊,就不能先搜下吗

https://github.com/search?utf8=%E2%9C%93&q=mprop&type=
ucantseeme 2018-8-10 15:29
8
mprop有源码啊,就不能先搜下吗

https://github.com/search?utf8=%E2%9C%93&q=mprop&type=
IamHuskar 2018-8-10 17:26
9
ucantseeme mprop有源码啊,就不能先搜下吗 https://github.com/search?utf8=%E2%9C%93&q=mprop&type=
那要麻烦你把源码找出来,那里面都是BIN文件。
返回