Binary Ninja reverse engineering
Use Binary Ninja when the user explicitly selects it, when its ILs materially help data-flow analysis, or when IDA/Ghidra/radare2 results need an independent cross-check.
Start safely
- Confirm the repository case scope is ready before acting on a target.
- Check
skills/tool-index.md for binaryninja; Binary Ninja is commercial software and must be installed manually with a valid Vector 35 license.
- Work on a copy when applying patches or saving database changes.
- Record imports/exports, entry points, architecture, and file hash before promoting findings.
Choose the integration
- GUI or Python API: preferred when Binary Ninja is already open or the user wants direct interactive analysis.
- Community MCP bridge: use only when explicitly requested and after reviewing the third-party plugin boundary. Keep the Binary Ninja HTTP listener on
127.0.0.1:9009; do not enable network exposure by default.
- Fallback: use
ghidra-reverse, ida-reverse, or radare2 when Binary Ninja is unavailable or its license/API cannot open the target.
The reviewed community integration is fosdickio/binary_ninja_mcp, GPL-3.0, plugin metadata version 1.1.0, minimum Binary Ninja build 4000. The repository is not an official Vector 35 component. This skill was checked against commit 8c5134ee46e2bf44f9a4d846bd971c3e39b3e306 on 2026-09-03.
Install the Binary Ninja side through its Plugin Manager or from the reviewed source. For the MCP stdio bridge, pin the published bridge version rather than using an unbounded package:
npx -y binary-ninja-mcp@1.0.0 --host 127.0.0.1 --port 9009
Register that command only in the MCP client the user selected. The bridge is not ready until Binary Ninja is running, a binary is open, and the localhost plugin endpoint responds.
Analysis workflow
- Enumerate open binaries and select the intended view.
- Capture binary status, entry points, segments, imports, exports, and representative strings.
- Follow call sites and cross-references before interpreting a function in isolation.
- Use HLIL for readable logic, MLIL SSA for data flow, and LLIL/disassembly when lifting loses instruction-level behavior.
- Apply names, comments, and types incrementally; keep the original addresses in evidence.
- Treat byte patches, prototype changes, and saved-file writes as mutations. Perform them only when requested and preserve the original artifact.
- Cross-check high-impact conclusions with a second evidence source or another disassembler.
Useful MCP capability families include binary/view selection, list_imports, list_exports, list_strings, decompile_function, get_il, callers/callees, cross-references, types, comments, renames, and byte patching. Discover the live tool list instead of assuming every upstream function is present.
Output
Report concrete addresses, function names, IL level, supporting strings/imports, confidence, and reproduction steps. Keep the Evidence → Finding → Path chain used by the rest of the repository.
1---
2name: binary-ninja-reverse
3description: Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.
4---56
7# Binary Ninja reverse engineering
8
9Use Binary Ninja when the user explicitly selects it, when its ILs materially help data-flow analysis, or when IDA/Ghidra/radare2 results need an independent cross-check.
10
11## Start safely
12
131. Confirm the repository case scope is ready before acting on a target.
142. Check `skills/tool-index.md` for `binaryninja`; Binary Ninja is commercial software and must be installed manually with a valid Vector 35 license.
153. Work on a copy when applying patches or saving database changes.
164. Record imports/exports, entry points, architecture, and file hash before promoting findings.
17
18## Choose the integration
19
20- **GUI or Python API:** preferred when Binary Ninja is already open or the user wants direct interactive analysis.
21- **Community MCP bridge:** use only when explicitly requested and after reviewing the third-party plugin boundary. Keep the Binary Ninja HTTP listener on `127.0.0.1:9009`; do not enable network exposure by default.
22- **Fallback:** use `ghidra-reverse`, `ida-reverse`, or `radare2` when Binary Ninja is unavailable or its license/API cannot open the target.
23
24The reviewed community integration is [`fosdickio/binary_ninja_mcp`](https://github.com/fosdickio/binary_ninja_mcp), GPL-3.0, plugin metadata version `1.1.0`, minimum Binary Ninja build `4000`. The repository is not an official Vector 35 component. This skill was checked against commit `8c5134ee46e2bf44f9a4d846bd971c3e39b3e306` on 2026-09-03.
25
26Install the Binary Ninja side through its Plugin Manager or from the reviewed source. For the MCP stdio bridge, pin the published bridge version rather than using an unbounded package:
27
28```text
29npx -y binary-ninja-mcp@1.0.0 --host 127.0.0.1 --port 9009
30```
31
32Register that command only in the MCP client the user selected. The bridge is not ready until Binary Ninja is running, a binary is open, and the localhost plugin endpoint responds.
33
34## Analysis workflow
35
361. Enumerate open binaries and select the intended view.
372. Capture binary status, entry points, segments, imports, exports, and representative strings.
383. Follow call sites and cross-references before interpreting a function in isolation.
394. Use HLIL for readable logic, MLIL SSA for data flow, and LLIL/disassembly when lifting loses instruction-level behavior.
405. Apply names, comments, and types incrementally; keep the original addresses in evidence.
416. Treat byte patches, prototype changes, and saved-file writes as mutations. Perform them only when requested and preserve the original artifact.
427. Cross-check high-impact conclusions with a second evidence source or another disassembler.
43
44Useful MCP capability families include binary/view selection, `list_imports`, `list_exports`, `list_strings`, `decompile_function`, `get_il`, callers/callees, cross-references, types, comments, renames, and byte patching. Discover the live tool list instead of assuming every upstream function is present.
45
46## Output
47
48Report concrete addresses, function names, IL level, supporting strings/imports, confidence, and reproduction steps. Keep the Evidence → Finding → Path chain used by the rest of the repository.