# frida-17

Checks and fixes Frida scripts for Frida 17.0.0, flagging removed APIs and naming the replacement. Useful when migrating from older versions.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 2600 installs · ★ 5
- Author: yfe404
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/yfe404/frida-17-skill/tree/HEAD/SKILL.md
- Updated: 2025-12-26
- HTML: https://affpapa.org/en/nevibecode/skills/frida-17

## What it does

This skill tracks what broke in Frida 17.0.0 (May 2025). The static `Module` methods are gone: `Module.findBaseAddress`, `Module.getBaseAddress`, `Module.findExportByName` and `Module.enumerateExports` no longer run. You go through `Process.findModuleByName` or `Process.getModuleByName` and then call methods on the module itself — `lib.base`, `lib.findExportByName('open')`, `lib.enumerateExports()`. Static `Memory` methods went the same way; reads and writes now hang off the pointer: `ptr.readU32()`, `ptr.writeU32(value)`.

Naming is the other trap. `hexdump`, `ptr` and `NULL` belong to Frida, so a custom `function hexdump(ptr, len)` dies with `TypeError: cannot define variable 'hexdump'`. The skill suggests `dumpHex` instead. It also catches `toUInt32()`, which never existed — for sizes under 2^31 use `toInt32()`. The callback style for module enumeration (`onMatch`/`onComplete`) and `enumerateModulesSync()` are removed, and `Process.enumerateModules()` hands back an array directly.

A 10-point checklist covers script review, plus working patterns: polling for a library with `setInterval`, hooking `libc` through `Interceptor.attach`, a custom hex dump. The Java Bridge is unchanged, but a Java `byte[]` cannot go straight into `writeByteArray()` — you loop over the bytes. Java hook examples use `.overload()` and walk `.overloads`.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add yfe404/frida-17-skill --skill frida-17 -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/frida-17/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/frida-17/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add yfe404/frida-17-skill --skill frida-17 -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/frida-17/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add yfe404/frida-17-skill --skill frida-17 -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/frida-17/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install yfe404/frida-17-skill frida-17
```

2. **Manually: put the files in place**
- File: `.github/skills/frida-17/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add yfe404/frida-17-skill --skill frida-17 -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/yfe404/frida-17-skill
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/frida-17/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add yfe404/frida-17-skill --skill frida-17 -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/yfe404/frida-17-skill/tree/HEAD/SKILL.md

## When to use it
- port an old Frida script to Frida 17
- find removed static `Module` and `Memory` methods
- swap `Module.findExportByName` for module instance methods
- fix `TypeError: cannot define variable 'hexdump'`
- convert a Java `byte[]` to hex without `writeByteArray()`

## Example prompts
- check my Frida script for Frida 17 compatibility
- why does `Module.findBaseAddress('libriver.so')` fail in Frida 17
- refactor my libc hook for Frida 17

## Similar
- [android-pentesting-tricks](https://affpapa.org/en/nevibecode/skills/android-pentesting-tricks.md) — skill · 4100 installs
- [mobile-ssl-pinning-bypass](https://affpapa.org/en/nevibecode/skills/mobile-ssl-pinning-bypass.md) — skill · 3600 installs
- [reverse-engineering](https://affpapa.org/en/nevibecode/skills/reverse-engineering.md) — skill · 1800 installs
- [rev-dex-dumper](https://affpapa.org/en/nevibecode/skills/rev-dex-dumper.md) — skill · 1800 installs
- [apktool](https://affpapa.org/en/nevibecode/skills/apktool.md) — skill · 526 installs
- [reverse-engineering-android-malware-with-jadx](https://affpapa.org/en/nevibecode/skills/reverse-engineering-android-malware-with-jadx.md) — skill · 486 installs

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
