| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android 系统服务的实际应用与安全风险 -> 正文阅读 |
|
[移动开发]Android 系统服务的实际应用与安全风险 |
Android 系统服务(service),不同于应用层的 Service(Android 四大组件之一),系统 service 处于 Android 系统的 Framwrok 层。提起系统 service,就不得不说 Service Manager adb 调用 service查看 Android 包含的所有系统服务
一个或者多个 service 在 AOSP 源码中对应一个 .aidl 后缀名结尾的接口文件 例如打印服务,对应的源码应该是
aidl 接口包含 service 提供的多个函数 1.调用函数 若要调用
2.传递参数 i32 表示 int 类型的整数(boolean 也可以使用 0/1),s16 表示字符串
app 调用 serviceServiceManager 作为 Android 的核心服务之一,所有的系统 service 都必须在此注册,ServiceManager 理所当然的提供了接口,让我们可以轻松获取系统所有的 service 获取系统所有服务
获取 IBinder 接口对象
通过 Binder 获取接口名 方法一:getInterfaceDescriptor(),如上图所示 方法二:IBinder 的主要 API:transact()
通过 Binder 调用系统服务函数,并传递参数
讨论与风险AOSP 本身提供的系统服务经过多年测试,基本上已经没有什么大问题。但是各个厂商订制的 ROM 往往会包含自己的服务,这些服务很有可能会存在问题,比如传入的参数没有进行校验,导致空指针、数组越界等问题。 相应的,我们有一下两种方式进行 fuzzing
上述两种方式,从编程角度来说,并不困难,但是最大的问题在于如何获取 service 提供的入参个数和类型。一方面,可以通过 Android 编译环境,编写用户空间的二进制,获取所有 service 的详细信息;另外一方面,是否可以编写 app,通过反射的方式获取 service 提供的参数类型。这些都是后续有关安全工作需要考虑的问题。 本文只是简单的呈现 Android 系统服务的作用,后续如果有较好的 fuzzing 工具,如果开发完成,笔者会进行讲解。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 11:07:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |