Source profileQuality 70/100Review permissions

gadievron/raptor/.claude/skills/frida/SKILL.md

frida

Dynamic instrumentation via Frida - attach to or spawn a process, load a JS hook script, capture send() events into a lifecycle-managed run directory. Supports local, USB-attached, and remote frida-server targets.

Source repository stars
3,413
Declared platforms
0
Static risk flags
1
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

Hook a target at runtime to confirm LLM-flagged sinks actually execute, trace API calls, bypass SSL pinning, scan memory for secrets.

Best for

  • /scan or /agentic flagged a sink and you want to confirm it fires at runtime before treating it as exploitable.
  • A binary or mobile app is doing something opaque and a few minutes of API-trace would reveal the shape.
  • A pinned mobile app is blocking your MITM proxy.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/gadievron/raptor --skill ".claude/skills/frida"
Safe inspection promptEditorial

Inspect the Agent Skill "frida" from https://github.com/gadievron/raptor/blob/e63c1b0ae449516f50ab510226ceb09a0edb3895/.claude/skills/frida/SKILL.md at commit e63c1b0ae449516f50ab510226ceb09a0edb3895. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Bypass SSL pinning on a USB-attached mobile target. Spawn by bundle id (frida resolves bundle ids for spawn); attach-by-name needs the running process's name, not the bundle id, so --spawn is the reliable form.

    raptor frida --target com.example.app --template ssl-unpin --usb --spawn --duration 120

    raptor frida --target com.example.app --template ssl-unpin --usb --spawn --duration 120
  2. 02

    When to use

    /scan or /agentic flagged a sink and you want to confirm it fires at runtime before treating it as exploitable.

    /scan or /agentic flagged a sink and you want to confirm it fires at runtime before treating it as exploitable.A binary or mobile app is doing something opaque and a few minutes of API-trace would reveal the shape.A pinned mobile app is blocking your MITM proxy.
  3. 03

    Install

    For remote / mobile targets, install the matching frida-server on the target side. See docs/frida.md. Note: most frida-server binaries bind to 127.0.0.1 by default - start with -l 0.0.0.0:27042 or SSH-forward port 27042.

    For remote / mobile targets, install the matching frida-server on the target side. See docs/frida.md. Note: most frida-server binaries bind to 127.0.0.1 by default - start with -l 0.0.0.0:27042 or SSH-forward port 27042.
  4. 04

    Invocation

    The slash command surfaces the libexec wrapper; run it as Bash. Lifecycle (output dir, run state) is handled by the wrapper.

    The slash command surfaces the libexec wrapper; run it as Bash. Lifecycle (output dir, run state) is handled by the wrapper.Equivalent CLI without a Claude session: raptor frida ....
  5. 05

    Templates

    Operator-supplied scripts via --script ./hook.js - same send(...) capture path.

    Operator-supplied scripts via --script ./hook.js - same send(...) capture path.

Permission review

Static risk signals and limitations

Runs scripts

medium · line 15

The documentation asks the agent to run terminal commands or scripts.

pipx install frida-tools # host CLI + python bindings

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score70/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars3,413SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
gadievron/raptor
Skill path
.claude/skills/frida/SKILL.md
Commit
e63c1b0ae449516f50ab510226ceb09a0edb3895
License
NOASSERTION
Collected
2026-07-28
Default branch
main
View the original SKILL.md

Frida - dynamic instrumentation (alpha)

Hook a target at runtime to confirm LLM-flagged sinks actually execute, trace API calls, bypass SSL pinning, scan memory for secrets.

When to use

  • /scan or /agentic flagged a sink and you want to confirm it fires at runtime before treating it as exploitable.
  • A binary or mobile app is doing something opaque and a few minutes of API-trace would reveal the shape.
  • A pinned mobile app is blocking your MITM proxy.
  • A crash you can't rr-record (macOS) needs a function-call trace.

Install

pipx install frida-tools                       # host CLI + python bindings
raptor doctor                                  # confirms frida is detected

For remote / mobile targets, install the matching frida-server on the target side. See docs/frida.md. Note: most frida-server binaries bind to 127.0.0.1 by default - start with -l 0.0.0.0:27042 or SSH-forward port 27042.

Invocation

The slash command surfaces the libexec wrapper; run it as Bash. Lifecycle (output dir, run state) is handled by the wrapper.

libexec/raptor-frida --target <pid|name|bundle-id|binary>
                     (--template <name> | --script <path>)
                     [--host HOST[:PORT]] [--usb]
                     [--duration N] [--spawn] [--unsafe-attach]

Equivalent CLI without a Claude session: raptor frida ....

Templates

raptor frida --list-templates
NamePurpose
api-traceHooks open/read/write/connect/fork/execve etc. Most useful default.
ssl-unpinBypasses iOS/macOS Security.framework, OpenSSL SSL_get_verify_result, and Android X509TrustManager.

Operator-supplied scripts via --script ./hook.js - same send(...) capture path.

Examples

# Trace API calls in a local PID for 30s
raptor frida --target 1234 --template api-trace --duration 30

# Spawn a binary and watch its first minute
raptor frida --target ./victim --template api-trace --duration 60

# Bypass SSL pinning on a USB-attached mobile target. Spawn by bundle id (frida resolves bundle ids for spawn); attach-by-name needs the running process's name, not the bundle id, so --spawn is the reliable form.
raptor frida --target com.example.app --template ssl-unpin --usb --spawn --duration 120

# Connect to remote frida-server
raptor frida --target target-proc --host 10.10.20.1 --template api-trace

# Operator-supplied hook
raptor frida --target Safari --script ./my-hook.js --duration 30

Output layout

<run-dir>/
  events.jsonl       # one JSON object per send() from the script
  metadata.json      # target, host info, timings, errors
  script.js          # copy of the script that ran
  frida-report.md    # short human-readable summary

<run-dir> is resolved by libexec/raptor-run-lifecycle:

  • Active /project: out/projects/<name>/frida-<timestamp>/
  • Otherwise: out/frida_<timestamp>/

Failure modes (read metadata.json first)

Error fragmentLikely cause
ptrace deniedLinux kernel.yama.ptrace_scope ≥ 1. Lower it or spawn-and-attach.
task_for_pidmacOS hardened-runtime target or system process - needs SIP-disabled or signed-with-get-task-allow.
unable to connect to remote frida-serverTarget not running, or bound to localhost only. SSH-forward 27042 or rebind.
frida-python not installedpipx install frida-tools.

Threat model

Frida-instrumented targets are untrusted - that's the whole point. The runner is wrapped in core.sandbox.run() with the frida profile (ptrace allowed, skip_pid_ns=True for /proc access, restrict_reads=True, fake_home=True):

  • Spawn mode (--target ./binary): block_network=True — the target can't reach out.
  • Attach mode (--target <pid|name>): network untouched — the process is already running with whatever connectivity it needs.
  • --unsafe-attach: sandbox bypassed entirely (system processes, SIP targets). Logged in metadata.json.

Pipeline integration

Frida output is automatically consumed by downstream pipelines when evidence exists in the run directory:

ConsumerWhat it readsWhat it produces
/agentic reachability prepassevents.jsonl function namesmetadata.frida_runtime_trace on inventory items; promotes FRIDA_RUNTIME_TRACE witness (SOUND)
/validate Stage Bevents.jsonl function namesruntime_evidence annotations on attack path steps; proximity floor at 6
/understand --map context bridgeevents.jsonl file operationsObserveProfile merged into context map (read/write/stat/connect paths)
Coverage storecoverage.drcov (bb-coverage template)Function-level coverage marks via existing import_drcov pipeline

No flags needed — consumers discover evidence via packages.frida.evidence.discover_evidence() and gate on packages.frida.available().

Programmatic API (for orchestration scripts)

from packages.frida.active import auto_observe, observe_target, observe_paired

# Single binary spawn — runs under sandbox frida profile
run_dir = observe_target("/path/to/binary", template="api-trace", duration_sec=30)

# Network service — paired observation via netns coordinator
run_dir = observe_paired(["./server", "--port", "8080"],
                         template="api-trace", wait_port=8080)

# Pipeline hook — skips if fresh evidence already exists
run_dir = auto_observe("/path/to/binary", search_dirs=[out_dir])

Status

Alpha. Three templates ship (api-trace, bb-coverage, ssl-unpin); richer set in progress (collab with @Splinters-io). Integration into /validate (automatic) and /crash-analysis on macOS is planned. The autonomous LLM-guided mode from the abandoned PR #57 is intentionally not in this slice.

Alternatives

Compare before choosing