frida - 编译教程 - iyue

  • 当前编译环境: Mac m1 Ubuntu20.04 都可以成功编译 frida git 分支 16.0.7`
  • 下载源码

    • git clone --recurse-submodules https://github.com/frida/frida.git
    • cd frida
    • make
  • 切换需要的分支 当前基于 16.0.7

    • git checkout 16.0.7
    • git submodule update
  • 配置编译环境
  • NDK下载目录 不同分支版本 有不同的ndk 可在源码 查看 或者 根据make后的提示

    • # for linux ubuntu20.04 别更新 别更新 别更新 或者尝试使用docker
    • sudo apt-get install build-essential curl git lib32stdc++-9-dev libc6-dev-i386 nodejs npm python3-dev python3-pip
    • ## 配置NDK目录 ~/.bashrc add
    • export ANDROID_NDK_ROOT=/*your path*/ndk/25.0.8775105
    • # for mac
    • brew install npm
    • ## 配置NDK目录 ~/.zshrc add
    • export ANDROID_NDK_ROOT=/*your path*/ndk/25.0.8775105
    • # all
    • pip install colorama prompt-toolkit pygments
    • # install node
    • npm install npm -g
    • npm install n
    • n install stable
    • npm install frida

    frida - build for Linux

  • linux 没有 证书那一步

    • cd frida && make core-android-arm64

    frida - build for Mac

  • 贴图是我觉得有人可能跟我一样找了半天证书助理在哪里 百度了 都没找到最后乱点才出来的
  • 创建证书
  • 修改证书名称 frida-cert 名称 和 ./build.sh 脚本里写的对应上就可以 不过人家官方推荐的
  • 双击打开 frida-cert设置始终信任
  • 拷贝到系统 删除登录页刚创建的 frida-cert
  • 要确保 macOS 接受新创建的证书,请重新启动任务门控守护进程:

    • sudo killall taskgated
  • build frida module

在frida目录创建编译脚本 build.sh

执行: ./build.sh core-android-arm64

可选参数 不同平台有不同的 生成目标 core-android-arm64 全平台都有

core-android-arm64 core-android-arm core-android-x86_64 core-android-x86

python-macos linux 为 python-linux-x86 || x86_64

tools-macos 同上

  • export MACOS_CERTID=frida-cert
  • export IOS_CERTID=frida-cert
  • export WATCHOS_CERTID=frida-cert
  • export TVOS_CERTID=frida-cert
  • make $1 -j 8
  • 体验一下成功的感觉
  • core-android-arm64
  • python-macos
  • tools-macos

    frida - Build frida whl

  • 创建文件build_frida_python.sh
  • 下载 frida-core-devkit 对应的分支tag 对应版本 对应平台的 frida-core-devkit-16.0.7-android-arm64
  • 使用: ./build_frida_python.sh ./frida-core-devkit/frida-core-devkit-16.0.7-android-arm64重要的事情说三遍
  • 下面脚本使用绝对路径
  • 下面脚本使用绝对路径
  • 下面脚本使用绝对路径

    • set FRIDA=$(pwd) # 根目录 frida 源码的上层目录
    • set FRIDA_VERSION=16.0.7 # from frida-version.h version
    • set FRIDA_EXTENSION=$FRIDA/build/frida-macos-arm64/lib/python3.10/site-packages/_frida.so
    • export FRIDA_CORE_DEVKIT=$FRIDA/frida-core-devkit-16.0.7-android-arm64
    • # 编译可执行文件
    • make tools-macos -j 16
    • make core-android-arm64 -j 16
    • # 编译python 模块 whl 可以使用 pip 安装
    • mkdir dist
    • cd dist
    • pip wheel ../frida-python
    • cd ../frida-tools
    • make # 必须执行不然有几个js 脚本会漏掉
    • cd ../dist
    • pip wheel ../frida-tools

    注意事项

  • 其它版本得注意一下源码中需要的NDK版本 以及 node版本.
  • 期间有大量需要科学的这个只能自己处理了.
  • 想来接下去就是修改特征了,可参考huluw 的patch 和 看雪大佬们总结的frida特征.
  • frida源码使用因为路径否则会出现编码问题.