Skip to content

Java.perform 与 Java 桥接 ​

☕ Frida 在 Android 上操作 Java 层的入口。

Java.perform ​

javascript
Java.perform(function () {
  // 在 Java 上下文里执行 hook 注册
});

Java.perform 确保回调在 Java 上下文执行,是 Android 上 hook Java 方法的前提。r0capture 的所有 Java 层 hook(证书导出、pinning 定位、裸 TCP、Conscrypt 栈)都包在 Java.perform 里。

Java.use ​

javascript
var SocketOutputStream = Java.use("java.net.SocketOutputStream");
SocketOutputStream.socketWrite0.overload('java.io.FileDescriptor', '[B', 'int', 'int')
  .implementation = function (fd, b, off, len) { ... };
  • Java.use("类全名"):获取类引用
  • .overload(参数类型...):选择重载
  • .implementation = function(...) {...}:替换方法实现

frida 17 的桥接变化 ​

frida 17 起 Java 不再内置,需 host 响应 frida:load-bridge。r0capture 用 _FRIDA17_BOOTSTRAP 把 Java 做成懒加载全局对象。详见 frida 17 兼容。

守卫条件 ​

javascript
if (typeof Java !== 'undefined' && Java.available) {
  Java.perform(function () { ... });
}

非 Android 平台(iOS 用 ObjC、桌面无 Java)时 Java 未定义,跳过 Java 块,只保留 Native SSL hook。

相关文档 ​

基于 VitePress 构建 · 教学用途