用途:对目标进程做运行时动态插桩,包括拦截函数(改参数/改返回值)、枚举模块与类、观察调用链、绕过证书校验与 root/越狱检测;覆盖移动端(Android/iOS)与桌面端(Linux/macOS/Windows)。仅需静态分析、系统调用级跟踪或完整调试器体验时不适用。
准备:主机侧 frida-tools 用 pip install frida-tools 安装(Python 3.8+,建议 venv)。移动端需从 GitHub release 下载 frida-server,客户端与 frida-server 至少同 major,推荐版本完全一致且架构匹配。Android 推送启动:adb push frida-server-xxx /data/local/tmp/frida-server,随后 chmod 755 并以 root 运行;iOS 越狱设备经 https://build.frida.re 源安装。objection 需 Python >=3.10,用 python -m pip install -U objection 安装,1.12.x 起 -g/explore 弃用,改用 -n + start。
用法:spawn 用 frida -U -f com.target.app 抓启动早期逻辑,attach 用 frida -U com.target.app 附加运行中进程;frida-trace 可启动即跟踪。hook 用 Java.perform + Java.use 的 implementation 改写;原生函数用 Interceptor.attach 配合 onEnter/onLeave。可枚举已加载类、模块与导出,定位后主动调用方法。证书绕过可自写模板或直接用 objection 的 android/ios sslpinning disable。反检测可改名、换端口并配合 adb forward 与 -H 连接。
限制与注意:客户端与 server 版本不一致会出现协议错误;Frida 17 移除静态 Module 查找/枚举 API,改用模块实例方法;attach 可能错过启动早期逻辑;目标检测 frida、root 检测、强加固、AOT 目标等场景可能导致 hook 不触发或闪退,需逐层应对。测试环境须与环境匹配,动态插桩需原生 ARM,交付验证应使用真机。版本、脚本与对抗细节见相关资料。