一,系统架构
安卓系统分层架构
安卓可看成一个由下至上高度整合的linux发行版,官方架构如下:

和Windows的对比:
-
Windows逆向常见的是
.exe/.dll在用户态,驱动在ntoskrnl;安卓里多了“Java层”,多数应用逻辑跑在ART虚拟机上,但底层原生代码在Native层。 -
安卓没有传统的
main()入口,应用由 Zygote进程 孵化,入口在ActivityThread.main()。
逐层拆解(从下至上)
1.Linux 内核层
- 作用:提供基本的系统功能 和 与硬件交互的驱动,像Display Driver(显示驱动)、Camera Driver、WIFI Driver 等。进程隔离、内存管理、驱动、网络栈、文件系统、安全机制(SELinux)。
- 关键机制:
- Binder驱动:安卓独有的IPC,所有跨进程通信几乎都走它。
- SELinux:强制访问控制,限制进程能访问的资源,是沙箱的基石。
- 用户ID隔离:每个APP是一个独立的Linux用户(
u0_aXXX),天然隔离。
2.硬件抽象层(HAL)
- 作用:把硬件驱动封装成用户态
.so库,供上层通过HIDL/AIDL调用。
3. Native层 + Android runtime
提供核心库( C/C++ 库 )(如 libc、binder、WebKit)和运行环境(虚拟机),执行 so 代码与编译后的 Java 代码(.dex)。 Native层 虚拟机
4. Java 框架层 (Framework)
提供系统服务与 API(Activity 管理、包管理、窗口管理等),所有 Java 应用依赖它。
5. 系统应用与第三方应用
-
预装应用(
/system/app,/system/priv-app)拥有更高级的权限(signatureOrSystem)。 -
第三方应用安装在
/data/app/,沙箱隔离。 -
APK结构:本质是一个zip包,包含:
classes.dex(可能有多个)lib/(各ABI的so)res/资源文件AndroidManifest.xml(二进制XML,描述组件、权限、入口)META-INF/签名信息
简单apk打包流程图

数据信息参考来源
平台架构 | Platform | Android Developers deepseek
// comments
评论
正在读取评论…