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-reverse3description: 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---5
6# Binary Ninja reverse engineering
7
8Use 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.
9
10## Start safely
11
121. Confirm the repository case scope is ready before acting on a target.
132. Check `skills/tool-index.md` for `binaryninja`; Binary Ninja is commercial software and must be installed manually with a valid Vector 35 license.
143. Work on a copy when applying patches or saving database changes.
154. Record imports/exports, entry points, architecture, and file hash before promoting findings.
16
17## Choose the integration
18
19- **GUI or Python API:** preferred when Binary Ninja is already open or the user wants direct interactive analysis.
20- **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.
21- **Fallback:** use `ghidra-reverse`, `ida-reverse`, or `radare2` when Binary Ninja is unavailable or its license/API cannot open the target.
22
23The 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.
24
25Install 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:
26
27```text
28npx -y binary-ninja-mcp@1.0.0 --host 127.0.0.1 --port 9009
29```
30
31Register 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.
32
33## Analysis workflow
34
351. Enumerate open binaries and select the intended view.
362. Capture binary status, entry points, segments, imports, exports, and representative strings.
373. Follow call sites and cross-references before interpreting a function in isolation.
384. Use HLIL for readable logic, MLIL SSA for data flow, and LLIL/disassembly when lifting loses instruction-level behavior.
395. Apply names, comments, and types incrementally; keep the original addresses in evidence.
406. Treat byte patches, prototype changes, and saved-file writes as mutations. Perform them only when requested and preserve the original artifact.
417. Cross-check high-impact conclusions with a second evidence source or another disassembler.
42
43Useful 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.
44
45## Output
46
47Report 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.