Kali2022.3虚拟机编译AOSP(从Kali安装到完成Aosp编译详细记录)

一.前言

  • 测试的硬件环境(轻薄本):cpu:Amd r5 4600u,内存:16g,外接固态硬盘盒子。测试(下载和编译Android10)结果:下载时长为0.5-1h,编译时长接近5h;
  • 虚拟机环境:VMware Workstation Pro17,镜像为:Kali-2022.3-installer-amd64

二.安装Kali

  • 安装步骤尽可能的详细一些,按照下方图示进行操作即可,无需做改动。

2.1.Debian版本选择和虚拟化设置

  • 不确定是否一定要这么选,但是最好跟kali的对应(2022.3对应Debian11.x)

  • 虚拟化设置(R5 4600U是十二线程的,个人就选择了内核数量为12)

2.2.虚拟机配置

2.3.安装界面

  • 界面1

  • 界面2

  • 界面3

  • 界面4

  • 界面5

  • 界面6

  • 界面7

  • 界面8

  • 界面9

  • 界面10

  • 界面11

  • 界面12

  • 界面13

  • 界面14(默认即可)

  • 界面15

  • 界面16

  • 界面17

三.编译前的准备工作

3.1.配置root账户

  • 输入以下命令,按照提示继续下一步

    sudo passwd root

  • 退出当前账号,使用root账户登录

3.2.切换shell为bash

  • 执行以下命令表示切换,切换后重启虚拟机

    chsh -s /bin/bash

3.3.修改时区

dpkg-reconfigure tzdata

3.4.更换镜像源

3.5.(可选)共享文件夹挂载

//命令1
mkdir /mnt/hgfs
//命令2
vmhgfs-fuse .host:/ /mnt/hgfs  
//命令3
umount /mnt/hgfs
//命令4
vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000 -o umask=022
  • 开机自动挂载共享文件夹

    //步骤一:使用命令
    vim /etc/fstab
    //步骤二:文件末尾添加以下内容
    #开机自动挂载 下方share_dir替换成自定义的共享文件夹名
    .host:/share_dir /mnt/hgfs/share_dir fuse.vmhgfs-fuse allow_other 0 0

3.6.装中文字体(需要先修改镜像源)

apt install xfonts-intl-chinese
apt install ttf-wqy-microhei

3.7.切换Python版本配置

  • 首先查看默认安装的python版本有哪些,执行以下命令

    cd /usr/bin

    //查看默认安装的python版本(默认安装了python2.7和python3.10,直接配置以下命令即可)
    ls -al python*

    //配置1
    update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
    //配置2
    update-alternatives --install /usr/bin/python python /usr/bin/python3.10 3
    //查看配置后的信息
    update-alternatives --display python
    //切换python版本(此时,一般是0,1,2)
    update-alternatives --config python
    //(可选)解除 update-alternatives 对某个版本的管理
    update-alternatives --remove /usr/bin/python python /usr/bin/python2.7

3.8.安装编译前依赖

  • 在控制台执行以下命令(以下命令仅针对2022.3版本kali,其它版本不确定)

    sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig libncurses5 m4

3.9.配置git

git config --global user.email "邮箱地址"
git config --global user.name "用户名"

3.10.(不确定是否一定需要,但最好安装一下)配置JDK

  • 尝试在ubuntu20上没有安装,成功编译过Android10和12。

    //eg:在下载目录下执行以下命令
    wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/8u262-b10/openlogic-openjdk-8u262-b10-linux-x64.tar.gz
    //解压
    tar -xvf openlogic-openjdk-8u262-b10-linux-x64.tar.gz
    //将解压后的文件复制到 /usr/local/sbin/
    cp openlogic-openjdk-8u262-b10-linux-64 /usr/local/sbin/ -r

    //添加配置信息
    export JAVA_HOME=/usr/local/sbin/openlogic-openjdk-8u262-b10-linux-64
    export PATH=JAVA_HOME/bin:PATH
    export CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar

3.11.配置交换空间

  • 给虚拟机提供的内存是12.5g,配置一下交换空间。在控制台直接cv即可,不用考虑位置(第一步要是出现报错就直接从第三步开始)。

    #停用交换文件
    swapoff /swapfile
    #删除文件
    rm /swapfile
    #新建swap空间,个人设置的是20G
    fallocate -l 20G /swapfile
    #设置文件权限
    chmod 600 /swapfile
    #挂载
    mkswap /swapfile
    #激活启用
    swapon /swapfile
    #安装vim(可选)
    apt-get install vim
    #接下来,需要将交换信息写入系统配置
    #打开配置文件
    vim /etc/fstab
    #在最末尾处插入(输入i进行插入,ctrl + shift + v是粘贴,如果不能实现粘贴,自行搜索处理一下,esc退出编辑,输入wq进行保存)
    /swapfile swap swap defaults 0 0
    #更改交换空间大小
    vim /etc/sysctl.conf
    #在最末尾处插入
    vm.min_free_kbytes=1500000

四.下载环节

五.编译环境

  • 编译Android10请用Python2,前面选择了Python3,最后出现了报错。

    source build/envsetup.sh
    lunch aosp_x86_64-eng
    //r5 4600u是十二线程的,这里就选择了j6
    make -j6

  • 出现报错(切换成Python2继续编译,重新执行上面三行代码)

  • 编译成功,启动模拟器

六.总结

  • 建议使用文章开头提及的Kali镜像(版本选择很重要)。尝试用过"Kali-linux-2022.3-vmware-amd64.7z"和"Kali-linux-2023.3-vmware-amd64.7z",前者出现了不能启动模拟器,说是虚拟化被占用。后者出现过依赖方面的问题。
  • Ubuntu环境编译aosp请参考:Ubuntu20编译Android12(车载环境搭建)

七.参考资料

相关推荐
诗雅颂5 天前
【js逆向学习】某多多anti_content逆向(补环境)
开发语言·javascript·webpack·逆向·拼多多·补环境·anti_content
CYRUS STUDIO9 天前
frida脚本,自动化寻址JNI方法
android·运维·自动化·逆向·移动安全·jni·frida
vortex514 天前
安全见闻(9)——开阔眼界,不做井底之蛙
安全·网络安全·逆向·二进制·1024程序员节
九月镇灵将16 天前
爬虫逆向学习(十一):实战分享反爬机制快速定位与破解
爬虫·python·学习·逆向·破解
sln_155019 天前
DASCTF 2024金秋十月赛RE题wp
安全·逆向·ctf
CYRUS_STUDIO20 天前
Android 下通过触发 SIGTRAP 信号实现反调试
android·linux·逆向
码农研究僧23 天前
逆向 解密接口信息(附Demo)
javascript·爬虫·逆向·解密·decrypt
诗雅颂1 个月前
【js逆向学习】极志愿 javascript+python+rpc
javascript·python·学习·rpc·逆向
bbqz0071 个月前
逆向WeChat(七)
数据库·c++·微信·逆向·protobuf·sqlcipher·破解密钥·解码protobuf·wechatdb
晴友读钟1 个月前
C#(.NET FrameWork库)逆向基础流程(纯小白教程)
c#·.net·逆向·ctf·reverse·dnspy