macOS 平台编译最新版 Frida16.6.6 保姆级教程
大家好,今天给大家带来 macOS 平台的最新版 Frida 16.6.6 编译教程,先尝试编译原版的 Frida,原版编译完成后,大家就可以自行对 Frida 的源码进行魔改了。
环境准备
最新版本的 Frida 已经改用了meson 编译系统,之前的好多教程都失效了,而且 Frida 官方的编译教程使用的 Ubuntu,给的命令太简单了,好多依赖没有提到,为了能自己魔改 Frida,记录一下自己配置环境的过程。
编译设备
本次编译使用我自己的 MacBook Pro,macOS 15.3.1 版本,截止到目前最新的系统版本。
编译环境
准备一个干净的系统,如果你的系统安装过其他的软件,也没事,重复安装理论上来说不会影响,并且后面用到的软件都会用到版本管理工具,多个版本之间不会互相影响。不过这里要提示一句,由于每个人的系统环境不一样,某些设置可能会影响你现有的软件或者开发环境,建议在操作前进行备份。
网络环境
注意:以下安装流程请保证自己有一个良好的网络环境,否则可能会出现莫名其妙的的报错或者安装命令卡住不动的问题。
安装 homebrew
homebrew 简称 brew
,是 macOS 上的包管理工具,和 Linux 发行版中的 apt
、yum
类似,用于安装需要的依赖包,并且自动解决依赖关系。因为后续依赖很多都需要使用 brew
来安装,所以首先需要安装 brew
,使用官方的安装命令:
1 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
输入你的账户密码,然后会输出 brew
默认的安装位置,如果不需要自定义的话,直接输出回车默认,我这里就默认了,输入回车。
注意这里,它会自动下载安装 Command Line Tools for Xcode 工具,这是一个 macOS 系统上面的开发工具包,里面包括了编译、调试、代码管理和系统开发所需的核心工具和库,例如各种编译器、构建工具、调试工具、需要的脚本语言等。
出现这个提示就是安装完成了,注意看最后几行,别忘了执行下面的几行命令,将 brew
添加到环境变量中,并且自动执行初始化脚本。
1 | echo >> /Users/a/.zprofile |
依次执行上面的脚本,然后执行 brew
试试看能输出帮助内容就算是安装完成了。
出现上面的提示就是安装完成了。
安装 Git
安装好 brew
后,安装 Git。命令:
1 | brew install git |
到这里就安装好了。
安装 pyenv
接下来使用 brew
安装 pyenv
,用于管理 Python 版本。
1 | brew install pyenv |
到这里就安装好了。
安装 xz
这里要注意提前安装 xz
,不然在使用 Python 编译的时候会报错 lzma
找不到。
1 | brew install xz |
这样就安装好了,如果忘记安装 xz
也没关系,报错的时候可以安装好 xz
后重新安装 Python,它检测到 xz
后会自动将 lzma
支持编译进去。
别忘了将 pyenv
的环境变量添加到 zsh
的配置文件,这样 pyenv
的设置才能生效。
安装 Python3
安装好 xz
以后,就可以使用 pyenv
来安装 Python3 了。
1 | pyenv install 3.11.11 |
编译后将 Python3.11 设置为全局可用即可。
安装 nvm
安装 nvm
用来管理 nodejs
版本。
安装好了以后,按照脚本的提示,将以下内容放到 .zprofile
文件中
1 | export NVM_DIR="$HOME/.nvm" |
放好了应该是这样的:
然后 nvm
就可以使用了,接下来安装 nodejs
20.18.3 版本。
安装好以后会自动将其设置为默认版本。
安装 sdkmanager
安装 ndk
要先安装 sdkmanager
,sdkmanager
从官网可以下载到安装包,使用如下命令:
1 | curl https://dl.google.com/android/repository/commandlinetools-mac-11076708_latest.zip?hl=zh-cn -o commandlinetools.zip |
并且将解压后的文件都放到 /opt/sdkmanager/android-sdk/cmdline-tools/latest/
这个目录下,目录不存在的话要新建一个目录。
操作 opt
目录要使用 root
权限,然后将所有的文件移动过去,并且添加环境变量。
发现还缺失 Java 环境,下面来安装 Java 环境。
安装 Java
直接使用 brew
安装:
1 | brew install java |
安装好以后,别忘了将 jdk
的路径添加到环境变量中,然后 sdkmanager
应该就可以正常使用了。
安装 ndk
ndk
要安装 25 版本, 因为 Frida16 版本只支持这个,可以使用 sdkmanager
直接安装,先使用 --list
命令列出所有的可用安装项,再找到 ndk
的 25 版本,然后安装。sdkmanager
的安装命令比较特殊,要使用引号扩起来。
1 | sdkmanager "ndk;25.2.9519653" |
如果需要同意协议,填写 y
同意,如果遇到权限问题,使用 root
权限即可解决,因为 sdkmanager
安装到了 opt
目录,所以权限可能不够,等待下载完成,ndk
比较大。
编译 Frida
ndk
安装完成后,环境准备工作基本上就结束了,现在开始下载 Frida 源码,然后更新所有 submodules
的源码。我这里使用了截止到当前最新的 Frida16.6.6。
1 | git clone --recurse-submodules https://github.com/frida/frida.git |
开始编译
现在开始编译,我们先使用默认配置,编译一下 Android 版本。在配置命令中,会自动下载 AndroidSDK 相关的依赖和工具链,这里稍等一下。
1 | ./configure --host=android-arm64 |
添加 ndk 环境变量
下载完成后会提示要设置 ndk
的路径,这里根据提示配置一下。
配置完别忘了 source
执行一下,然后重新执行 config
命令。
已经生成了针对 Android arm64
的构建文件,接下来直接 make
编译即可。
编译完成
稍微等待一下即可编译完成,生成的 server
可执行文件在:frida/build/subprojects/frida-core/server/frida-server
这个路径中。
校验编译结果
先将原有的 Frida 停止, 将我们新编译好的 Frida 使用 adb
发送到手机上,并且给可执行权限,执行一下。命令如下:
1 | adb push frida-server /sdcard/ |
使用之前的 APP4 的 frida
脚本尝试一下能否过掉 SSL Pining。
1 | frida -f com.goldze.mvvmhabit -l code.js -H 192.168.31.122:27042 |
经过测试,可以正常过掉 SSL Pining,并且正确的执行了 hook
脚本。
总结
到此,就完成了 frida server
的完整编译流程,为后续的魔改 frida
做好了准备。
本文章首发于个人博客 LLLibra146’s blog
本文作者:LLLibra146
更多文章请关注公众号 (LLLibra146):
版权声明:本博客所有文章除特别声明外,均采用 © BY-NC-ND 许可协议。非商用转载请注明出处!严禁商业转载!