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(车载环境搭建)

七.参考资料

相关推荐
浩浩测试一下2 天前
汇编 16位32位64位通用寄存器(逆向分析)
汇编·windows·stm32·单片机·嵌入式硬件·逆向·二进制
Lang-12103 天前
Frida + Android Hook 完整指南
android·逆向·hook·frida
浩浩测试一下3 天前
汇编 标志位寄存器 (逆向分析 )
c语言·汇编·逆向·windows编程·标志寄存器
浩浩测试一下3 天前
汇编 数组与串指令(逆向分析)
汇编·逆向·二进制·免杀·串指令·汇编数组
程序0073 天前
.NET玩转爬虫 遇到反爬 jsl cookie
逆向
RSCompany4 天前
Frida 17 以后 Python API 跑旧版 JS 报 Java is not defined ?一行 import 直接恢复 Frida 16 体验
开发语言·python·逆向·hook·frida·android逆向·frida17
浩浩测试一下4 天前
汇编中的JCC指令 (逆向分析)
汇编·逆向·标志位·jcc指令·跳转指令·标志位寄存器
浩浩测试一下4 天前
汇编中的段与段寄存器(大小)段序 (逆向分析)
汇编·逆向·二进制·字节序·windows编程·内存地址排序
浩浩测试一下6 天前
汇编 位运算 (逆向分析)
汇编·逆向·位运算·asm·windows编程·二进制逆向
浩浩测试一下6 天前
汇编 高低八位寄存器数据存储方式(逆向分析)
汇编·网络安全·逆向·二进制·免杀·寄存器·windows编程