Editor plugins

The editors/ directory contains plugins for VS Code, IDA Pro, Ghidra, and Binary Ninja. Each calls an installed Disrobe binary. The VS Code plugin also starts the LSP service when enabled in its settings.

Plugin sources, manifests, and installers are generated by xtask plugins and checked by xtask sync --check. The VS Code build dependencies are pinned in its npm lockfile.

Auto-installer

Clone the repository and run the auto-installer script for your platform:

Linux / macOS (bash):

bash editors/install.sh vscode
bash editors/install.sh ida
bash editors/install.sh ghidra
bash editors/install.sh binja
bash editors/install.sh ida --ida-dir /path/to/ida/plugins
bash editors/install.sh ghidra --ghidra-scripts ~/my-scripts

Windows (PowerShell):

.\editors\install.ps1 vscode
.\editors\install.ps1 ida
.\editors\install.ps1 ghidra
.\editors\install.ps1 binja
.\editors\install.ps1 ida -IDADir 'C:\IDA\plugins'
.\editors\install.ps1 ghidra -GhidraScripts 'C:\ghidra_scripts'

The VS Code installer requires Node.js 20 or later, npm, and the code command on PATH. It downloads the locked build dependencies, compiles a VSIX, and installs it through VS Code. The other installers copy plugin sources to the selected editor directory.

Visual Studio Code

Requirements: VS Code 1.85 or later. Build disrobe from source and add the binary to your PATH, or set disrobe.executablePath in VS Code settings.

Manual install steps:

Run these commands from editors/vscode:

npm ci --ignore-scripts
npm run package
code --install-extension disrobe.vsix --force

Reload VS Code after installation. You can also choose Extensions: Install from VSIX and select disrobe.vsix. Local installation requires no Marketplace account.

The extension activates automatically and starts disrobe serve --stdio when disrobe.lsp.enable is true (the default). This requires a Disrobe build with the server feature. Set the option to false to use only the CLI commands.

All commands appear under the disrobe category in the Command Palette. The seven file-analysis commands also appear in the editor right-click menu for files on disk. They read the saved file, so save pending edits before running them.

Settings:

SettingDefaultDescription
disrobe.executablePath"disrobe"Path to the disrobe binary.
disrobe.lsp.enabletrueStart the LSP daemon on activation.
disrobe.lsp.trace"off"LSP trace level: off, messages, or verbose.
disrobe.auto.outDir""Output directory for disrobe auto.

Commands:

CommandDescription
disrobe.autoAuto: run full deobfuscation pipeline
disrobe.detectDetect: identify obfuscator / packer
disrobe.stringsStrings: extract and deobfuscate strings
disrobe.iocIOC: extract indicators of compromise
disrobe.behaviorBehavior: summarize binary capabilities (MITRE)
disrobe.identifyIdentify: compiler / packer / protector fingerprint
disrobe.scanScan: leak credentials scanner
disrobe.startServerManually start the LSP daemon
disrobe.stopServerStop the LSP daemon
disrobe.showOutputOpen the disrobe output channel

IDA Pro

Requirements: IDA Pro 7.6 or later with IDAPython 3 backend. disrobe binary on your PATH.

Manual install steps:

  1. Copy editors/ida/disrobe_ida.py to your IDA plugins directory:
    • Linux/macOS: ~/.idapro/plugins/
    • macOS (app): ~/Library/Application Support/hex-rays/ida pro/plugins/
    • Windows: %APPDATA%\Hex-Rays\IDA Pro\plugins\
  2. Restart IDA Pro.

The plugin registers all disrobe subcommands as menu actions under Edit > Plugins > disrobe and assigns default hotkeys. Invoking an action runs disrobe <subcommand> <input_file_path> on the file IDA has open and prints the output to the IDA output window.

Actions and default hotkeys:

ActionHotkey
Auto: run full deobfuscation pipelineAlt-Shift-A
Detect: identify obfuscator / packerAlt-Shift-D
Strings: extract and deobfuscate stringsAlt-Shift-S
IOC: extract indicators of compromiseAlt-Shift-I
Behavior: summarize binary capabilities (MITRE)Alt-Shift-B
Identify: compiler / packer / protector fingerprintAlt-Shift-F
Scan: leak credentials scannerAlt-Shift-C

Ghidra

Requirements: Ghidra 10.3 or later. disrobe binary on your PATH.

Manual install steps:

  1. Copy editors/ghidra/DisrobeAnalyzer.java to a directory listed in Ghidra's Script Manager search paths:
    • Default location: ~/ghidra_scripts/
    • Or add a custom path via Window > Script Manager > Manage Script Directories.
  2. In Ghidra: Window > Script Manager, click the refresh icon to pick up the new script.
  3. Double-click DisrobeAnalyzer in the script list to run it.

When run, the script reads the path of the currently loaded program, shows a dialog to choose a disrobe action, shells out to the disrobe binary, and prints the output to the Ghidra console.

To assign a keybinding, right-click DisrobeAnalyzer in the script list and choose Assign Key Binding.

Binary Ninja

The plugin requires a Binary Ninja edition with Python plugin support. Binary Ninja Free does not support plugins.

Run the installer with binja, then restart Binary Ninja. Commands appear under Plugins > disrobe and operate on the current file. Set DISROBE_BINARY in the installed __init__.py if the Disrobe executable is not on PATH. See the plugin instructions for manual installation paths.