準備工作
Ubuntu20(WSL)
略
安裝依賴
sudo apt update
sudo apt-get install build-essential git lib32stdc++-9-dev libc6-dev-i386 -y
nodejs
去官網[1]下載nodejs,版本的話我就選的20.15.1:
tar -xf node-v20.15.1-linux-x64.tar.xz
下載原始碼
git clone -b 15.1.28 --recurse-submodules https://github.com/frida/frida
cd frida
ndk
frida各個版本需要的ndk版本都不一樣,可以透過cat releng/setup-env.sh |grep ndk
檢視
https://github.com/android/ndk/wiki/Unsupported-Downloads
開始編譯
為了方便先寫個env15.sh
的指令碼,然後執行source env15.sh
,這樣不會汙染全域性環境,如果你想編譯frida16的話,再寫個env16.sh
。
export ANDROID_NDK_ROOT=/home/kanade/android-ndk-r24
export NODE_HOME=/home/kanade/node-v20.15.1-linux-x64
export PATH=${NODE_HOME}/bin:$ANDROID_NDK_ROOT:$PATH
開始編譯:make core-android-arm64
,會先下載toolchain和sdk。
然後就一直卡在這裡,這種沒有佔用CPU的卡住一般都是網路原因
所以在env15.sh
加個設定代理的命令:
export https_proxy="http://192.168.31.25:7890"
export http_proxy="http://192.168.31.25:7890"
重新編譯:make core-android-arm64
,等待個兩三分鐘就編譯完成了:
構建好的檔案在build/frida-android-arm64/bin
想編譯其他平臺的話,可以輸入make
先檢視所有的平臺,選擇需要編譯的平臺
測試
將frida-server推送到手機試試,執行沒問題就不測試指令碼了
編譯toolchain和sdk
這個一般不用操作,當你使用make編譯時,如果不存在預設會下載編譯好的,這裡就只是提一下。
編譯toolchain:proxychains make -f Makefile.toolchain.mk
解決方法[2]: sudo apt install m4 -y
編譯sdk:proxychains make -f Makefile.sdk.mk FRIDA_HOST=linux-x86_64
這個不顯示具體的錯誤,看Makefile.sdk.mk
的282行也看不出什麼貓膩,但可以知道的是在構建gn的時間出錯的。所以可以看一下gn的構建日誌,先找一下日誌所在路徑,tree -NCfhl |grep build.log
檢視這個檔案發現是python命令沒找到,看了下確實沒有,因為現在Ubuntu自帶的是python3,之前從Makefile.sdk.mk
裡看到執行的是deps/gn/build/gen.py
這個python程式碼,開啟檔案確認下是支援python3的語法,所以做個軟連結應該就可以: sudo ln -s /usr/bin/python3 /usr/bin/python
。
執行sudo releng/setup-env.sh
載入編譯好的toolchain和sdk
編譯其他版本
git checkout 16.1.4
git submodule update
然後將ndk版本切換到25,接著就可以開始編譯了。
make clean
make core-android-arm64
編譯低版本
編譯更低版本時(14.2.2
),除了上面的操作,還需要建立一個build/frida-version.h
檔案,寫入以下內容
#ifndef __FRIDA_VERSION_H__
#define __FRIDA_VERSION_H__
#define FRIDA_VERSION "14.2.2"
#define FRIDA_MAJOR_VERSION 14
#define FRIDA_MINOR_VERSION 2
#define FRIDA_MICRO_VERSION 2
#define FRIDA_NANO_VERSION 0
#endif
不然會出現下面的錯誤:
其實還是一個版本一個目錄檔案比較好,不然每次編譯都要刪除toolchain和sdk重新下載。
下一篇文章說一下怎麼魔改frida去特徵,不過現在很多APP和殼的檢測都比較嚴格了,去特徵的frida也可能過不了檢測,還得自己能會找監測點去過檢測。
引用連結
- [1]
https://nodejs.org/zh-cn/download/prebuilt-binaries
- [2]
https://github.com/conan-io/conan-center-index/issues/8639
參考連結
https://mp.weixin.qq.com/s/4MOTfYm-GMpZQFsLKOOHwQ
本文由部落格一文多發平臺 OpenWrite 釋出!