环境配置:ubuntu20.04.4 清华源
连续遇到几次optee的pwn题了,正好宋师傅上周与我交流了一番,于是开始了optee学习之路,但是这个搭环境就折磨了我好几天,写一篇博客记录一下
虚拟机走代理
参考另一篇文章,Linux走代理
依赖
sudo apt-get install android-tools-fastboot autoconf bison cscope curl flex gdisk libc6:i386 libfdt-dev libglib2.0-dev libpixman-1-dev libstdc++6:i386 zlib1g:i386 netcat python-crypto uuid-dev xz-utils zlib1g-dev python3-serial
sudo dpkg --add-architecture i386
sudo apt install gcc make vim git expect build-essential linux-headers-uname -r
sudo apt-get install android-tools-adb android-tools-fastboot autoconf automake bc bison build-essential cscope curl device-tree-compiler expect flex ftp-upload gdisk iasl libattr1-dev libc6:i386 libcap-dev libfdt-dev libftdi-dev libglib2.0-dev libhidapi-dev libncurses5-dev libpixman-1-dev libssl-dev libstdc++6:i386 libtool make mtools netcat unzip uuid-dev xdg-utils xterm xz-utils zlib1g-dev zlib* libz1:i386
sudo apt-get install android-tools-adb android-tools-fastboot autoconf automake bc bison build-essential cscope curl device-tree-compiler expect flex ftp-upload gdisk iasl libattr1-dev libc6:i386 libcap-dev libfdt-dev libftdi-dev libglib2.0-dev libattr1-dev libncurses5-dev libpixman-1-dev libssl-dev libstdc++6:i386 libtool libz1:i386 make mtools netcat python-crypto python-serial python-wand unzip uuid-dev xdg-utils xterm xz-utils zliblg-dev
sudo apt-get install git
由于参考了好几篇文章,不太记得了,所以都用一遍吧(((
下载OPTEE源码
- 创建存放OPTEE代码的目录
mkdir optee
cd optee
-
git配置
sudo git config --global user.email "you@example.com" sudo git config --global user.name "Your Name"
填上你的github邮箱和id
-
使用repo拉取代码(官方文档就这么做的)
- 下载repo
因为20.04下不能直接
sudo apt install repo
了。所以需要我们自己去安装这里我们直接去找官方文档安装教程:https://source.android.com/source/downloading?hl=zh-cn
确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:
mkdir ~/bin PATH=~/bin:$PATH
下载 Repo 工具,并确保它可执行:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
- 初始化repo
repo init -u https://github.com/OP-TEE/manifest.git -m qemu_v8.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -b 3.8.0
这一步我遇到了不少麻烦,不敢保证我这种方法一定没问题了,如果遇到问题了,读着可以参考我放在参考链接里面的几篇文章
这儿或者后面的repo同步可能遇到一个问题
解决:(即将你的默认python版本改为python3)
sudo apt-get install python-is-python3
- 修改qemu_v8.mk文件
修改
/optee/.repo/manifests/qemu_v8.mk
文件,在每一条project
后面添加语句clone-depth=“1”
,最后的效果如下- repo同步
repo sync -j8
安装工具链
- 手动安装
cd build
sudo make -f toolchain.mk toolchains
这儿由于网速原因可能会失败或很慢很慢,建议手动下载并解压过去
然后在/optee/build/toolchain.mk文件找到对应需要下载的文件,在上面这个链接下载
-
下载完两个安装包后,将其拷贝到toolchains目录下,并解压(没有这个目录,请手动创建,在build的上一层目录创建)
sudo mkdir toolchains cd toolchains sudo mkdir aarch32 sudo mkdir aarch64 sudo tar -xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C aarch32 --strip-components=1 sudo tar -xvf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C aarch64 --strip-components=1
-
然后删除
build/toolchain.mk
中的下面的行:curl -s -L $(2) -o $(TOOLCHAIN_ROOT)/$(3).tar.xz;
-
再次运行(这儿应该是直接执行完没什么反应)
sudo make -f toolchain.mk toolchains
编译OPTEE
-
编译
sudo make -f qemu_v8.mk all
-
issue
- ModuleNotFoundError: No module named ‘Crypto’
sudo pip3 install pycryptodome
- ModuleNotFoundError: No module named ‘elftools’
sudo pip3 install pyelftools
- ModuleNotFoundError: No module named ‘Cryptodome’
sudo pip3 install pycryptodomex
- /bin/sh: line 1: /usr/sbin/iasl: No such file or directory
wget https://acpica.org/sites/acpica/files/acpica-unix-20191018.tar.gz tar zxvf acpica-unix-20191018.tar.gz cd acpica-unix-20191018 sudo make clean && make iasl sudo cp ./generate/unix/bin/iasl /usr/sbin/
- fatal error: openssl/sha.h: No such file or directory
sudo apt-get install libssl-dev
- you should not run configure as root
这个问题就在make的时候加一句话即可
sudo make FORCE_UNSAFE_CONFIGURE=1 -f qemu_v8.mk all
到这儿OPTEE就应该已经成功编译完成了
启动qemu
cd build //切换到build目录
make -f qemu_v8.mk run-only //启动qemu v8并运行OP-TEE
在qemu界面中输入字母“c”回车之后,就会启动两个terminal,一个是normal world的terminal,另外一个是secure world的terminal
参考文章
https://blog.csdn.net/capodexi/article/details/123548850