mcpField
F
frida-tracing-discovery

frida-tracing-discovery

github.com/rudra-ravi开发7111 次安装25 周前更新
代码仓库

关于 frida-tracing-discovery

用于发现未知 API、类、符号和调用路径的 Frida 技能。它引导研究者从宽泛边界追踪逐步缩小到精确 Hook,并提供命令行、Android 和原生代码示例。

主要功能

  1. 01由宽泛追踪逐步缩小范围
  2. 02命令行追踪示例
  3. 03发现 Android 方法与类加载器
  4. 04枚举原生库导出符号
  5. 05通过回溯定位调用方

适用场景

  1. 01查找未知 API 的调用路径
  2. 02定位相关 Android 类或方法
  3. 03检查原生库导出符号及调用方

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rudra-ravi/frida-skills --skill frida-tracing-discovery

安装后在 Claude Code 中输入/frida-tracing-discovery确认已加载。

附带文件agents/openai.yamlreferences/discovery-patterns.md

详细介绍

Frida 跟踪发现

当目标 API、类、符号或调用路径未知时,使用此技能。

先广泛探索,再逐步缩小范围

  1. 证明不使用 Frida 时也会发生该行为。
  2. 选择信号最强的边界:网络、加密、文件、IPC、WebView、类加载、原生库加载或 UI 操作。
  3. 围绕该边界进行跟踪或枚举。
  4. 添加堆栈跟踪,以识别应用自身的调用方。
  5. 用范围更窄的 Hook 替换广泛探测。

CLI 跟踪

frida-trace -U -f com.example.app -j 'java.net.URL!*' --no-pause
frida-trace -U -f com.example.app -i 'open' -i 'connect' --no-pause
frida-trace -U -n target -m 'Module!*pattern*'

将生成的处理器视为临时发现产物,然后把已验证的逻辑移入经过审查的脚本。

Android 探索

Java.perform(() => {
  const groups = Java.enumerateMethods("*crypto*!*/isu");
  console.log(JSON.stringify(groups, null, 2));
});

类加载器检查:

Java.perform(() => {
  Java.enumerateClassLoaders({
    onMatch(loader) {
      try {
        Java.classFactory.loader = loader;
        Java.use("com.example.Target");
        console.log("loader", loader);
      } catch (_) {}
    },
    onComplete() {}
  });
});

原生代码探索

const mod = Process.getModuleByName("libtarget.so");
for (const e of mod.enumerateExports()) {
  if (e.name.includes("SSL") || e.name.includes("crypto")) console.log(e.name, e.address);
}

在通用边界上获取回溯:

Interceptor.attach(Module.getGlobalExportByName("open"), {
  onEnter(args) {
    console.log(args[0].readUtf8String());
    console.log(Thread.backtrace(this.context, Backtracer.ACCURATE)
      .map(DebugSymbol.fromAddress).join("\n"));
  }
});

参考资料

阅读 references/discovery-patterns.md,了解针对特定目标的跟踪阶梯。

评论

支持 Markdown