tautcony/leaf5-ghostlock/ndk-probe-loop
Claude Code and agent skill by tautcony/leaf5-ghostlock
- community
Checking that the SKILL.md file is still in the repository.
Build, deploy, and run Leaf5 stage probes (Android NDK arm32/arm64) with errno-matrix discipline. Use whenever compiling probes, make SRC=, BITS=32/64, adb push, deploy, out/stages, Docker NDK, KGSL ioctl probes, 32-bit TIF_32BIT tests, or validating device behavior. Slash: /ndk-probe-loop.
Install
npx vskill@latest install tautcony/leaf5-ghostlock/ndk-probe-loopSKILL.md
NDK probe loop (Leaf5)
Goal
One hypothesis per probe binary. Build → push → run → classify errno → write node README. Prefer stage probes over editing exploit/ first.
Preflight
- Device online:
adb devices(or MCPleaf5-adbadb_devices) - Runtime match:
uname -a→ #245 / g3d47a6619220 - Probe path under
leaf5/stages/.../probes/*.c - No magic numbers: include/use constants from
target.hor local#definetied to documented values
Build
NDK is Docker-only (ghostlock-build image). Do not install a host Android NDK.
From leaf5/stages/:
Outputs:
Integrated exploit (after stage success):
32-bit vs 64-bit
| BITS | Arch tag | When | |
|---|---|---|---|
| 32 | arm32 | TIF_32BIT / compat ioctl paths | |
| 64 | arm64 | native 64-bit CFU paths |
Rules for 32-bit userspace:
- Kernel addresses: `uint64_t` / `ks_addr_t`, never
uintptr_t/size_t personality(PER_LINUX32)does not setTIF_32BIT— do not treat it as a compat shortcutMAP_NORESERVEmay return EINVAL on ARM32; avoid oversized maps- Match printf formats to
uint64_t
KGSL checklist (if relevant)
- Open
/dev/kgsl-3d0(usually 0666 for shell) - Context flags: `KGSL_CONTEXT_PREAMBLE | NO_GMEM_ALLOC` → 0x12 (single flag is not enough)
- ioctl type on this device: 0x09
KGSL_MEMFLAGS_USE_CPU_MAP= 0x10000000 (not 0x1000)- Use errno layering (below) before claiming CFU hit
Run and classify
Prefer MCP:
Or:
Errno matrix (minimum)
| Case | Expect / record | |
|---|---|---|
| valid args | ret / success path | |
| bad user pointer | EFAULT if CFU reached | |
| wrong cmd / size | EINVAL | |
| wrong ioctl type | ENOTTY if not in driver | |
| ± context | with vs without GPU context |
Write a small table into the node README or results.txt under the node.
Failure interpretation
- Build fail → fix NDK/path/include first
- open() EACCES / EPERM → SELinux or group; document node path + context; list alternatives (do not brute force)
- ENOTTY → wrong ioctl encoding or not that driver
- EINVAL → structure/flags wrong; fix userspace layout before talking about stack
- EFAULT → reached copy; then measure depth vs waiter (static RE + arm64-kernel-re skill)
- Crash / reboot → capture last dmesg if possible; do not loop-crash the device
After a run
- Update stage node README (结果 + 原因 + 证据)
- If constants changed →
target.hsame batch - Milestone → short PROCESS_LOG entry
- Only then consider
exploit/integration
Report format
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryChecking.grok/skills/ndk-probe-loop/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/tautcony/leaf5-ghostlock/ndk-probe-loop)