工作目錄在 `~/Projects/frida` 1. 下載NDK [[25以後舊版](https://github.com/android/ndk/wiki/Unsupported-Downloads)],[[最新版](https://developer.android.com/ndk/downloads?hl=zh-tw)] ```bash mkdir -p Android && cd Android mkdir -p Ndk && cd Ndk wget https://dl.google.com/android/repository/android-ndk-r25c-linux.zip unzip android-ndk-r25c-linux.zip rm android-ndk-r25c-linux.zip #frida 只支援25版本) ``` 2. 設定 ANDROID_NDK_ROOT ```bash vim ~/.bashrc #加入 export ANDROID_NDK_ROOT=$HOME/Android/Ndk/android-ndk-r25c source ~/.bashrc ``` 3. 安裝編譯套件 ```bash sudo apt-get install build-essential curl git lib32stdc++-9-dev \ libc6-dev-i386 nodejs npm python3-dev python3-pip #sudo apt-get install npm #sudo apt install python3-pip #pip3 install colorama prompt-toolkit pygments #sudo apt-get install gcc-multilib g++-multilib #sudo -H pip3 install meson ninja #sudo apt install gcc g++ #原fedora的 #meson通过pkg-config找到系统自带的libffi库的, 因此需要先安装pkg-config #sudo apt install pkg-config #让meson找到系统自带的libffi,而不是去编译/frida-home/frida/frida-gum/subprojects/libffi/ #sudo apt install libffi8 libffi-dev -y 4. 安装nodejs环境,由于这里使得 frida-gum默认编译gumjs,因此需要安装nodejs环境 ```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash source ~/.bashrc ``` 5. 用nvm安装nodejs ```bash nvm ls-remote nvm install v18.18.2 nvm use v18.18.2 which node #/root/.nvm/versions/node/v14.17.1/bin/node which npm #/root/.nvm/versions/node/v14.17.1/bin/npm ``` 6. 抓程式碼 由於包含多項模組所以建議用git參數submodules全部抓取 ```bash git clone --recurse-submodules https://github.com/frida/frida.git ``` 7. 編譯 ```bash make #查看編譯項目 # 編譯gum hook框架 make gum-android-arm # arm架構 make gum-android-arm64 # arm64架構 # 編譯主要程式 gum-graft、frida-server、frida-protal、frida-inject make core-android-arm make core-android-arm64 ``` > 編譯結果預設都在./firda/build/frida-android-XXXX/bin 路徑下。(XXXX CPU架構) - frida-gadget.so 路徑 ./firda/build/frida-android-arm/lib/frida/32/frida-gadget.so ./firda/build/frida-android-arm64/lib/frida/64/frida-gadget.so
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up