关闭

[实践] Android5.1.1源码 - 在Framework中添加自定义系统服务

标签: android框架源码阿里聚安全
983人阅读 评论(0) 收藏 举报
分类:

前言

本文的方法要修改Android源码。但只要将系统服务写出来,也可以注入system_server进程将系统服务加载到system_server中。


步骤

1. 添加一个aidl文件,我将aidl文件添加到这个路径下:


frameworks/base/core/java/android/content/bw/IBWService.aidl,IBWService.aidl是我的aidl文件。下面是一个例子:


2. 在frameworks/base/Android.mk文件的LOCAL_SRC_FILES中系统添加了很多aidl文件,我们在系统添加的文件列表中添加一行:core/java/android/content/bw/IBWService.aidl


3. 写一个服务文件继承aidl中的Stub类,这个类我添加到了这个路径下:


frameworks/base/services/core/java/com/android/server/bw/BWService.java。这里有一个技巧,可以在自己的Android项目中先写一个aidl和一个继承它Stub的类,当代码编写无误时将这两个文件拷贝到Android源码目录中。下面是服务文件的例子:


4. 在SystemServer类中添加我们自定义的系统服务,系统如何添加系统服务可以参考Android5.1.1源码 - 分析Android系统服务何时被添加到ServiceManager这篇文章。下面是添加自定义系统服务的一个例子:


5. 由于Android5.1.1中有SeAndroid系统,这个系统中维护了一个系统服务的白名单,如果你要添加的系统服务不在这个白名单中,那么添加系统服务将会失败,这个白名单的路径是:external/sepolicy/service_contexts。


下面是我在这个白名单中添加的一行:

bwservice u:object_r:system_server_service:s0

bwservice就是ServiceManager.addService时输入的服务名。

至此添加系统服务成功,重新编译Android源码即可。



作者:寻禹@阿里聚安全,更多安全技术文章,请访问阿里聚安全博客

0
0
查看评论

Android自定义增加系统服务和AIDL

在Android中,应用访问service提供的接口都是通过AIDL(Android Interface Definition Language),可以理解为一种规范,甚至可以粗陋的理解为C语言里面的.h文件,如果你曾经是一名C语言开发者,而且只是使用的话。下面的例子是想增加获取cpu 频率的ser...
  • wds1181977
  • wds1181977
  • 2016-07-07 15:05
  • 2839

Android5.1.1源码 - 在Framework中添加自定义系统服务

https://jaq.alibaba.com/community/art/show?spm=a313e.7916646.24000001.64.1azB9G&articleid=342 前言 本文的方法要修改Android源码。但只要将系统服务写出来,也...
  • earbao
  • earbao
  • 2017-04-03 00:18
  • 1118

android5.1.1中添加led驱动到apk层的一体化接口

对引入selinux机制的android5.1.1添加驱动层的接口到apk层
  • u014767700
  • u014767700
  • 2016-11-01 15:39
  • 966

Android 修改系统源码实现应用安装白名单黑名单拦截功能

本文原创,旨在记录。有不对或者可改进之处,欢迎大家指出。谢谢 方法一:系统自动扫描apk安装方式 frameworks\base\services\java\com\android\server\pm下 修改PackageManagerService下的createDataDirsLI()方法拦截...
  • lianghao_721
  • lianghao_721
  • 2017-11-21 16:39
  • 219

Android系统篇之----编写系统服务并且将其编译到系统源码中

在之前已经介绍了一篇关于如何编写简单的驱动以及访问该驱动的小程序,最后将程序编译到Android内核源码中通过程序访问驱动验证是可以通过的,那么本文就继续这个知识点,把这个驱动程序通过JNI连接创建一个系统服务,提供给上层应用访问改服务功能,可以看到前一篇介绍驱动程序的功能是属于内核层的,而本文介绍...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2016-10-18 16:01
  • 6770

亲测可用Android原生代码添加系统服务

在Android系统中,为我们提供了很多的系统服务,比如AMS,PMS等,今天参考系统里其他服务的实现,在Android N原生代码中添加自己定制的服务,想想都满激动的 准备工作在正式开始之前,需要知道下面两点以及满足下面条件:前提条件 Android原生代码,可以通过make全编通过,编译完成...
  • mockingbirds
  • mockingbirds
  • 2017-01-12 21:55
  • 3407

android 5.1 如何添加一个系统service

Intro:This article explains how to add a new service and associated application APIs to Android Lollipop 5.Starting from a stub HAL object, we’ll tie ...
  • lewif
  • lewif
  • 2015-10-15 09:24
  • 1567

1:android5.1跨应用开启服务2:广播必须在activity或者service启动之后才能发挥作用

  • 2015-09-12 14:18
  • 4.01MB
  • 下载

Android5.1 Framework分析----如何在SystemServer中添加系统服务

本文以mtk android5.1为研究对象。 Android的系统服务都是托管给ServiceManager管理的,我们可以自定义一个自己的服务,并将其添加到ServiceManager中,本文以添加一个Tts语音服务为例,供应用层调用。 1、首先,在frameworks/base/c...
  • canghai1129
  • canghai1129
  • 2016-07-12 17:39
  • 4456

Android5.1 FrameWork添加自己的SystemService提供API给APP

FrameWork从纵向来看主要就是添加Service并且利用JNI调用HAL层C/C++的代码来实现提供API给APP操作硬件的目的    本文就是描述在Android5.1如何实现添加自己的System Service来实现跟HAL进行Socket通信
  • szqsdq
  • szqsdq
  • 2016-10-31 11:23
  • 1629
    个人资料
    • 访问:189586次
    • 积分:3242
    • 等级:
    • 排名:第12471名
    • 原创:136篇
    • 转载:6篇
    • 译文:3篇
    • 评论:23条
    最新评论