Note 看雪学院-浅入浅出Android安全

原作地址:http://www.kanxue.com/?article-read-547.htm

翻译作者:飞龙

Android 由四个层组成:Linux 内核本地用户空间应用程序框架应用程序层。 有时本地用户空间和应用程序框架层被合并到一个层中,称为 Android 中间件层

Linux内核

负责进程,内存,通信,文件系统管理等。

本地用户空间层

这个层的第一个组件是硬件抽象层( HAL) ,它与 Linux内核和本地用户空间层之间实际上是模糊的。

在 Linux 中,硬件驱动程序嵌入到内核中或作为模块动态加载。

虽然 Android 是建立在 Linux 内核之上,它利用了一种非常不同的方法来支持新的硬件。相反,对于每种类型的硬件,Android 定义了一个 API,它由上层使用并用于与这种类型的硬件交互。

硬件供应商必须提供一个软件模块,负责实现在 Android 中为这种特定类型的硬件定义的API。因此,此解决方案不再允许 Android 将所有可能的驱动程序嵌入内核,并禁用动态模块加载内核机制。提供此功能的组件在 Android 中称为硬件抽象层

此外,这样的架构解决方案允许硬件供应商选择许可证,在其下分发它们的驱动程序。

内核通过启动一个名为 init 的用户空间进程来完成其启动。 此过程负责启动 Android 中的所有其他进程和服务,以及在操作系统中执行一些操作。 例如,如果关键服务在 Android 中停止应答,init 进程可以重新启动它。 该进程根据 init.rc 配置文件执行操作。 工具箱包括基本的二进制文件,在 Android 中提供 shell 工具的功能。

Android 还依赖于一些关键的守护进程。 它在系统启动时启动,并在系统工作时保持它们运行。 例如, rild ( 无线接口层守护进程,负责基带处理器和其他系统之间的通信) ,servicemanager ( 一个守护进程,它包含在 Android 中运行的所有 Binder 服务的索引) , adbd ( Android Debug Bridge 守护进程,作为主机和目标设备之间的连接管理器)等。

本地用户空间中最后一个组件是本地库。 有两种类型的本地库:来自外部项目的本地库,以及在 Android 自身中开发的本地库。 这些库被动态加载并为 Android 进程提供各种功能。

应用程序框架

Dalvik 是 Android 的基于寄存器的虚拟机。它允许操作系统执行使用 Java语言编写的 Android 应用程序。在构建过程中,Java 类被编译成由 Dalvik VM 解释的 .dex 文件。

为了加速进程初始化过程,Android 利用了一个名为 Zygote 的特定组件。这是一个将所有核心库链接起来的特殊“预热"过程。当新应用程序即将运行时,Android 会从 Zygote 分配一个新进程,并根据已启动的应用程序的规范设置该进程的参数。该解决方案允许操作系统不将链接库复制到新进程中,从而加快应用程序启动操作。

系统服务是 Android 的最重要的部分之一。 Android 提供了许多系统服务,它们提供了基本的移动操作系统功能,供 Android 应用开发人员在其应用中使用。 例如, PackageManagerService 负责管理( 安装,更新,删除等) 操作系统中的 Android 包。 使用 JNI 接口系统服务可以与本地用户空间层的守护进程,工具箱二进制文件和本地库进行交互。

看雪学院-浅入浅出Android安全 笔记相关推荐

  1. 看雪学院-OllyDBG入门系列(三)笔记

    原作地址:http://bbs.pediy.com/showthread.php?threadid=21330 作者:CCDebuger 看雪学院-OllyDBG入门系列(三)笔记 这样的编辑框中输注 ...

  2. 看雪学院-解密入门教学(二)笔记

    解密入门教学(二)- 看雪学院 原作地址:http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458281884&idx=2&a ...

  3. 看雪学院-OllyDBG入门系列(二)笔记

    OllyDBG 入门系列(二)-字串参考 笔记 原作地址:http://bbs.pediy.com/showthread.php?threadid=21308 作者:CCDebuger   软件破解的 ...

  4. 看雪学院-解密入门教学(三)笔记

    解密入门教学(三) 原作地址:http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458281885&idx=2&sn= ...

  5. 浅入浅出 Android 安全 翻译完成!

    浅入浅出 Android 安全 翻译完成! 作者:Yury Zhauniarovich 译者:飞龙 来源:Yury Zhauniarovich | Publications 在线阅读 PDF格式 EP ...

  6. [科普]浅入浅出Liunx Shellcode

    创建时间:2008-05-13 文章属性:原创 文章提交: pr0cess  (pr0cess_at_cnbct.org) 浅入浅出Liunx Shellcode /*---------------- ...

  7. 浅入浅出深度学习理论实践

    全文共9284个字,40张图,预计阅读时间30分钟. 前言 之前在知乎上看到这么一个问题:在实际业务里,在工作中有什么用得到深度学习的例子么?用到 GPU 了么?,回头看了一下自己写了这么多东西一直围 ...

  8. 浅入深出之Java集合框架(上)

    Java中的集合框架(上) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到浅入深出之Java集合框架(下). ...

  9. Angular浅入深出系列 - 写在前面

    本系列目录: 写在前面 基础知识 控制器(Controller) 作用域(Scope) 集合(Collection) 模块(Module) 依赖注入(Dependency Injection) 服务( ...

最新文章

  1. GMT 时间日期格式
  2. 从C语言的角度重构数据结构系列(九)-数据结构哈希表分糖果
  3. 2008年5月小记(??, #, DataContractJsonSerializer, CTE Ranking top)
  4. mysql查询数据库第一条记录_SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...
  5. .NET快速信息化系统开发框架 V3.2-amp;gt;WinForm版本新增新的角色授权管理界面效率更高、更规范...
  6. java jersey client,如何在Jersey-Client Java中实现重试机制
  7. 【英语学习】【WOTD】cap-a-pie 释义/词源/示例
  8. go语言struct各种定义和用法
  9. Android学习笔记---28_网络通信之通过HTTP协议实现文件上传,组拼http 的post方法,传输内容
  10. Git检出远程库的分支等相关操作
  11. Red5 9的安装配置以及AS3连接red5简单示例 .
  12. python webshell_linux下python版webshell后门查杀工具
  13. 设置路由器当作交换机使用
  14. L1-039 古风排版 (20 分)(二维数组)
  15. python应用体系_Python金融应用之基金业绩评价体系构建
  16. RK3128-android5.1-wifi兼容
  17. 【安全牛学习笔记】 端口扫描
  18. CTFHUB-SQL注入
  19. 网络安全行业有哪些认可度比较高的证书呢?
  20. excel白屏未响应_关于Excel联网状态下打开某些xls(xlsx)文件巨慢(白屏,假死) - Microsoft Community...

热门文章

  1. RTEMS文件系统(6):内存文件系统(上)
  2. 前进的动力来自有明确的目标
  3. LiveGBS流媒体平台GB/T28181功能-安防监控录像服务端集中存储云上录像存储云端录像回看下载
  4. 海蜘蛛路由免费版也可以看流量
  5. xnetoe toe(tcp offload engine)测试方案与结果
  6. Vue上传图片并展示
  7. 2022-6-5 括号之价,最长配对,梦中岛之路,小Biu的旅行,最小正子段和,小b和排序,顺子,重排列得到2的幂,重排列,和为K的倍数,低买高卖,小b删列
  8. Flutter 云音乐
  9. python 全栈开发,Day39(进程同步控制(锁,信号量,事件),进程间通信(队列,生产者消费者模型))...
  10. 【vue使用城市选择器】