Loading... <div class="tip inlineBlock success"> 看雪同步: https://bbs.pediy.com/thread-269889.htm </div> <div class="tip inlineBlock warning"> 本文基于ubuntu 21.04操作 </div> <div class="tip inlineBlock info"> frida 将默认分支从 master 切换到 main,如果编译出现 ``` make[1]: *** No rule to make target '.git/refs/heads/master', needed by 'build/frida-version.h'. Stop. ``` 参考此commit:https://github.com/frida/frida/commit/e4c6a1e646666284ea77c36d61f20558504847b5 </div> ## 1. 搭建编译环境 ### 1.1 Install dependencies ```bash sudo apt update sudo apt-get install build-essential tree ninja-build gcc-multilib g++-multilib lib32stdc++-9-dev flex bison xz-utils ruby ruby-dev python3-requests python3-setuptools python3-dev python3-pip libc6-dev libc6-dev-i386 -y sudo gem install fpm -v 1.11.0 --no-document python3 -m pip install lief ``` ### 1.2 Setup ndk ndk版本与你想要编译的版本相关,在其`/releng/setup-env.sh`注明了需要的NDK版本  这里以最新版的frida ndk依赖22 进行 ndk下载网址:https://developer.android.com/ndk/downloads?hl=zh-cn ```bash wget https://dl.google.com/android/repository/android-ndk-r22b-linux-x86_64.zip unzip android-ndk-r22b-linux-x86_64.zip ``` ```bash sudo mv android-ndk-r22b /opt/ #add env variables export ANDROID_NDK_ROOT='/opt/android-ndk-r22b' ``` ### 1.3 Setup nodejs https://github.com/nvm-sh/nvm ```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash # install node 10 nvm install 10 ``` ## 2. 编译frida ### 2.1 最新版 当前最新版本是:15.1.5 ```bash git clone --recurse-submodules https://github.com/frida/frida ``` Apply hluda patch ```bash git clone https://github.com/AAAA-Project/Patchs.git cd frida/frida-core/ git am ../../Patchs/strongR-frida/frida-core/*.patch # 回到frida 根目录 cd .. ``` 编译: 编译时会自动下载 对应的toolchain和sdk。 ```bash make core-android-arm make core-android-arm64 make core-android-x86 make core-android-x86_64 ``` when compile completed, into `build/frida-android-arm/bin` ,you will see:  ### 2.2 老版本 看了看[Patchs](https://github.com/AAAA-Project/Patchs)的commit message、时间,基本就能知道commit对应的patch,对应哪些版本:  看看编译14.2.12怎么弄 ```bash git clone --recurse-submodules https://github.com/frida/frida.git cd frida git checkout 14.2.12 ``` 这里有个坑,当checkout的时候,仅frida这个仓库回滚到14.2.12,其中的submodule 依然是最新的,要让所有submodule也是14.2.12时的版本才行: ```bash git submodule update --recursive ``` 检查一下需要的ndk版本,依然是22:  checkout Patchs 到 14.2.12:  ```bash git checkout 8e1308b ``` Apply hluda patch: ```bash cd frida/frida-core git am ../../Patchs/strongR-frida/frida-core/*.patch ``` check一下,没报错就行。 接下来和之前的编译步骤一样 ```bash cd frida make core-android-arm make core-android-arm64 make core-android-x86 make core-android-x86_64 ```  --- Git History - https://githistory.xyz/ 在某些情况下确实有用:  --- 参考: 1. hluwa - [actions build.xml](https://github.com/lushann/strongR-frida-android/blob/main/.github/workflows/build.yml) 最后修改:2022 年 01 月 01 日 © 允许规范转载 赞 1 如果觉得我的文章对你有用,请随意赞赏