手动编译Hluda Frida Server
原文地址 https://bbs.kanxue.com/thread-269889.htm
本文基于ubuntu 21.04操作
frida 将默认分支从 master 切换到 main,如果编译出现
1
|
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
1. 搭建编译环境
1.1 Install dependencies
1
2
3
4
5
|
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
1
2
|
wget https: / / dl.google.com / android / repository / android - ndk - r22b - linux - x86_64. zip unzip android - ndk - r22b - linux - x86_64. zip |
1
2
3
4
|
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
1
2
3
4
|
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
1
|
git clone - - recurse - submodules https: / / github.com / frida / frida |
Apply hluda patch
1
2
3
4
5
6
7
8
|
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。
1
2
3
4
|
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的commit message、时间,基本就能知道commit对应的patch,对应哪些版本:
看看编译14.2.12怎么弄
1
2
3
|
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时的版本才行:
1
|
git submodule update - - recursive |
检查一下需要的ndk版本,依然是22:
checkout Patchs 到 14.2.12:
1
|
git checkout 8e1308b |
Apply hluda patch:
1
2
|
cd frida / frida - core git am .. / .. / Patchs / strongR - frida / frida - core / * .patch |
check一下,没报错就行。
接下来和之前的编译步骤一样
1
2
3
4
5
6
|
cd frida make core - android - arm make core - android - arm64 make core - android - x86 make core - android - x86_64 |
Git History - https://githistory.xyz/ 在某些情况下确实有用:
参考:
- hluwa - actions build.xml
[培训]科锐逆向工程师培训 48期预科班将于 2023年10月13日 正式开班