Native binary triage
SkillSecurityTriage a native binary you can run or read, find the vulnerable logic, the dangerous sinks, and the input path, with static + dynamic analysis. Load when handed an ELF/PE/Mach-O, a thick client, a standalone or obfuscated binary, or a service whose source you don't have. Signals: a compiled executable in scope, "reverse this binary", a crash/segfault to understand, custom protocol, strings that hint at auth/secrets, a setuid binary during privesc.
Use Native binary triage in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Native binary triage and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Native binary triage skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by noorqureshi/sploitagent in skills/reverse-engineering/reverse-eng-binary-triage/SKILL.md and read by Ahel’s review.
When it applies
You have a compiled binary — a thick desktop/mobile client, a network service, a setuid helper
during privesc, or a firmware component (reverse-eng-firmware) — and no source. You need to
understand what it does, where attacker input reaches, and whether that path is exploitable, before
committing to exploit-poc-development.
Why it works
A binary carries its logic in the code and its intent in the strings, imports, and symbols. Cheap static passes (strings, imports, cross-references) point straight at the interesting functions; a debugger then confirms what actually happens at runtime, so you spend deep analysis only on the paths that matter.
Method
- Cheap recon first.
file,strings -n8, and the import table tell you the language, protections, and intent in seconds.checksec(orrabin2 -I) for NX / PIE / RELRO / canary — they scope what an exploit would even need. - Map input → sink. Find where input enters (
recv,read,argv,getenv, a file/format parse) and trace to dangerous sinks:strcpy/memcpy/sprintf/gets(overflow),system/exec/popen(command injection), format-string sinks (printf(user)), and integer math feeding an allocation size. - Read it in a decompiler. Ghidra or radare2/Cutter — jump to the sink, follow cross-references back to reachable entry points, and note the preconditions to reach it.
- Confirm dynamically. Run under
gdb+GEF/pwndbg (orltrace/strace), break at the sink, feed a marker input, and watch whether you control size/pointer/format. A crash you can steer (controlled$pc, overwritten pointer) is the confirmation. - Pull the low-hanging intel — hardcoded secrets/keys (
CWE-798), debug/backdoor paths, weak auth checks (astrcmpagainst a literal), and custom-protocol structure for later fuzzing.
Gotchas
- Stripped binaries have no symbols — lean on strings, imports, and library-call signatures; name functions as you go so the map survives.
- Packed/obfuscated (high entropy, tiny import table) → deobfuscate first (
reverse-eng-deobfuscation). - A crash is not yet a bug worth reporting — determine control and impact before you claim it;
validate with
reporting-triage-validation. - Analyze untrusted binaries in an isolated VM — running an unknown executable is itself risky.
Verify success
You can state the input path, the vulnerable sink, the preconditions to reach it, and a runtime observation (controlled crash or a leaked secret) that proves it — a concrete lead for exploit development, not a guess from the disassembly.
References
Ghidra & radare2 documentation; pwndbg/GEF; the checksec protections model; CWE-121/787/798.
Signals
- GitHub stars
- 20
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
reverse-eng-binary-triage- Source
- github.com/noorqureshi/sploitagent
github.com/noorqureshi/sploitagent