zoukankan      html  css  js  c++  java
  • [实践] Android5.1.1源码

    前言

    本文的方法要修改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源码即可。

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

  • 相关阅读:
    P3531 [POI2012]LIT-Letters
    CF1338B Edge Weight Assignment
    CF118C Fancy Number
    New Year Contest
    P2587 [ZJOI2008]泡泡堂
    2021拓维游记
    CF1338C Perfect Triples
    gcc、g++、gdb安装
    vim教程之背键盘使我快乐
    Python起个头
  • 原文地址:https://www.cnblogs.com/alisecurity/p/5542911.html
Copyright © 2011-2022 走看看