2022-11-30 15:06:49 +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环境
|
2023-01-14 23:46:20 +08:00
|
|
|
2.3 如何选择源码版本
|
|
|
|
2.4 编译
|
2022-11-30 15:06:49 +08:00
|
|
|
2.5 模块编译
|
|
|
|
2.6 内核编译
|
|
|
|
2.7 刷机
|
|
|
|
|
2023-01-14 23:46:20 +08:00
|
|
|
2.8 源码的开发环境搭建
|
|
|
|
|
2023-02-19 20:11:35 +08:00
|
|
|
2.9 gitlab+repo管理源码
|
|
|
|
|
2023-01-14 23:46:20 +08:00
|
|
|
|
|
|
|
|
2022-11-30 15:06:49 +08:00
|
|
|
第3章 认识系统组件
|
|
|
|
3.1 源码结构介绍
|
2023-02-19 20:11:35 +08:00
|
|
|
|
2023-02-21 23:14:28 +08:00
|
|
|
3.2 Android的启动流程
|
2023-02-19 20:11:35 +08:00
|
|
|
|
2023-02-21 23:14:28 +08:00
|
|
|
3.3 内核启动
|
|
|
|
|
|
|
|
3.4 init进程启动
|
2023-03-02 00:49:22 +08:00
|
|
|
3.5 init.rc
|
|
|
|
|
|
|
|
3.6 Zygote启动
|
|
|
|
|
|
|
|
3.7 应用启动
|
|
|
|
|
|
|
|
3.8 认识services
|
|
|
|
3.9 认识framework
|
|
|
|
3.10 认识libcore
|
|
|
|
3.11 认识sepolicy
|
|
|
|
3.12 认识linker
|
2022-11-30 15:06:49 +08:00
|
|
|
|
|
|
|
第4章 系统美化
|
|
|
|
4.1 常见的系统美化方式
|
|
|
|
4.2 framework-res
|
|
|
|
4.2.1 认识framework-res
|
|
|
|
4.2.2 编译framework-res
|
|
|
|
4.3 修改开机画面
|
|
|
|
4.4 修改字体
|
|
|
|
4.5 修改壁纸
|
|
|
|
4.6 修改图标
|
|
|
|
4.7 美化包使用
|
|
|
|
|
|
|
|
第5章 系统功能增强
|
|
|
|
5.1 内置谷歌套件
|
|
|
|
5.1.1 gapps是什么
|
|
|
|
5.1.2 系统如何内置
|
|
|
|
5.1.3 测试效果
|
|
|
|
5.2 为系统预置app
|
|
|
|
5.3 为系统预置jar库
|
|
|
|
5.3.1 jar的编译与生成
|
|
|
|
5.3.2 内置jar
|
|
|
|
5.3.3 测试效果
|
|
|
|
5.4 为系统预置so动态库
|
|
|
|
5.4.1 so的编译与生成
|
|
|
|
5.4.2 内置so
|
|
|
|
5.4.3 测试效果
|
|
|
|
|
|
|
|
第6章 系统功能定制
|
|
|
|
6.1 如何进行功能定制
|
|
|
|
6.2 系统级别的插桩工具实现
|
|
|
|
6.3 自定义系统服务
|
|
|
|
6.4 从0开始添加一个app
|
|
|
|
6.4.1 如何编译
|
|
|
|
6.4.2 系统app的生成
|
|
|
|
6.4.3 测试效果
|
|
|
|
6.5 扩展系统APP功能
|
|
|
|
6.6 为系统加入进程注入器功能
|
|
|
|
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
|
2023-02-21 23:14:28 +08:00
|
|
|
12.3 小结
|