2023-03-06 13:34:59 +08:00
|
|
|
# AOSP系统定制入门教程
|
|
|
|
|
|
|
|
## 第1章 引言
|
|
|
|
### 1.1 AOSP是什么
|
|
|
|
### 1.2 系统开发,定制,刷机,改机分别是什么
|
|
|
|
### 1.3 安卓系统发展史
|
|
|
|
### 1.4 常见的第三方定制系统
|
|
|
|
### 1.5 初识系统定制
|
|
|
|
### 1.5.1 系统定制的优点
|
|
|
|
### 1.5.2 系统定制的缺点
|
|
|
|
### 1.5.3 系统定制的发展趋势
|
|
|
|
### 1.6 初识系统刷机
|
|
|
|
### 1.7 小结
|
|
|
|
|
|
|
|
## 第2章 系统开发环境与工具
|
|
|
|
### 2.1 重新看待系统定制
|
|
|
|
### 2.2 环境准备
|
|
|
|
### 2.2.1 Windows环境
|
|
|
|
### 2.2.2 Linux环境
|
|
|
|
### 2.3 源码拉取与同步
|
2023-03-06 13:45:53 +08:00
|
|
|
#### 2.3.1 分支选择策略
|
|
|
|
#### 2.3.2 repo配置
|
|
|
|
#### 2.3.3 源码拉取与同步
|
2023-03-06 13:34:59 +08:00
|
|
|
### 2.4 系统编译
|
2023-03-06 13:45:53 +08:00
|
|
|
#### 2.4.1 AOSP编译依赖库安装
|
|
|
|
#### 2.4.2 系统编译
|
2023-03-06 13:34:59 +08:00
|
|
|
### 2.5 模块编译
|
|
|
|
### 2.6 内核编译
|
|
|
|
### 2.7 刷机
|
2023-03-06 16:04:57 +08:00
|
|
|
#### 2.7.1 线刷
|
|
|
|
#### 2.7.2 卡刷
|
2023-03-06 13:34:59 +08:00
|
|
|
### 2.8 源码的开发环境搭建
|
2023-03-06 16:26:08 +08:00
|
|
|
### 2.9 gitlab配合repo管理源码
|
|
|
|
### 2.10 小结
|
2023-03-06 13:34:59 +08:00
|
|
|
|
|
|
|
## 第3章 认识系统组件
|
|
|
|
### 3.1 源码结构介绍
|
|
|
|
### 3.2 Android的启动流程
|
|
|
|
### 3.3 内核启动
|
|
|
|
### 3.4 init进程启动
|
|
|
|
### 3.5 init.rc
|
|
|
|
### 3.6 Zygote启动
|
|
|
|
### 3.7 应用启动
|
|
|
|
### 3.8 认识services
|
|
|
|
### 3.9 认识framework
|
|
|
|
### 3.10 认识libcore
|
|
|
|
### 3.11 认识sepolicy
|
|
|
|
### 3.12 认识linker
|
|
|
|
|
|
|
|
## 第4章 系统美化
|
|
|
|
### 4.1 系统美化简介
|
|
|
|
### 4.2 常见的系统美化方式
|
2023-03-07 01:00:52 +08:00
|
|
|
### 4.3 主题修改
|
2023-03-06 13:34:59 +08:00
|
|
|
### 4.3.1 认识framework-res
|
|
|
|
### 4.3.2 编译framework-res
|
|
|
|
### 4.4 修改开机画面
|
|
|
|
### 4.5 修改字体
|
|
|
|
### 4.6 修改壁纸
|
|
|
|
### 4.7 修改图标
|
|
|
|
### 4.8 美化包使用
|
|
|
|
|
2023-03-07 01:00:52 +08:00
|
|
|
## 第5章 系统内置功能
|
|
|
|
### 5.1 什么是系统内置
|
|
|
|
### 5.2 系统内置app
|
2023-03-07 23:40:16 +08:00
|
|
|
### 5.3 构建系统
|
|
|
|
### 5.4 系统内置jar库
|
2023-03-08 23:53:39 +08:00
|
|
|
### 5.5 系统内置so动态库
|
2023-03-11 20:27:20 +08:00
|
|
|
### 5.6 系统内置证书
|
2023-03-09 22:22:42 +08:00
|
|
|
### 5.7 修改testkey
|
2023-03-11 20:27:20 +08:00
|
|
|
### 5.8 默认开启adb调试
|
2023-03-06 13:34:59 +08:00
|
|
|
|
|
|
|
## 第6章 系统功能定制
|
|
|
|
### 6.1 如何进行功能定制
|
2023-03-12 15:36:50 +08:00
|
|
|
### 6.2 系统级别的插桩
|
2023-03-06 13:34:59 +08:00
|
|
|
### 6.3 自定义系统服务
|
2023-03-12 15:36:50 +08:00
|
|
|
### 6.4 扩展系统APP功能
|
|
|
|
### 6.5 为系统加入进程注入器功能
|
2023-03-06 13:34:59 +08:00
|
|
|
### 6.6.1 app启动流程跟踪
|
|
|
|
### 6.6.2 注入时机的选择
|
|
|
|
### 6.6.3 注入dex
|
|
|
|
### 6.6.4 注入so
|
|
|
|
### 6.7 修改app启动的默认权限
|
|
|
|
### 6.7.1 系统读取权限的源码跟踪
|
|
|
|
### 6.7.2 AOSP10下的默认权限修改
|
|
|
|
### 6.7.3 AOSP12下的默认权限修改
|
|
|
|
### 6.8 添加系统证书
|
|
|
|
### 6.8.1 内置证书到系统
|
|
|
|
### 6.8.2 系统获取系统证书的方式
|
|
|
|
|
|
|
|
## 第7章 系统集成脱壳功能
|
|
|
|
### 7.1 什么是壳,为什么要加壳
|
|
|
|
### 7.2 常见壳的特征介绍
|
|
|
|
### 7.2.1 初代壳
|
|
|
|
### 7.2.2 二代壳
|
|
|
|
### 7.2.3 三代壳
|
|
|
|
### 7.3 脱壳的原理
|
|
|
|
### 7.3.1 类的加载流程
|
|
|
|
### 7.3.2 函数的调用流程
|
|
|
|
### 7.3.3 简单的初代壳实现
|
|
|
|
### 7.3.4 如何脱壳
|
|
|
|
### 7.4 简单脱壳实现
|
|
|
|
### 7.5 自动化脱壳功能
|
|
|
|
### 7.6 认识art
|
|
|
|
### 7.7 加入脱壳功能
|
|
|
|
### 7.8 测试效果
|
|
|
|
|
|
|
|
## 第8章 系统集成Frida
|
|
|
|
### 8.1 什么是Frida
|
|
|
|
### 8.2 Frida基础用法
|
|
|
|
### 8.3 集成Frida gadget
|
|
|
|
### 8.4 测试效果
|
|
|
|
|
|
|
|
## 第9章 系统集成Xposed框架
|
|
|
|
### 9.1 什么是Xposed
|
|
|
|
### 9.2 Xposed实现原理
|
|
|
|
### 9.3 支持Xposed语法的Hook框架
|
|
|
|
### 9.4 内置Hook框架
|
|
|
|
### 9.5 实战加载Xposed模块
|
|
|
|
|
|
|
|
## 第10章 系统集成开发eBPF
|
|
|
|
### 10.1 什么是eBPF
|
|
|
|
### 10.2 什么是bcc
|
|
|
|
### 10.3 安卓系统中使用bcc
|
|
|
|
### 10.3.1 为系统打上补丁
|
|
|
|
### 10.3.2 测试eBPF便能
|
|
|
|
### 10.4 使用eBPF实现安卓系统进程跟踪
|
|
|
|
|
|
|
|
## 第11章 系统级调试与反调试
|
|
|
|
### 11.1 正常测试机下的调试
|
|
|
|
### 11.2 集成调试环境
|
|
|
|
### 11.3 系统集成反调试
|
|
|
|
### 11.4 android下的硬件调试
|
|
|
|
|
|
|
|
## 第12章 基于定制系统的逆向实战
|
|
|
|
### 12.1 案例1
|
|
|
|
### 12.2 案例2
|
|
|
|
### 12.3 小结
|