aosp “Android Open Source Project”的缩写。中文意为”Android 开放源代码项目”。
为什么要编译aosp源码:
首先android现在过反调试、root检测、xopsed检测、frida检测都非常难,一个一个过很费时费力,那编译源码就可以使用源码中的函数,天然可以过检测。
然后现在编译使用脱壳机也需要先编译aosp的源码
在然后编译使用aosp源码可以帮助更清楚的理解aosp源码的执行过程
对于开发来讲可以通过aosp源码获取隐藏的api
对于发烧友来说可以修改源码加一些定制化的东西
Google 为我们操碎了心, 为我们提供了一系列的教程供我们学习
- https://source.android.com/setup/build/initializing
- https://source.android.com/setup/create/coding-tasks
- https://source.android.com/setup/build/downloading
- https://source.android.com/setup/build/building
- https://source.android.com/setup/build/building-kernels
aosp编译参考文章:
https://www.anquanke.com/post/id/199898
https://www.freesion.com/article/6167189635/
下载源码包
链接:https://pan.baidu.com/s/1zAYliYbkagdUUsykww_L4g 提取码:vv5u)
解压后有个7z的压缩包和checksum
使用certutil -hashfile yourfilename.ext SHA256查看是否损坏
下载kali
链接: https://pan.baidu.com/s/1KPRO1pWbpfYZN6_lE-dxfg 提取码: tr3k
下载kali后解压
打开后缀为vmx的文件,需要提前下载vm虚拟机
虚拟机推荐配置
内存不能小于12个g,少于12G
会报out of memory
错误,处理器4也可以,硬盘需要选择扩展硬盘,我使用的是512g的固态硬盘,在SSD移动硬盘
上完成的,型号是海康威视的T200N
,普通的SATA3
硬盘扩展450g
内存不够增加swap
增加swap方法
新增10G的swap:
# dd if=/dev/zero of=swapfile bs=1M count=10240
mkswap创建交换文件:
# mkswap swapfile swapon激活
# sudo swapon swapfile 开机启动:
# vim /etc/fstab
添加
# /swap/swapfile swap swapdefaults 0 0
https://blog.csdn.net/click_idc/article/details/80591686
打开后使用kali kali登录进去,(kali 2021默认是kali kali,之前默认是root toor)
创建root用户
先设置密码
sudo passwd root
kali
toor
toor
然后重启后使用root账户登录 root toor
修改时区
kali里面时间老是不对其实只是时区不对而已,一个命令就搞定:
# dpkg-reconfigure tzdata
然后选择Asia→Shanghai,然后重启即可。
关闭锁屏
kali:
记得到设置里面的Display设置里,把所有的息屏、休眠选项都关掉,Power Manager里把Display里的Display power management关掉,并且把Plugged in那里的10 min调成0 never
win:
电源设置休眠永不
调整分区
命令行执行
gpared
先add在确定
创建文件夹
cd Desktop
mkdir COMPILE
mount /dev/sda3/ /root/Desktop/COMPILE
拷贝源码
启动sshd
kali开sshd服务:
# nano /etc/ssh/sshd_config
PermitRootLogin yes
# /etc/init.d/ssh start
ifconfig查看ip
在使用FileZilla链接
连接之后把解压好的aosp.7z文件拖拽到COMPLIE目录下
md5sum aosp810r1.7z 算下md5跟aosp810r1.txt是否一致
解压
7z x aosp810r1.7z
安装依赖
apt update
apt install bison tree
# dpkg –add-architecture i386
# apt update
# apt install libc6:i386 libncurses5:i386 libstdc++6:i386
# apt install libxml2-utils
安装openjdk8
cd Desktop
wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
zsh改成bash kali2021默认为zsh了编译aosp源码会出现很多问题
chsh -s /bin/bash
设置环境变量
tar zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
vim ~/.bashrc
后面添加
export JAVA_HOME=/root/Desktop/java-se-8u41-ri
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
保存
source ~/.bashrc
编译安卓源码前执行以下:
export LC_ALL=C
下载驱动包
cd Desktop/COMPILE/aosp810r1
wget https://dl.google.com/dl/android/aosp/google_devices-sailfish-opm1.171019.011-f3bafc8b.tgz
wget https://dl.google.com/dl/android/aosp/qcom-sailfish-opm1.171019.011-247af472.tgz
tar zxvf google_devices-sailfish-opm1.171019.011-f3bafc8b.tgz
tar zxvf qcom-sailfish-opm1.171019.011-247af472.tgz
开始编译
重启虚拟机后需要重新mount
mount /dev/sda3/ /root/Desktop/COMPILE
cd Desktop/COMPILE/aosp810r1
执行驱动预置操作, 需要浏览协议并在结尾处输入”I ACCEPT”
./extract-google_devices-sailfish.sh
./extract-qcom-sailfish.sh
export LC_ALL=C
选择设备:
lunch
24
开始编译
m
编译开始后,CPU
会迅速权限飙到百分百
编译成功
编译完成的系统镜像位于当前目录的out/target/product/sailfish/
下,各类img
就是。
制作刷机镜像
去官网下载对应的刷机包
https://developers.google.com/android/images#bullhead
下载对应的刷机包
解压后有个img文件夹后替换编译后的aopsimg文件,重新压缩就好了
我下的是这个sailfish-opm4.171019.021.p1-factory-0bcf4315.zip
解压 sailfish-opm4.171019.021.p1-factory-0bcf4315.zip
解压后有下面的文件 在解压image-sailfish-opm4.171019.021.p1.zip
bootloader-sailfish-8996-012001-1711291800.img
flash-all.bat
flash-all.sh
flash-base.sh
image-sailfish-opm4.171019.021.p1.zip
radio-sailfish-8996-130091-1802061512.img
解压image-sailfish-opm4.171019.021.p1.zip
aboot.img cmnlib32.img keymaster.img system_other.img
android-info.txt cmnlib64.img modem.img tz.img
apdp.img devcfg.img pmic.img vendor.img
boot.img hosd.img rpm.img xbl.img
bootlocker.img hyp.img system.img
使用编译好的img替换到image-sailfish-opm4.171019.021.p1里在压缩就可以了,编译好的目录在out/target/product/sailfish/
然后刷机
执行adb reboot bootloader 或者 手机关机后长按音量下键和开机键
出现绿色小机器人界面
cd image-sailfish-opm4.171019.021.p1
./flash-all.sh
等待刷机成功自动重启就可以了
遇到的问题
fastboot not found
就安装下fastboot就好了
apt-get install android-tools-fastboot
如果fastboot还有问题就使用陈总星球的fastboot
替换掉安装的fastboot
which fastboot
查看fastboot目录
Cannot generate image for userdata
https://blog.csdn.net/cheriyou_/article/details/109722008
1.打开终端执行which fastboot (eg: /usr/bin/fastboot)
2.打开fastboot所在目录 (cd /usr/bin)
3.检查目录下是否存在make_f2fs文件、mke2fs文件、lib64文件夹(文件夹下含libc++.so文件)
4.不存在从platform-tools中拷贝过去 , platform-tools的下载网址: https://developer.android.google.cn/studio/releases/platform-tools
sudo cp make_f2fs /usr/bin
sudo cp mke2fs /usr/bin
sudo cp -r lib64 /usr/bin
\5. 赋予权限
sudo chmod 777 make_f2fs
sudo chmod 777 mke2fs
sudo chmod -R 777 lib64
用到的文件
链接: https://pan.baidu.com/s/1ReeAVm6uY1Be26unhTFrRw 密码: tbat