+ "description": "## Demo\n\nhttps://github.com/user-attachments/assets/8a0cbc62-4f29-417f-a1d1-6d3005a1be41\n\n## What the project does\n\nShellcode-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.\n\n### Key Features\n\n- **Two-way conversion**: Raw bytes/hex ↔ assembly text\n- **Multi-architecture support**: Assemble for any Binary Ninja architecture/platform\n- **Multiple export formats**: Inline `\\x..`, raw hex, C stub, Python stub, Zig stub, Rust stub, Go stub\n- **Live metadata**: Byte length, instruction count, null count, endianness, architecture\n- **Configurable bad-pattern detection**: e.g., `00`, `0a`, `ff`, sequences, regex\n- **Peephole optimizations**: With preview/confirm (e.g., `push 0` → `xor reg, reg; push reg`)\n- **Validation rules**: No variables/labels, no absolute addresses/relocations, no nulls (unless allowed)\n- **Binary Ninja integration**: Menu + toolbar + dockable/floating Qt window with shortcuts\n\n## Why the project is useful\n\nShellcode-IDE streamlines the shellcode development workflow by providing:\n\n- **Rapid iteration**: Quickly test and validate shellcode snippets without external tools\n- **Architecture flexibility**: Work across different architectures with a single interface\n- **Safety checks**: Built-in validation prevents common shellcode issues like null bytes\n- **Optimization**: Improve your shellcode with intelligent peephole optimizations\n- **Multi-format export**: Generate code snippets for various programming languages\n- **Integration**: Seamlessly integrates into Binary Ninja's ecosystem\n\n## How users can get started\n\n### Prerequisites\n\n- Binary Ninja (licensed), with Python API available\n- Python 3.8+ (matching your Binary Ninja build)\n- Qt via PySide2 (Binary Ninja typically bundles PySide2; no manual install required)\n\n### Installation\n\nYou can install as a user plugin. The typical plugin directories are:\n\n- **macOS**: `~/Library/Application Support/Binary Ninja/plugins`\n- **Linux**: `~/.binaryninja/plugins`\n- **Windows**: `%APPDATA%\\Binary Ninja\\plugins`\n\n#### Manual Install\n\n1. Close Binary Ninja\n2. Clone or copy this repository into your plugins directory as `Shellcode-IDE`\n\n - **Example (macOS/Linux)**:\n\n ```bash\n cd \"~/Library/Application Support/Binary Ninja/plugins\" # macOS\n # or cd ~/.binaryninja/plugins # Linux\n git clone https://github.com/CX330Blake/Shellcode-IDE.git Shellcode-IDE\n ```\n\n3. Start Binary Ninja. The plugin registers a Tools menu entry and a toolbar icon\n\n#### Platform-specific Instructions\n\n**macOS**:\n\n```bash\ncd \"~/Library/Application Support/Binary Ninja/plugins\"\ngit clone https://github.com/CX330Blake/Shellcode-IDE Shellcode-IDE\n```\n\n**Linux**:\n\n```bash\ncd ~/.binaryninja/plugins\ngit clone https://github.com/CX330Blake/Shellcode-IDE Shellcode-IDE\n```\n\n**Windows (PowerShell)**:\n\n```powershell\ncd \"$env:APPDATA\\Binary Ninja\\plugins\"\ngit clone https://github.com/CX330Blake/Shellcode-IDE Shellcode-IDE\n```\n\nAfter installation, restart Binary Ninja or use \"Reload Plugins\".\n\n### Quick Start\n\n#### To disassemble bytes/hex to assembly\n\n1. Open Shellcode IDE from `Tools → Shellcode IDE` or toolbar icon\n2. Select target `Architecture`/`Platform` (defaults to active view when available)\n3. Paste hex/bytes into the \"Hex/Bytes\" tab (supports whitespace, `0x` prefixes, and `\\x..` forms)\n4. Click \"Disassemble\". View assembly in the output panel and stats in the status bar\n5. Export via the \"Formats\" tab (copy or save to file)\n\n#### To assemble assembly to shellcode\n\n1. Switch to the \"Assembly\" tab and enter one instruction per line\n2. Click \"Assemble\". Errors (if any) show inline with line/column info\n3. Review live stats, run \"Optimize\" (optional), \"Validate\", and export in your preferred format\n\n### Usage Examples\n\n**Basic Assembly:**\n\n```\nmov rax, 0x3b\nmov rdi, 0x68732f6e69622f\npush rdi\nmov rsi, rsp\nxor rdx, rdx\nsyscall\n```\n\n**Hex Input:**\n\n```\n90 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\n```\n\nor\n\n```\n\\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\n```\n\n## Where users can get help\n\n- **Documentation**: Refer to the detailed information in this README\n- **Issues**: Report bugs or request features at [GitHub Issues](https://github.com/CX330Blake/Shellcode-IDE/issues)\n- **Binary Ninja Community**: Join the Binary Ninja community forums for plugin-related questions\n- **Source Code**: Browse the source code in this repository for implementation details\n\n## Who maintains and contributes\n\n### Maintainer\n\n- **CX330Blake** - Original author and current maintainer\n\n### Contributing\n\nContributions are welcome! Please open issues for bugs/ideas and submit focused PRs.\n\n#### Development Setup\n\n1. Clone the repository into your Binary Ninja plugins directory\n2. Install dependencies: `pip install -r requirements.txt`\n3. Restart Binary Ninja or use \"Reload Plugins\"\n\n#### For Developers\n\n- **Tech stack**: Python 3.8+, Binary Ninja Python API, PySide2\n- Keep changes minimal and scoped to the task\n- Match the existing code style and structure\n- Include tests for new logic where practical\n\n### Dependencies\n\nThe plugin requires the following dependencies:\n\n- `pygments>=2.12`\n- `keystone-engine>=0.9.2`\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.",
0 commit comments