Android 安全机制


1. Linux基础



Android本身是构建于Linux操作系统之上,以此为基础做了很多修改。谈到Android的安全机制,就不能绕开Linux的安全机制,这里先介绍一下Android中修改过的几个Linux常用命令

1.1 ps



ps 是Linux中常见的命令,用来查看进程信息,Android中重写了这个命令,源码位于 system/core/toolbox/ps.c.

这里简单介绍下ps(Android版)的用法:



ps 可以查看所有正在运行的进程

-t 显示进程下的线程列表

-x 显示进程耗费的用户时间和系统时间,格式:(u:0, s:0),单位:秒(s)

-P 显示调度策略,通常是bg或fg,当获取失败将会是un和er

-p 显示进程的优先级和nice等级

-c 显示进程耗费的CPU时间 (可能不兼容Android 4.0以前的老版本系统)

[pid] 过滤指定的进程PID

[name] 过滤指定的进程NAME


ps 命令的执行结果字段:

USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME

USER: 用户名

PID: 进程号

PPID: 父进程号

VSIZE  : virtual size,进程虚拟地址空间大小,单位为KB

RSS    : 进程正在使用的物理内存的大小;单位为KB

WCHAN  :进程如果处于休眠状态的话,在内核中的地址;

PC  : program counter,

NAME: process name,进程的名称



1.2 ls 


列出文件详细信息,Android中重写了这个命令,源码位于 system/core/toolbox/ls.c.

这里简单介绍下ls(Android版)



ls 查看文件,只显示文件名信息

ls filename 显示指定文件名称

-l 显示文件详细信息。包括,存取权限,用户名,组名,文件大小,最近一次修改时间,文件链接。

-n 用户名和组名 以对应id显示。

-s 显示文件占用的块数,以KB为单位

-d 列出目录??没有列出目录中的文件

-R 循环列出目录中的所有文件及子目录中的文件

-Z 显示文件详细信息。包括,存取权限,用户名,组名, maclabel ,最近一次修改时间,文件链接。

   maclabel 属性说明: Display  security  context  so it fits on most displays. maclabel属性由selinux.h头文件中的lgetfilecon获得。

-a 显示所有文件信息

-F 显示文件类型

   s socket

   l file link

   - 普通文件

   d 目录

   b 块设备

   c 字符设备

   p 管道文件

   ? 未知文件



1.3 selinux

1.4 几点说明


(1) ls ps 能够显示文件中的 用户名 组名,这对于理解Android的沙箱机制和文件保护是很有帮助的,所以在这里说明。

(2) 所有这些参数的解释是参照4.4源码,不同手机上的实现可能有差异

(3) selinux是比较复杂的一部分内容,后续会补上,主要是着急向前分析Android系统的安全属性,这里就先略过。