资讯专栏INFORMATION COLUMN

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

LiangJ / 3127人阅读

摘要:下面是服务文件的例子在类中添加我们自定义的系统服务,系统如何添加系统服务可以参考源码分析系统服务何时被添加到这篇文章。下面是我在这个白名单中添加的一行就是时输入的服务名。至此添加系统服务成功,重新编译源码即可。

前言

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12844.html

相关文章

  • [实践] Android5.1.1源码 - 让某个APP以解释执行模式运行

    摘要:调用函数的时机我的办法是在函数中调用函数,在这一节中会先说明如何执行到函数,然后会说明在函数中调用函数的好处。 前言 本文的实践修改了Android5.1.1的源码。本文只简单的讲了一下原理。在实践一节讲了具体做法。 本文的内容涉及Art模式下dex加载的知识,想要详细了解这部分知识可以去看老罗的文章: Android运行时ART简要介绍和学习计划 Android运行时ART加载OAT...

    venmos 评论0 收藏0
  • Android5.1.1 - APK签名校验分析和修改源码绕过签名校验

    摘要:作者寻禹阿里聚安全签名校验分析找到类,该类在文件中。绕过签名校验源码修改点一找到方法,下面是部分源码将上面代码块中的语句替换为下面是修改后的代码代码修改完后,当中文件签名校验失败时不会抛出异常,还会继续安装。 作者:寻禹@阿里聚安全 APK签名校验分析 找到PackageParser类,该类在文件frameworks/base/core/java/android/content/pm/...

    kgbook 评论0 收藏0
  • Android5.1.1源码 - zygote fork出的子进程如何权限降级

    摘要:子进程权限降级函数函数在文件中,在这个函数中调用了函数,并且出的子进程将自身权限降级,下面是它的源码在这个函数中子进程分别调用了,设置了组和用户将自身权限降级。 前言 如果不知道zygote是什么,或者好奇zygote如何启动,可以去看老罗的文章: Android系统进程Zygote启动过程的源代码分析 所有Android应用进程都是zygote fork出来的,新fork出来的应用进...

    wua_wua2012 评论0 收藏0
  • Laravel 动态添加 Artisan 命令的最佳实践

    摘要:初步尝试既然最常见的注册命令的方式是修改类中的,那么一般正常人都会从这边开始下手。又要自己取出实例,又要自己调用方法,调用方法之前还有自己先把实例化这么繁琐,肯定不是运行时添加命令的最佳实践,所以我决定继续寻找更优解。 本文首发于我的博客,原文链接:https://blessing.studio/best-... 虽然 Laravel 官方文档提供的添加 Artisan Command...

    ninefive 评论0 收藏0
  • Android程序员完全没时间提升己怎么办?

    摘要:昨天有个小学弟给我发来微信,说他现在有点后悔选择开发了,月月光不说,还加班特别严重,平时也没有属于自己的时间去学习,问我刚毕业的时候是不是这样。每天回到出租屋都是倒头就睡,非常累,也没有其他时间提升自己的技术。 昨天有个小学弟给我发来微信,说他现在有点后悔选择Android开发了,月月光不说...

    kohoh_ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<