Author: CX330Blake
Shellcode IDE — makes developing and analyzing shellcode much more convenient.
Shellcode-IDE.mp4
Shellcode-IDE is a powerful Binary Ninja plugin designed for reverse engineers, CTF players, exploit developers, and security researchers. It provides a comprehensive environment for developing and analyzing shellcode with a user-friendly GUI that combines Binary Ninja's assembler/disassembler capabilities for rapid iteration and safe validation of shellcode.
- Two-way conversion: Raw bytes/hex ↔ assembly text
- Multi-architecture support: Assemble for any Binary Ninja architecture/platform
- Multiple export formats: Inline
\x.., raw hex, C stub, Python stub, Zig stub, Rust stub, Go stub - Live metadata: Byte length, instruction count, null count, endianness, architecture
- Configurable bad-pattern detection: e.g.,
00,0a,ff, sequences, regex - Peephole optimizations: With preview/confirm (e.g.,
push 0→xor reg, reg; push reg) - Validation rules: No variables/labels, no absolute addresses/relocations, no nulls (unless allowed)
- Binary Ninja integration: Menu + toolbar + dockable/floating Qt window with shortcuts
Shellcode-IDE streamlines the shellcode development workflow by providing:
- Rapid iteration: Quickly test and validate shellcode snippets without external tools
- Architecture flexibility: Work across different architectures with a single interface
- Safety checks: Built-in validation prevents common shellcode issues like null bytes
- Optimization: Improve your shellcode with intelligent peephole optimizations
- Multi-format export: Generate code snippets for various programming languages
- Integration: Seamlessly integrates into Binary Ninja's ecosystem
- Open Shellcode IDE from
Tools → Shellcode IDEor toolbar icon - Select target
Architecture/Platform(defaults to active view when available) - Paste hex/bytes into the "Hex/Bytes" tab (supports whitespace,
0xprefixes, and\x..forms) - Click "Disassemble". View assembly in the output panel and stats in the status bar
- Export via the "Formats" tab (copy or save to file)
- Switch to the "Assembly" tab and enter one instruction per line
- Click "Assemble". Errors (if any) show inline with line/column info
- Review live stats, run "Optimize" (optional), "Validate", and export in your preferred format
Basic Assembly:
mov rax, 0x3b
mov rdi, 0x68732f6e69622f
push rdi
mov rsi, rsp
xor rdx, rdx
syscall
Hex Input:
90 90 48 c7 c0 3b 00 00 00 48 c7 c7 2f 62 69 6e 2f 73 68 57 48 89 e6 48 31 d2 0f 05
or
\x90\x90\x48\xc7\xc0\x3b\x00\x00\x00\x48\xc7\xc7\x2f\x62\x69\x6e\x2f\x73\x68\x57\x48\x89\xe6\x48\x31\xd2\x0f\x05
- Documentation: Refer to the detailed information in this README
- Issues: Report bugs or request features at GitHub Issues
- Binary Ninja Community: Join the Binary Ninja community forums for plugin-related questions
- Source Code: Browse the source code in this repository for implementation details
- CX330Blake - Original author and current maintainer
Contributions are welcome! Please open issues for bugs/ideas and submit focused PRs.
- Clone the repository into your Binary Ninja plugins directory
- Install dependencies:
pip install -r requirements.txt - Restart Binary Ninja or use "Reload Plugins"
- Tech stack: Python 3.8+, Binary Ninja Python API, PySide2
- Keep changes minimal and scoped to the task
- Match the existing code style and structure
- Include tests for new logic where practical
macOS: cd "~/Library/Application Support/Binary Ninja/plugins" git clone https://github.com/CX330Blake/Shellcode-IDE Shellcode-IDE Restart Binary Ninja or use "Reload Plugins".
Linux: cd ~/.binaryninja/plugins git clone https://github.com/CX330Blake/Shellcode-IDE Shellcode-IDE Restart Binary Ninja or use "Reload Plugins".
Windows (PowerShell or CMD): cd "%APPDATA%\Binary Ninja\plugins" git clone https://github.com/CX330Blake/Shellcode-IDE Shellcode-IDE Restart Binary Ninja or use "Reload Plugins".
This plugin requires the following minimum version of Binary Ninja:
- 3164
The following dependencies are required for this plugin:
- pip - pygments>=2.12, keystone-engine>=0.9.2
- apt -
- installers -
- other - Requires Binary Ninja with Python API (licensed)., PySide2 is bundled with Binary Ninja; no extra install typically required.
This plugin is released under a MIT license.
2