这篇文章上次修改于 825 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

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

开始准备环境,根据官方指南我们应该编译toolchainsdk

一开始我也是一直在尝试编译这俩,最终的成果是

  • 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

不过不要灰心,即使编译不出来也没关系,因为官方已经有编译好的toolchainsdk

现在假定你不准备编译toolchainsdk

那么首先克隆frida项目的代码

git clone --recurse-submodules https://github.com/frida/frida
cd frida

官方toolchainsdk下载地址如下

其中20210123fridareleng/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修改了一处源代码,再次编译,果然还是有效果的~

不过看起来还有地方需要修改

参考