mirror of
https://github.com/feicong/rom-course.git
synced 2025-05-06 02:21:19 +00:00
139 lines
3.5 KiB
Markdown
139 lines
3.5 KiB
Markdown
# 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 源码拉取与同步
|
|
#### 2.3.1 分支选择策略
|
|
#### 2.3.2 repo配置
|
|
#### 2.3.3 源码拉取与同步
|
|
### 2.4 系统编译
|
|
#### 2.4.1 AOSP编译依赖库安装
|
|
#### 2.4.2 系统编译
|
|
### 2.5 模块编译
|
|
### 2.6 内核编译
|
|
### 2.7 刷机
|
|
#### 2.7.1 线刷
|
|
#### 2.7.2 卡刷
|
|
### 2.8 源码的开发环境搭建
|
|
### 2.9 gitlab配合repo管理源码
|
|
### 2.10 小结
|
|
|
|
## 第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 常见的系统美化方式
|
|
### 4.3 主题修改
|
|
### 4.3.1 认识framework-res
|
|
### 4.3.2 编译framework-res
|
|
### 4.4 修改开机画面
|
|
### 4.5 修改字体
|
|
### 4.6 修改壁纸
|
|
### 4.7 修改图标
|
|
### 4.8 美化包使用
|
|
|
|
## 第5章 系统内置功能
|
|
### 5.1 什么是系统内置
|
|
### 5.2 系统内置app
|
|
### 5.3 构建系统
|
|
### 5.4 系统内置jar库
|
|
### 5.5 系统内置so动态库
|
|
### 5.6 系统内置证书
|
|
### 5.7 修改testkey
|
|
### 5.8 默认开启adb调试
|
|
|
|
## 第6章 功能定制
|
|
### 6.1 如何进行功能定制
|
|
### 6.2 插桩
|
|
### 6.2.1 静态插桩
|
|
### 6.2.2 动态插桩
|
|
### 6.2.3 ROM插桩
|
|
### 6.3 RegisterNative插桩
|
|
### 6.3.1 Native函数注册
|
|
### 6.3.2 RegisterNative执行流程
|
|
### 6.3.3 RegisterNative实现插桩
|
|
### 6.4 自定义系统服务
|
|
### 6.5 为系统加入进程注入器功能
|
|
### 6.5.1 app启动流程跟踪
|
|
### 6.5.2 注入时机的选择
|
|
### 6.5.3 注入dex
|
|
### 6.5.4 注入so
|
|
### 6.6 修改app启动的默认权限
|
|
### 6.6.1 系统读取权限的源码跟踪
|
|
### 6.6.2 AOSP10下的默认权限修改
|
|
## 第7章 类加载和函数调用
|
|
### 7.1 双亲委派机制
|
|
### 7.2 类的加载流程
|
|
### 7.3 函数调用流程
|
|
### 7.4 ExecuteMterpImpl
|
|
### 7.5 ExecuteSwitch
|
|
|
|
## 第8章 脱壳
|
|
### 8.1 壳,加壳,脱壳
|
|
### 8.1.1 什么是加壳
|
|
### 8.1.2 如何脱壳
|
|
### 8.2 壳的特征
|
|
### 8.3 动态加载壳的实现
|
|
### 8.4 如何脱壳
|
|
### 8.5 自动脱壳机
|
|
|
|
## 第9章 Android Hook框架
|
|
### 9.1 Xposed
|
|
### 9.2 Xposed实现原理
|
|
### 9.3 常见的Hook框架
|
|
|
|
### 9.4 集成pine
|
|
|
|
### 9.5 集成dobby
|
|
### 9.6 实战测试
|
|
|
|
## 第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 集成反调试功能
|
|
### 11.5 Android下的硬件调试
|
|
### 11.5.1 什么是硬件调试
|
|
### 11.5.2 开启Android的硬件调试
|
|
### 11.5.3 硬件调试测试
|
|
|
|
## 第12章 基于定制系统的逆向实战
|
|
### 12.1 案例1
|
|
### 12.2 案例2
|
|
### 12.3 小结
|