Android mprop逆向研究:调试与ro属性修改
需积分: 0 52 浏览量
更新于2024-08-04
收藏 234KB DOCX 举报
"深入理解Android系统中的ro属性调试及mprop工具逆向分析"
在Android系统中,调试应用程序通常需要开启调试模式。有两种常见的方法:一是通过修改apk的AndroidManifest.xml文件,将`android:debuggable="true"`设置在应用的配置中;二是修改系统的/default.prop文件,将`ro.debuggable`设置为1。然而,前者在面对加壳或安全验证的apk时可能无法正常工作,后者则需要对设备进行刷机操作,这对于普通用户和开发者来说并不方便。特别是在X86架构的模拟器上,直接修改ROM更是困难重重。
在这种情况下,mprop工具应运而生。mprop是一个用于动态修改Android系统ro属性的工具,它可以直接在运行时改变`ro.debuggable`的值,从而实现调试目的。然而,mprop仅提供了ARM架构的二进制文件,且在某些设备上可能不起作用,同时在X86模拟器上也无法使用。
为了应对这些问题,我们对mprop进行了逆向工程分析。逆向过程中发现,mprop主要通过附加到系统1号进程——init进程,来访问并修改`/dev/__properties__`属性段,从而实现对ro属性的修改。在Android 4.4的X86模拟器环境中,我们可以查看`system/core/init/property_service.c`和`system/core/init/init.c`这两个关键源码文件。
在`init`进程启动时,`property_init`函数会调用一系列过程,包括`init_property_area`和`__system_property_area_init`,这些函数位于`bionic/libc/bionic/system_properties.c`。`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`设置键值对。值得注意的是,在`property_set`函数中,以`ro.`开头的属性只能设置一次,后续尝试修改将失败。
因此,逆向mprop并理解其工作原理后,我们可以尝试找到一种方法,使得在X86模拟器上也能动态修改`ro.debuggable`。这可能涉及到对mprop的重新编译以支持X86架构,或者寻找其他绕过`property_set`限制的手段,例如在更底层的系统服务中注入代码来实现属性的动态修改。
了解Android系统ro属性的调试机制以及mprop工具的工作原理,对于开发者来说具有重要意义。这不仅可以帮助我们更灵活地调试应用,也为我们提供了深入理解Android内核机制的机会。在实际操作中,逆向工程和源码分析是解决问题的有效途径,尤其是在面临既有工具无法满足需求的情况下。
2021-03-11 上传
2018-10-08 上传
2018-08-27 上传
2018-11-02 上传
2018-03-28 上传
2018-05-23 上传
2017-09-29 上传
点击了解资源详情
马李灵珊
- 粉丝: 40
- 资源: 297
最新资源
- 开源通讯录备份系统项目,易于复刻与扩展
- 探索NX二次开发:UF_DRF_ask_id_symbol_geometry函数详解
- Vuex使用教程:详细资料包解析与实践
- 汉印A300蓝牙打印机安卓App开发教程与资源
- kkFileView 4.4.0-beta版:Windows下的解压缩文件预览器
- ChatGPT对战Bard:一场AI的深度测评与比较
- 稳定版MySQL连接Java的驱动包MySQL Connector/J 5.1.38发布
- Zabbix监控系统离线安装包下载指南
- JavaScript Promise代码解析与应用
- 基于JAVA和SQL的离散数学题库管理系统开发与应用
- 竞赛项目申报系统:SpringBoot与Vue.js结合毕业设计
- JAVA+SQL打造离散数学题库管理系统:源代码与文档全览
- C#代码实现装箱与转换的详细解析
- 利用ChatGPT深入了解行业的快速方法论
- C语言链表操作实战解析与代码示例
- 大学生选修选课系统设计与实现:源码及数据库架构