Android5.1.1源码 - zygote fork出的子进程如何权限降级-问答-阿里云开发者社区-阿里云
开发者社区
>
问答
>
正文
Android5.1.1源码 - zygote fork出的子进程如何权限降级
移动安全
2016-05-10 15:08:25
4496
前言
如果不知道zygote是什么,或者好奇zygote如何启动,可以去看老罗的文章:
Android系统进程Zygote启动过程的源代码分析
所有Android应用进程都是zygote fork出来的,新fork出来的应用进程还保持着root权限,这显然是不被允许的,所以这个fork出来的子进程的权限需要被降级,本文说的就是Android源码在什么地方执行了权限降级的操作。
执行路径
下面的runSelectLoop方法是类ZygoteInit的成员方法,它在文件”frameworks/base/core/java/com/android/internal/os/ZygoteInit.java”中,下面是它的源码:
zygote会在这个方法中等待客户端通知启动一个新的应用程序,详情可以看前言部分列出的文章。现在我们关心的是done = peers.get(index).runOnce();语句,这个语句调用了runOnce方法启动了一个新的应用进程,runOnce方法是ZygoteConnection类的成员方法,下文从runOnce方法开始分析。
ZygoteConnection.runOnce方法在文件”frameworks/base/core/java/com/android/internal/os/ZygoteConnection.java”中,下面是它的源码:
parsedArgs中保存了要启动的应用的信息,它的类型是Arguments,Arguments是ZygoteConnection的内部类。
runOnce方法中调用了Zygote.forkAndSpecialize方法,这个方法在文件”frameworks/base/core/java/com/android/internal/os/Zygote.java”中,下面是它的源码:
在这个方法中调用了nativeForkAndSpecialize方法。
nativeForkAndSpecialize是一个native方法,在native代码中它的函数名是com_android_internal_os_Zygote_nativeForkAndSpecialize,这个函数在文件”frameworks/base/core/jni/com_android_internal_os_Zygote.cpp”中,下面是它的源码:
在这个函数中调用了ForkAndSpecializeCommon函数。
子进程权限降级函数
ForkAndSpecializeCommon函数在文件”frameworks/base/core/jni/com_android_internal_os_Zygote.cpp”中,在这个函数中调用了fork函数,并且fork出的子进程将自身权限降级,下面是它的源码:
在这个函数中子进程分别调用了SetGids、SetRLimits、setresgid、setresuid,设置了组ID和用户ID将自身权限降级。
作者:寻禹@阿里移动安全,更多安全技术博客,请点击
阿里聚安全博客
安全
Java
Android开发
添加回答
分享到
取消
提交回答
全部回答(0)
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅
集结各类场景实战经验,助你开发运维畅行无忧
推荐文章
阿里云对象存储OSS原生DDoS防护能力-高防OSS功能解析与实践
ACK正式支持对基于Alibaba Cloud Linux操作系统的集群进行等保加固
javascript中的闭包closure详解
ACK正式支持对基于Alibaba Cloud Linux操作系统的集群进行等保加固
达摩院开放AI能力宝塔,万般法器助力新时代智能应用
给2021设个新状态,高校训练营带你云上学习
阿里云卫炜:教育行业3.0时代的价值与机遇
产品百科 | Linux(Java)端如何快速集成 RTC SDK
在阿里云活动中购买云服务器之后,后续必做功课教程
保险公司为什么要标配数据中台?
展开
相似问题
惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)
OceanBase 使用动画(持续更新)
OSS存储服务-客户端工具
爬虫数据管理【问答合集】
阿里云开放端口权限
[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?
Win Server 2003-2016 加密勒索事件必打补丁合集
安全组详解,新手必看教程
Linux Bash严重漏洞修复紧急通知(已全部给出最终修复方案)
游戏云精彩帖汇总
展开
推荐课程
JFR诊断增强
学习人数:
0
Spring Cloud微服务架构设计与开发实战
学习人数:
0
Spring Boot 2.5.x开发实战
学习人数:
0