Android 安全攻防(二): SEAndroid bionic
转自:http://blog.csdn.net/yiyaaixuexi/article/details/8490886
最近研究SEAndroid,会陆续对各个模块做对比分析,学习移植SELinux至Android,学习程序管控策略。
bionic 作为第一个分析的模块,在此之前,先简单叙述一下SEAndroid,便于后续理解。
SEAndroid 与 Android 的区别

SEAndroid 如何管控程序
一句话概括:程序向SEAndroid(确切的说是SELinux)发送请求,SEAndroid根据策略数据库进行策略分析,比对安全上下文,控制应用程序的资源存取。

SEAndroid bionic
SEAndroid在架构和机制上与SELinux完全一样,考虑到移动设备的特点,所以移植到SEAndroid的只是SELinux的一个子集。
1.增加系统调用
对比Android,SEAndroid bionic下增加了12个 system call :
- int fsetxattr(int, const char *, const void *, size_t, int)
 - ssize_t fgetxattr(int, const char *, void *, size_t)
 - ssize_t flistxattr(int, char *, size_t)
 - int fremovexattr(int, const char *)
 - int setxattr(const char *, const char *, const void *, size_t, int)
 - int lsetxattr(const char *, const char *, const void *, size_t, int)
 - ssize_t getxattr(const char *, const char *, void *, size_t)
 - ssize_t lgetxattr(const char *, const char *, void *, size_t)
 - ssize_t listxattr(const char *, char *, size_t)
 - ssize_t llistxattr(const char *, char *, size_t)
 - int removexattr(const char *, const char *)
 - int lremovexattr(const char *, const char *)
 
2.linker增加AT_SECURE
SELinux为加载的应用程序设置AT_SECURE auxv 标志,具体在bionic/linker/linker.c:
- /* Initialize environment functions, and get to the ELF aux vectors table */
 - vecs = linker_env_init(vecs);
 - /* Check auxv for AT_SECURE first to see if program is setuid, setgid,
 - has file caps, or caused a SELinux/AppArmor domain transition. */
 - for (v = vecs; v[0]; v += 2) {
 - if (v[0] == AT_SECURE) {
 - /* kernel told us whether to enable secure mode */
 - program_is_setuid = v[1];
 - goto sanitize;
 - }
 - }
 - /* Kernel did not provide AT_SECURE - fall back on legacy test. */
 - program_is_setuid = (getuid() != geteuid()) || (getgid() != getegid());
 
综上所述,bionic差异并不大,主要是AT_SECURE的加入, SELinux水很深,推荐鸟哥的文章一读:
鳥哥的 Linux 私房菜-第十七章、程序管理與 SELinux 初探
Android 安全攻防(二): SEAndroid bionic的更多相关文章
- Android trap攻防思路整理
		
Android trap攻防 图/文 h_one 0x01 反 ...
 - Android仿微信二维码扫描
		
转载:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一 ...
 - Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误
		
嵌套Fragment的使用及常见错误 嵌套Fragments (Nested Fragments), 是在Fragment内部又添加Fragment. 使用时, 主要要依靠宿主Fragment的 ge ...
 - Android反编译(二)之反编译XML资源文件
		
Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具 apktool http ...
 - Android进阶笔记06:Android 实现扫描二维码实现网页登录
		
一. 扫描二维码登录的实现机制: 详细流程图: (1)PC端打开网页(显示出二维码),这时候会保存对应的randnumber(比如:12345678). (2)Android客户端扫码登录,Andro ...
 - android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)
		
写在最前(这是对上一篇博文的问题做的更新[android利用zbar二维码扫描]) project下载 zbarLib编译project project下载0积分 bug 在2.3的系统中Hol ...
 - ANDROID Porting系列二、配置一个新产品
		
ANDROID Porting系列二.配置一个新产品 详细说明 下面的步骤描述了如何配置新的移动设备和产品的makefile运行android. 1. 目录//vendor/创建一个公 ...
 - 【转】android 电池(二):android关机充电流程、充电画面显示
		
关键词:android 电池关机充电 androidboot.mode charger关机充电 充电画面显示 平台信息:内核:linux2.6/linux3.0系统:android/android4. ...
 - android Graphics(二):路径及文字
		
前言:今天项目进入攻关期,他们改Bug要改疯掉了,主管为了激励大家,给大家发了一封邮件,讲到他对项目和学习的理解,一个很好的图形模型,分享给大家,如图在下面给出:(不便给出原文,我仅做转述)无论是学习 ...
 
随机推荐
- docker采用Dockerfile安装jdk1.8案例
			
1 获取一个简单的Docker系统镜像,并建立一个容器. 这里我选择下载CentOS镜像 docker pull centos 通过docker tag命令将下载的CentOS镜像名称换成centos ...
 - jQuery学习笔记Fisrt Day
			
跳过JS直接JQUERY,“不愧是你”. 对就是我. 今天开始jQuery学习第一天. click事件方法: 鼠标点击 dbl事件方法: 双击鼠标 mouseenter事件方法: 鼠标进入 mouse ...
 - Cobalt Strike系列教程第一章:简介与安装
			
Cobalt Strike是一款超级好用的渗透测试工具,拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket代理,office攻击,文件捆绑,钓鱼等多种功能.同时,Cobalt St ...
 - 命令模式彻底删除oracle实例
			
步骤一:关闭数据库export ORACLE_SID=bgsp1. sqlplus / as sysdba2. shutdown immediate步骤二:删除实例相关文件1. find $ORACL ...
 - sqlserver中将datetime类型转换为yyyyMMddHHmmss格式
			
JSON 中时间格式要求yyyyMMddHHmmss,从sqlserver 中转换 语句如下: Select REPLACE(CONVERT(varchar(100), GETDATE(), 112) ...
 - Jedis Unexpected end of stream & java.net.SocketException: Broken pipe问题解决思路
			
笔者一直维护的稳定基础服务测试环境不稳定了,这能忍!盘他,虽然不一定能完全盘的了. 背景: hrexternal 基础服务对外提供公司员工获取的多个接口,很多接口访问频率比较高,加了缓存,使用的是re ...
 - git 配置本地用户名称 和 邮件名称
			
很多次配置git用户名和邮箱了,总是会忘记,然后在网络上搜索,今天进行记录下来,防止遗忘: # 查看用户名和邮箱地址git config user.name git config user.email ...
 - ORA-29861: 域索引标记为 LOADING/FAILED/UNUSABLE
			
解决方法:select idx_name,idx_status from ctxsys.ctx_indexes;需要重建同步全文索引:alter index 索引名 rebuild online ...
 - Codeforces Round #594 (Div. 2)
			
传送门 C. Ivan the Fool and the Probability Theory 题意: 给出一个\(n*m\)的方格,现在要给方格中的元素黑白染色,要求任一颜色最多有一个颜色相同的格子 ...
 - 纯CSS实现自动轮播,CSS变量的定义与使用,计算属性的使用
			
先来看一下实现的效果: 实现原理: HTML中使用ul>li存放图片 CSS使用CSS3的animation来完成动画 <!-- HTML --> <section class ...