android启动过程和线程_第1页
android启动过程和线程_第2页
android启动过程和线程_第3页
android启动过程和线程_第4页
android启动过程和线程_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

宋雷sl,了解android系统、安全,一、android系统-基本结构,一、android系统-基本结构,Linux内核(c)硬件,进程,线程,内存、文件、多用户,网络,进程通信等基础支持基础库、虚拟机(c/c+)界面、多媒体、数据库等基础支持。虚拟机提供运行android支持应用程序框架(java)activity,window,content,电话,程序管理等基础服务基础应用程序(java)桌面、联系人,电话等基础应用,一、android系统-启动过程,一、android系统-启动过程,init进程启动进程名:init,路径:/init,权限:root第一个用户级进程,解析init.rc文件,执行启动任务。Zygote进程启动进程名:zygote,路径:/system/bin/app_process,权限:rootandroid系统的基础,第一个虚拟机进程,是所有android应用父进程。SystemServer进程启动进程名:system_server,路径:/system/bin/app_process,权限:systemandroid服务的宿主,从zygotefork出来,像phone,sens,audio,package等服务都在这个进程。Home启动进程名:-,路径/system/app/-.apk,权限:app_%u桌面应用,因为手机商定制桌面原因,这个进程名会不同。,一、android系统-启动过程,二、android应用-组成,二、android应用-组成,二、android应用-安装,系统内置软件/system/app/*.apk由手机商内置进去,属性只读,权限root。第三方应用系统区/data/app/*.apk一般应用都安装在此位置,属性读写,权限system。第三方应用sdcard区/mnt/asec/*/pkg.apk2.2=系统支持,映射/sdcard/.androidsecure,属性只读,权限system,二、android应用-安装,应用数据文件/data/data/package_name应用数据和lib默认存储位置,属性读写,权限app_%u,每个应用在安装的时候被分配唯一的uid,实现了应用隔离。,二、android应用-安装,安装与卸载第三方应用PackageManagerService提供安装与卸载支持,pms主要负责检测apk有效性、签名,监控程序目录修改,枚举应用,安装卸载等接口。文件拷贝、dex优化、用户权限分配由进程installd实现,这是因为pms所属的进程权限为system,无法执行一些特殊命令,而installd进程为root权限,他们通过socket进行通信。安装与卸载系统应用需要root权限,拷贝apk到/system/app/目录下触发监控,卸载需要删除对应apk,/data/data/下对应目录。注意system下apk默认是没有system权限的,需要修改mainifest,并且要签名和操作系统一致。,二、android应用-运行,ActivityManagerServiceandroid隐藏了进程概念,所面对的是许多个activity,他们分布在不同的应用里面,如果要执行指定的activity只要知道所属包名,类名就可以了。Zygote前面已经提到zygote是所有android应用的父进程,中文意为受精卵。当需要执行一个不同包里面的activity时,zygote进程处理ams传递过来的请求,fork出一个子进程,子进程根据参数找到对应的包,获得对应的uid,修改进程uid/gid,加载dalvik执行指定的dex文件。,二、android应用-运行(app_process),二、android应用-运行,三、android系统-root!root!,进程权限在android上进程权限主要有root,system,app_%u。root为超级用户进程,可以访问任何用户组的文件,执行任何命令。system比root低一个级别,被servicemanage,system_server进程所有,主要目的是用来做app_%u与root中间通信隔离。文件权限在android上文件所属用户主要有root,system,app_%u。通过严格的文件用户组隔离达到避免带来的安全问题。api权限在android上特殊的api使用需要在mainfest声明,因为特殊的api带来的副作用、潜在风险需要明示用户。现在来看,这并没有很好解决这个问题。,三、android系统-root!root!,ROOT是什么?root是系统中的超级用户,具有系统中的所用的权限,读写任何文件,启动停止任何进程。为什么需要ROOT?所有的android应用都在同一级别,这导致安全软件和木马在一样的级别上,攻防面临限制。比如正面临的问题,在rom里面的木马,无法很好清除。其他问题还有,无法很好自我保护,无法很好的防御,及时将危险降低。如何获得ROOT?漏洞或者刷机。市面root工具都是靠提权漏洞获得,提权漏洞的发掘分为2种,一是android系统自己的,二个是linux内核带来共有的漏洞,漏洞的生命期视它的曝光程度决定。比较新的手机都会修正这些漏洞。而刷机取权限分为2种,一是刷入的ROM已经有ROOT管理,二是因为手机有写保护,通过漏洞取得权限后,写入文件会因为重启丢失,这既是白卡解决的问题(s-off)。手工检测、清除system区域木马在system/app目录下的文件时间是比较临近的,被js还是木马注入进去的,他们的时间都和系统文件明显不一样,提取出来人工判定(这个方法以后肯定会被突破)。清除过程分为提权,修改system区域为可写,删除apk文件,删除data目录下对应数据,还原system只读。,三、android系统-root!root!,android1.x/2.xadbsetuid()rootexploit,三、android系统-root!root!,白卡设备,四、进程通信-Binder,Binder通信binder通信主要使用的场景是应用与系统服务交互的时候,比如TelephonyManager,进程间消息(sendBroadcast)。高效率,面向对象,协议安全。客户端api权限有特定接口验证(Context.checkCallingOrSelfPermission),调用参数部分验证Parcel完成。,四、进程通信-Binder,Socket通信socket通信主要使用的场景是system权限的进程与root进程交互,比如installd,keystore进程。没有binder效率高,协议简单,客户端与服务端代码复杂度低。安全性通过对应文件设备权限、而且可以实现客户端进程权限验证(getsockopt,SO_PEERCRED),调用参数验证完全靠自己。,四、进程通信-Socket,附:资料,linux用户权限的管理/main/?q=node/196Android之zygote与进程创建,附:源码,init进程platformsystemcoreinitzygote进程platformframeworksbasecmdsapp_processinstalld进程plat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论