星空网 > 软件开发 > 操作系统

Android5.1.1源码

前言

所有Android应用进程都是zygote fork出来的,新fork出来的应用进程还保持着root权限,这显然是不被允许的,所以这个fork出来的子进程的权限需要被降级,本文说的就是Android源码在什么地方执行了权限降级的操作。

 

如果不知道zygote是什么,或者好奇zygote如何启动,可以去看老罗的文章:
Android系统进程Zygote启动过程的源代码分析

 

执行路径

下面的runSelectLoop方法是类ZygoteInit的成员方法,它在文件”frameworks/base/core/java/com/android/internal/os/ZygoteInit.java”中,下面是它的源码:

Android5.1.1源码images/loading.gif' data-original="http://gw.alicdn.com/mt/TB188.pJFXXXXXLXFXXXXXXXXXX-693-789.JPG" width="602" height="685" data-ke-src='/images/loading.gif' data-original="http://gw.alicdn.com/mt/TB188.pJFXXXXXLXFXXXXXXXXXX-693-789.JPG" />Android5.1.1源码

 

zygote会在这个方法中等待客户端通知启动一个新的应用程序,详情可以看前言部分列出的文章。现在我们关心的是done = peers.get(index).runOnce();语句,这个语句调用了runOnce方法启动了一个新的应用进程,runOnce方法是ZygoteConnection类的成员方法,下文从runOnce方法开始分析。

ZygoteConnection.runOnce方法在文件”frameworks/base/core/java/com/android/internal/os/ZygoteConnection.java”中,下面是它的源码:

Android5.1.1源码

 

parsedArgs中保存了要启动的应用的信息,它的类型是Arguments,Arguments是ZygoteConnection的内部类。

runOnce方法中调用了Zygote.forkAndSpecialize方法,这个方法在文件”frameworks/base/core/java/com/android/internal/os/Zygote.java”中,下面是它的源码:

Android5.1.1源码

 

在这个方法中调用了nativeForkAndSpecialize方法。

nativeForkAndSpecialize是一个native方法,在native代码中它的函数名是com_android_internal_os_Zygote_nativeForkAndSpecialize,这个函数在文件”frameworks/base/core/jni/com_android_internal_os_Zygote.cpp”中,下面是它的源码:

Android5.1.1源码

 

在这个函数中调用了ForkAndSpecializeCommon函数。

 

子进程权限降级函数

ForkAndSpecializeCommon函数在文件”frameworks/base/core/jni/com_android_internal_os_Zygote.cpp”中,在这个函数中调用了fork函数,并且fork出的子进程将自身权限降级,下面是它的源码:

Android5.1.1源码Android5.1.1源码

 

在这个函数中子进程分别调用了SetGids、SetRLimits、setresgid、setresuid,设置了组ID和用户ID将自身权限降级。

 


 

作者:寻禹@阿里移动安全,更多安全技术博客,请点击阿里聚安全博客

 




原标题:Android5.1.1源码

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

lazada手机端app:https://www.goluckyvip.com/tag/84616.html
lazada 产品数据:https://www.goluckyvip.com/tag/84617.html
lazada基础操作:https://www.goluckyvip.com/tag/84619.html
lazada 快递:https://www.goluckyvip.com/tag/84620.html
lazada快递:https://www.goluckyvip.com/tag/84621.html
lazada分类:https://www.goluckyvip.com/tag/84622.html
特点有哪些?债券的定义?:https://www.vstour.cn/a/404251.html
为啥很多农村都成为了空心村,未来农村该何去何从?:https://www.vstour.cn/a/404252.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流