aosp “Android Open Source Project”的缩写。中文意为”Android 开放源代码项目”。

为什么要编译aosp源码:

首先android现在过反调试、root检测、xopsed检测、frida检测都非常难,一个一个过很费时费力,那编译源码就可以使用源码中的函数,天然可以过检测。

然后现在编译使用脱壳机也需要先编译aosp的源码

在然后编译使用aosp源码可以帮助更清楚的理解aosp源码的执行过程

对于开发来讲可以通过aosp源码获取隐藏的api

对于发烧友来说可以修改源码加一些定制化的东西

Google 为我们操碎了心, 为我们提供了一系列的教程供我们学习

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

链接

https://www.anquanke.com/post/id/199898

https://www.anquanke.com/post/id/105994