自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 android binder机制,注册系统服务---Java层注册系统服务

6 Java注册系统服务Java获取的ServiceManager代理是ServiceManagerProxy,ServiceManagerProxy的addService如下,public void addService(String name, IBinder service, boolean allowIsolated) throws RemoteExce

2017-06-12 22:15:58 610

原创 android binder机制,注册系统服务---结果返回

5结果返回用户态的Servicemanager进程发送的是BINDER_WRITE_READ命令,需要处理返回的BC_REPLY命令。并且只有写操作,没有读操作,即read_size为0。5.1 servicemanager进程binder驱动1,首先binder驱动的binder_ioctl方法处理BINDER_WRITE_READ命令,前面已经论述了,在此就不赘述。2, b

2017-06-12 22:12:27 712

原创 android binder机制,注册系统服务---服务端servicemanager

4服务端servicemanagerservice_manager.c的svcmgr_handler有关注册和获取服务的处理如下,case SVC_MGR_GET_SERVICE: case SVC_MGR_CHECK_SERVICE: s = bio_get_string16(msg, &len); if (s == NULL) {

2017-06-12 22:07:40 1116

原创 android binder机制,注册系统服务--服务端servicemanager binder驱动

3 服务端servicemanager binder驱动前面分析过Servicemanager进程中的main方法步骤,1,调用binder_open方法打开binder驱动。2,调用binder_become_context_manager方法注册成为binder服务的大管家。3,调用binder_loop方法进入无限循环, 处理binder驱动发来的请求。 其中bind

2017-06-12 22:03:29 869

原创 android binder机制,注册系统服务---客户端Binder驱动

2, 客户端Binder驱动在Binder驱动层,和ioctl()相对的动作是binder_ioctl()函数。binder_ioctl()函数负责在两个进程间收发IPC数据和IPC reply数据。ioctl(文件描述符,ioctl命令,数据类型)(1) 文件描述符,是通过open()方法打开Binder Driver后返回值;(2) ioctl命令和数据类型是一体的,不同的命令

2017-06-12 21:57:51 626

原创 android binder机制,注册系统服务---native客户端

前言:前面的准备工作终于完成差不多了,长舒一口气,看下服务的注册。1,native客户端surfaceflinger是android系统中和图形相关的进程,由init进程通过解析init.rc文件创建,对应的文件目录是frameworks/native/services/surfaceflinger。init.rc启动surfaceflinger配置如下,service

2017-06-12 21:50:28 601

原创 android binder机制---Java层获取ServiceManager

2, Java层获取ServiceManagerbinder在framework层,采用JNI技术来调用native(C/C++)层的binder架构,从而为上层应用程序提供服务。还是直接从方法的注册和获取来解析。Context中的addService方法首先必须获取ServiceManager代理,然后调用代理的addService方法。ServiceManager的addSer

2017-06-12 20:24:44 933

原创 android binder机制---native获取ServiceManager

前言:无论是Java层还是native层,Binder跨进程首先必须获取ServiceManager对象。当然Java层和native层分别有ServiceManager对象。1,native获取ServiceManagerC++(native) 获取Service Manager是通过defaultServiceManager()方法来完成,当进程注册服务(addSe

2017-06-12 20:17:20 1082

原创 android binder机制---Binder驱动

4 Binder驱动binder机制到底是如何从代理对象找到其对应的binder实体呢?其实,在binder驱动层,还有个与之相对的结构,叫做binder_proc。示意图如下,Binder驱动是Android专用的,但底层的驱动架构与Linux驱动一样。binder驱动在以misc设备进行注册,作为虚拟字符设备,没有直接操作硬件,只是对设备内存的处理。主要是驱动设备的

2017-06-12 20:05:40 1428 1

原创 android binder机制---ProcessState和线程池

3, ProcessState和线程池     Android系统启动完成后,ActivityManager, PackageManager等各大服务都运行在system_server进程,app应用需要使用系统服务都是通过binder来完成进程之间的通信。     对于binder线程是如何管理的呢,又是如何创建的呢?其实无论是system_server进程,还是app进程,都是

2017-06-12 19:54:20 10002

原创 android binder机制---servicemanager进程启动

2, servicemanager进程启动ServiceManager是android系统中Binder IPC通信过程中的守护进程,主要负责系统服务的注册和获取。ServiceManager进程是init进程通过init.rc脚本里的配置文件启动的。init.rc有关的配置如下,service servicemanager /system/bin/servicemanager

2017-06-12 19:42:23 930

原创 android binder机制---概述

1,概述简单地说,Binder是Android平台上的一种跨进程交互技术。在Android的应用层次上,基本上已经没有过去的进程概念了。然而在实现层次,它毕竟还是要建构在一个个进程之上的。实际上,在Android内部,那些支撑应用的组件往往会身处于不同的进程,那么应用的底层必然会牵涉大量的跨进程通信。为了保证通信的高效性,Android提供了Binder机制。从进程角度来看IPC机

2017-06-12 19:27:16 746

原创 SEandroid 安全机制---进程安全上下文

3进程安全上下文前面一篇文章分析了文件安全上下文关联过程。但是在SEAndroid中,除了要给文件关联安全上下文外,还需要给进程关联安全上下文,因为只有当进程和文件都关联安全上下文之后,SEAndroid安全策略才能发挥作用。也就是说,当一个进程试图访问一个文件时,SEAndroid会将进程和文件的安全上下文提取出来,根据安全策略规则,决定是否允许访问。     在传统的Linux

2017-06-10 09:23:10 1441

原创 SEandroid 安全机制---文件安全上下文

2文件安全上下文SEAndroid是一种基于安全策略的MAC安全机制。这种安全策略实施在主体和客体的安全上下文之上。这意味着安全策略在实施之前,SEAndroid安全机制中的主休和客体是已经有安全上下文的。在SEAndroid安全机制中,主体一般就是进程,而客体一般就是文件。文件的安全上下文的关联有不同的方式。本文主要分析文件安全上下文的设置过程。虽然android系统中有各种

2017-06-10 09:16:07 1132

原创 SEandroid 安全机制---整体框架

前言:在Java层和native守护进程socket通信 一文中,新建了一个名为myguard的socket。然后修改了5个权限相关的文件,1,在device/qcom/sepolicy/common/ 路径下添加myguard.te文件,内容如下,#myguardallow myguard_socket myguard_socket:sock_file create_file_

2017-06-10 09:03:34 1184 1

原创 android 6.0 Java层和native守护进程socket通信

在android 系统中,有大量的地方使用socket进行通信,例如phone进程的RIL.java和rild守护进程之间的通信。因此,本文实现一个简单的系统apk和native守护进程,实现socket通信。本篇文章基于android 6.0。目标:1,写一个简单的系统apk,native守护进程;2,实现socket通信1, 概念Java主要代码client = n

2017-06-10 08:35:51 2915

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除