Frida源码编译历史版本

之前为了体验一把魔改Frida过检测,自己手动测试了,都是坑只能说。

编译环境:Ubuntu 22.04.5 LTS

下载连接:https://www.releases.ubuntu.com/22.04/

PS:基于全新Ubuntu 环境、需要外网。编译Frida或Magisk建议用干净的环境。

安装Proxychains

代理软件用的是 hiddify,用其他V2等都可以

1
sudo apt install libfuse2
1
2
sudo apt-get install proxychains
sudo gedit /etc/proxychains.conf
1
2
3
sudo apt-get install curl
// 验证代理IP
proxychains curl www.httpbin.org/ip

修改桌面为Desktop

PS:需要修改默认的桌面为Desktop,不然配置环境变量有问题

1
2
3
4
5
gedit ~/.config/user-dirs.dirs
修改 XDG_DESKTOP_DIR="$HOME/桌面" 为 XDG_DESKTOP_DIR="$HOME/Desktop"
mv ~/桌面 ~/Desktop
xdg-user-dirs-update
重启

如果是拉源码后再改桌面名,需要重新拉一次源码

安装依赖&拉取源码

1
sudo apt install git

安装vscode

下载deb包

https://code.visualstudio.com/Download

1
2
3
sudo dpkg -i vscode.deb
// 打开vscode
code .

安装依赖

1
proxychains sudo apt-get install build-essential curl git lib32stdc++-9-dev libc6-dev-i386

拉取源码

我这里编译的Frida的历史版本16.2.1,默认拉取的最新的版本

1
proxychains git clone -b 16.2.1 --recurse-submodules https://github.com/frida/frida

编译前置(踩坑)

1
sudo apt install m4

先直接编译,这一步是为了生成build文件夹,后续手动下载后好替换

1
proxychains make -f Makefile.toolchain.mk

SDK下载

查看当前Frida对应的SDK版本目录下

1
2
cd releng
cat deps.mk | head -n 10 #查看deps.mk的前10行,版本是 20240123

下载sdk,下载到 frida目录/build,建议把下载的先备份,防止操作失误,其他版本记得替换版本号

1
2
3
sudo wget https://build.frida.re/deps/20240123/toolchain-linux-x86_64.tar.bz2
sudo wget https://build.frida.re/deps/20240123/sdk-linux-x86_64.tar.bz2
sudo wget https://build.frida.re/deps/20240123/sdk-android-arm64.tar.bz2

刷新 env

1
2
# /frida目录下执行
./releng/setup-env.sh

NDK下载

手动下载需要的ndk版本,查看frida对应的版本,可随意下载目录,环境变量指定路径

1
2
cd releng
cat setup-env.sh | grep ndk

下载ndk官网地址:https://developer.android.com/ndk/downloads?hl=zh-cn,具体名字看官网

1
2
proxychains wget https://dl.google.com/android/repository/android-ndk-r25c-linux-x86_64.zip
unzip xxx

配置ndk路径

1
2
3
4
sudo gedit ~/.bashrc
export ANDROID_NDK_ROOT=/XXX/XXX/android-ndk-r25c
export PATH=$ANDROID_NDK_ROOT:$PATH
ndk-build -v

Nodejs和Npm下载

虽然Froda的作者推荐新版本的nodejs和npm,但每一个版本的frida release都会有固定版本的nodejs,如果想要不出错,还是建议使用release版本中的node版本。

https://nodejs.org/zh-cn/about/previous-releases

本次编译,采用的是108对应的v18.12.0。大概是18版本都可以

nodejs历史版本下载: Index of /download/release/

1
2
3
4
sudo gedit ~/.bashrc
# set node
export NODE_HOME=/home/ubuntu/work/node-v18.12.0-linux-x64
export PATH=$PATH:${NODE_HOME}/bin

通过哪种方式装Nodejs都行

编译

1
2
3
4
#编译
make core-android-arm64
#生成路径如下
frida/build/tmp-android-arm64/frida-core/server

注意注意:执行make clean时候会把自建的其他文件删除,例如python

魔改Frida参考

https://github.com/hluwa/Patchs/tree/master/strongR-frida/frida-core