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源码使用因为路径否则会出现编码问题.