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要改疯掉了,主管为了激励大家,给大家发了一封邮件,讲到他对项目和学习的理解,一个很好的图形模型,分享给大家,如图在下面给出:(不便给出原文,我仅做转述)无论是学习 ...
随机推荐
- 【nodejs原理&源码赏析(4)】深度剖析cluster模块源码与node.js多进程(上)
目录 一. 概述 二. 线程与进程 三. cluster模块源码解析 3.1 起步 3.2 入口 3.3 主进程模块master.js 3.4 子进程模块child.js 四. 小结 示例代码托管在: ...
- [WPF 自定义控件]开始一个自定义控件库项目
1. 目标 我实现了一个自定义控件库,并且打算用这个控件库作例子写一些博客.这个控件库主要目标是用于教学,希望通过这些博客初学者可以学会为自己或公司创建自定义控件,并且对WPF有更深入的了解. 控件库 ...
- (转)理解滑动平均(exponential moving average)
转自:理解滑动平均(exponential moving average) 1. 用滑动平均估计局部均值 滑动平均(exponential moving average),或者叫做指数加权平均(exp ...
- flex三个对齐属性的记忆方式
今天在群里聊天有人说 flex的那几个居中属性好难记,时不时都要尝试一下,或者查看一下文档,现在我把我自己的记忆方式分享一下... 1. flex的居中主要是通过这三个属性来实现的: justify- ...
- 项目中使用http referer,为了盗取图片资源
项目背景:因为图片的数据是爬取的别人的图片,而且保存的数据仅仅是图片地址链接,为了减少数据存储和服务器压力,但是这就引发一个问题,有的图片地址没有做防盗处理,可以随意的下载使用:但有些图片的服务器做了 ...
- iOS中点击按钮复制指定内容
话不多说,直接上图和代码:
- 单片机固件烧录器 Firmware Writer Android APP
GitHub地址 :https://github.com/WallBreakerX/mcu_firmware_writing_via_androidphone 用途 可在安卓手机上实现向单片机的h ...
- Shell—各种括号的用法
括号的种类 小括号,圆括号 ( ) 中括号,方括号 [ ] 大括号.花括号 { } 一.单小括号 () 1.另开命令组——小括号中的命令将会新开启一个子shell独立顺序运行,所以括号中的变量不能够被 ...
- 测试使用索引库crud和高级查询分页
1.搭建ES的服务 导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifa ...
- redhat7.7(centOS7)安装ORACLE 11g出坑教程及问题总结与解决
写在前面: 环境建议:VM 15.5,因为15.5修复了诸多bug,可以在安装过程中省去不少麻烦 添加新的虚拟机安装redhat7.7 准备redhat7.7的安装包...百度云不让上传噢噢噢噢,这里 ...