这篇文章上次修改于 806 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
frida官方建议的编译环境是ubuntu,本文章可能已经过时,仅做参考,请参考官方指南编译
https://frida.re/docs/building/#gnulinux
尝试自行编译frida-inject,除了官方的指南之外,网上很难找到有关文章
折腾了许久,再此做一个记录
- 环境是
kali linux 2020.4
- 用户是
kali
20210510额外补充
使用git am直接patch,然后编译出现错误,可能需要安装lief
注意是python3的库
记录
kali开机后请切换shell为bash
建议将源切换为ustc的源节省流量,缩短时间
必要的时候建议结合proxychains使用
参考官方教程指南
https://frida.re/docs/building/#gnulinux
首先看到这里的Development toolchain
,这是先决条件
其他条件
- x86系统下gcc版本大于7.5
- Node.js
开始准备环境,根据官方指南我们应该编译toolchain
和sdk
一开始我也是一直在尝试编译这俩,最终的成果是
- toolchain按官方命令没啥问题,即下面的命令
sudo apt-get install flex bison
git clone --recurse-submodules https://github.com/frida/frida
cd frida
make -f Makefile.toolchain.mk
- 但是编译sdk的时候就不成功了,总之就是看了log也不知道错误是什么,即下面的命令
make -f Makefile.sdk.mk FRIDA_HOST=linux-x86_64
不过不要灰心,即使编译不出来也没关系,因为官方已经有编译好的toolchain
和sdk
现在假定你不准备编译toolchain
和sdk
那么首先克隆frida项目的代码
git clone --recurse-submodules https://github.com/frida/frida
cd frida
官方toolchain
和sdk
下载地址如下
其中20210123
是frida
中releng/deps.mk
中的frida_deps_version
后面部分则是toolchain-{平台+架构}.tar.bz2
https://build.frida.re/deps/20210123/toolchain-linux-x86_64.tar.bz2
https://build.frida.re/deps/20210123/sdk-linux-x86_64.tar.bz2
https://build.frida.re/deps/20210123/sdk-android-arm.tar.bz2
https://build.frida.re/deps/20210123/sdk-android-arm64.tar.bz2
可以手动下载上面的文件,然后在frida
的文件夹下新建build
文件夹
然后将文件放入build即可
现在执行releng/setup-env.sh
输出大概是下面这样,如果不手动下载,sh脚本以及make的时候似乎也会帮你下载
不过个人认为手动方便一点,因为编译时的网络访问问题真的烦人(省略N字)
Assuming host is linux-x86_64 Set FRIDA_HOST to override.
Deploying local toolchain toolchain-linux-x86_64.tar.bz2...
Deploying local SDK sdk-linux-x86_64.tar.bz2...
然后配置环境,下面是官方的指南
apt-get install build-essential curl git lib32stdc++-9-dev libc6-dev-i386 nodejs npm python3-dev python3-pip
这里追加一点(编译check-core-linux-x86_64
的时候需要)
sudo apt-get install gcc-multilib g++-multilib
然后下载r22版的NDK,并解压
https://dl.google.com/android/repository/android-ndk-r22-linux-x86_64.zip
假定解压后的目录是/home/kali/Desktop/android-ndk-r22
,将其添加到环境变量中
即向当前用户的.bashrc
中写入以下内容,并执行source ~/.bashrc
,当然也可以直接在shell中执行
export ANDROID_NDK_ROOT=/home/kali/Desktop/android-ndk-r22
export PATH=$ANDROID_NDK_ROOT:$PATH
然后执行ndk-build --v
,如果有版本信息输出,说明环境变量配置生效了
记得回到frida文件夹,然后开始编译arm64的frida-server等,直接输make回车则会提示支持的编译
make core-android-arm64
最终的编译产物在frida/build/frida-android-arm64/bin
然后尝试根据大佬的patch修改了一处源代码,再次编译,果然还是有效果的~
不过看起来还有地方需要修改
没有评论