用途:在 Android 应用上创建与调试 Frida Hook,适用于插桩 Java、Kotlin 与 JNI 行为。
主要能力:涵盖 Java.perform 内 Hook、方法重载显式解析、通过 $init 挂接构造函数、类加载器排查与切换(Java.classFactory.loader)、Kotlin 伴生类/合成方法/默认参数辅助方法/混淆名处理、JNI 与 native 桥接到 frida-native-hooks、TLS/证书固定路径识别(OkHttp/CertificatePinner、TrustManager、Conscrypt、WebView、Flutter/BoringSSL 或原生自定义校验)、spawn 早期初始化与 Gadget。附带 Java.enumerateMethods、Java.enumerateClassLoaders 等发现片段。
使用方式:先校验主机与设备版本一致:frida --version;adb shell /data/local/tmp/frida-server --version;frida-ps -Uai。早期初始化用 spawn:frida -U -f com.example.app -l agent.js --no-pause;启动后可达行为用 attach:frida -U -n com.example.app -l agent.js。除仅使用 native API 外,始终在 Java.perform() 内 Hook;重载须显式指定,不要依赖有歧义的方法名;构造函数用 $init 挂接。
适用场景:混淆代码优先 Hook 有意义的平台边界(URL/请求构建器、JSON 解析、Base64、加密、SharedPreferences、keystore、文件 I/O、WebView、类加载与 native 库加载);类延迟出现时 Hook 反射与动态加载(Class.forName、ClassLoader.loadClass、DexClassLoader、PathClassLoader、Runtime.loadLibrary*);在高信号 Hook 上记录 Java 堆栈以定位应用侧调用者。
限制与注意:避免盲目的 mega-script 作为最终答案,先用其暴露检查,再保留最小 Hook 只改变目标行为。公开绕过片段仅作侦察,不是最终证明;替换信任决策前先记录输入输出,并保留证据(被 Hook 类、堆栈、端点、证书或哈希、应用版本)。字节数组须谨慎转换,二进制加密材料通常不是文本,仅在有效时打印十六进制与 UTF-8/ASCII。native 方法需先定位已加载的 .so 与 JNI 符号再桥接。参考文档见 references/android-patterns.md。