經(jīng)常使用Frida的朋友們可能會遇到Frida的各種問題需要自定義的,而這時候Frida的本地編譯就顯得很重要了。
最近一位朋友發(fā)現(xiàn)使用Frida14/15/16版的server只能連拉一定數(shù)量的設(shè)備,超過了frida-device-manager便不能連接設(shè)備。
實現(xiàn)沒有辦法,我只好去修改源碼,然后自己搭建編譯環(huán)境,然后就有了這次的編譯Frida。
一、系統(tǒng)
OS:?Ubuntu22.04LTS
二、相關(guān)資源
參考了別人編譯的文章,也放一些相關(guān)資源鏈接在這里
1.frida源碼
GitHub - frida/frida: Clone this repo to build Frida
2.frida官方文檔
Frida ? A world-class dynamic instrumentation toolkit | Observe and reprogram running programs on Windows, macOS, GNU/Linux, iOS, watchOS, tvOS, Android, FreeBSD, and QNX
3.frida編譯篇
Building | Frida ? A world-class dynamic instrumentation toolkit
三、系統(tǒng)應(yīng)用安裝
在編譯環(huán)境部署前,系統(tǒng)也需要安裝一些應(yīng)用,比如git, curl, 也相當(dāng)于是一些常用的應(yīng)用,一般開發(fā)人員的電腦上,這些應(yīng)用應(yīng)該不會沒有。
還有一點就是必要的時候,需要科學(xué)上網(wǎng)。
這里不再多講,直接上重點吧。
四、源碼和環(huán)境部署
1、拉取Frida源碼
git clone --recurse-submodules https://github.com/frida/frida
或者
git clone --recurse-submodules https://github.com/frida/frida.git
注意: 這樣拉取的是Frida當(dāng)前最新版本的源碼,如果需要編譯的是歷史版本,需要再用git同步到歷史
git checkout 15.2.2 #切換tag
git submodule update --recursive #其他子模塊也跟著一起更新下
或者使用commit 3ff85a5
比如Frida 15.2.2的commit為 3ff85a5
git checkout 3ff85a5
git submodule update --recursive
2、node/npm版本
雖然frida的作者推薦新版本的nodejs和npm,尤其是v20和更新版本,但每一個版本的frida release都會有固定版本的nodejs,如果想要不出錯,還是建議使用release版本中的node版本
其中node版本和NODE_MODULE_VERSION對照表可以網(wǎng)上查詢
而我本次編譯,采用的是108對應(yīng)的v18.12.0。
nodejs歷史版本下載:?Index of /download/release/
設(shè)置環(huán)境變量:
# set node
export NODE_HOME=/home/ubuntu/work/node-v18.12.0-linux-x64
export PATH=$PATH:${NODE_HOME}/bin
驗證環(huán)境變量設(shè)置:
注意:設(shè)置環(huán)境變量的方便有三種,分別是設(shè)置 ~/.bashrc, /etc/profile, /etc/environment。第一種只適用于當(dāng)前登錄用戶,第二種和第三種會保存給所有用戶。
細(xì)節(jié)可以網(wǎng)上搜索,很多文章。
3、安卓NDK
關(guān)于安卓NDK的版本,不同的Frida也會有不同的要求,具體的版本在你的Frida源碼目錄:/frida/releng/setup-env.sh。
打開文件,即可以找到。
下載地址:https://developer.android.com/ndk/downloads?hl=zh-cn
然后設(shè)置NDK的環(huán)境變量
#set NDK env
export NDK_HOME=/home/ubuntu/work/android-ndk-r24
export PATH=$NDK_HOME:$PATH
驗證NDK環(huán)境變量:
4、python環(huán)境
Frida要求python3環(huán)境,而Ubuntu一般會自帶python3, 比如我的就是python3.10。而且Frida編譯會自動使用"python3"來調(diào)用python3。
系統(tǒng)沒有安裝的,或者版本不對的,可以自行安裝。
5、安卓SDK安裝。
目前安裝安卓SDK的方法還是用android-studio靠譜,也簡單。
然后設(shè)置SDK的環(huán)境變量
#set sdk
export ANDROID_SDK_HOME=/home/ubuntu/Android/Sdk
export PATH=$PATH:${ANDROID_SDK_HOME}/tools
export PATH=$PATH:${ANDROID_SDK_HOME}/build-tools/29.0.0
export PATH=$PATH:${ANDROID_SDK_HOME}/platform-tools
驗證SDK變量設(shè)置成功:
6、JDK環(huán)境
JDK使用1.8,相信只要做開發(fā)的人都會部署。
這里有一個問題就是很多人電腦上有多個java環(huán)境,怎么把jdk8變成首選的環(huán)境變量呢:
sudo update-alternatives --config java
五、toolchain和sdk下載
個人推薦使用Frida的自動下載。
自動下載:
運行
make -f Makefile.skd.mk FRIDA_HOST=android-arm64
frida會自動同步toolchain和sdk, 這一步可能會需要很久。
六、開始編譯
輸入命令
make -f Makefile.linux.mk
可以看到各個版本的編譯命令:
然后輸入命令:
make core-android-arm64
文章來源:http://www.zghlxwxcb.cn/news/detail-825178.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-825178.html
到了這里,關(guān)于Ubuntu22.04LTS編譯Frida歷史版本,環(huán)境配制及細(xì)節(jié)調(diào)整的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!