Loading...
Loading...
Package IDA Pro plugins for the IDA Plugin Manager and plugins.hex-rays.com repository
npx skill4agent add hexrayssa/ida-claude-code-plugins package-ida-pluginida-plugin.jsonida-plugin.jsonhcli plugin install <name>ida-plugin.jsonida-plugin.json$IDAUSR/plugins/# GOOD: All plugin code is in the same directory as ida-plugin.json
my-repo/
├── ida-plugin.json # Plugin root
├── my_plugin.py # Entry point - INCLUDED
├── my_plugin_lib/ # Supporting code - INCLUDED
│ └── helpers.py
├── README.md # Plugin README - INCLUDED (shown on web)
└── assets/
└── logo.png # Logo - INCLUDED
# BAD: Plugin code outside the ida-plugin.json directory
my-repo/
├── plugin/
│ └── ida-plugin.json # Plugin root is here
├── src/ # NOT INCLUDED - outside plugin root!
│ └── my_plugin.py # This file won't be installed!
└── README.md # NOT INCLUDED - wrong directory!entryPointida-plugin.jsonpythonDependencies../README.mdsrc/plugin/ida-plugin.json# Before # After
my-repo/ my-repo/
├── ida-plugin.json └── src/
└── src/ ├── ida-plugin.json # Moved here
└── my_plugin.py ├── my_plugin.py
└── README.md # Add for webida-plugin.jsoncapa/
├── capa/
│ ├── ida/
│ │ └── plugin/
│ │ ├── ida-plugin.json # Plugin root
│ │ ├── capa_explorer.py # Entry point
│ │ └── README.md # Plugin-specific docs
│ └── main.py # Not included in IDA plugin
└── README.md # Repo README - not the plugin READMEREADME.mdida-plugin.jsonmy-plugin/
├── ida-plugin.json
├── my_plugin.py
└── README.md # This README appears on plugins.hex-rays.comida-plugin.json{
"IDAMetadataDescriptorVersion": 1,
"plugin": {
"name": "my-plugin",
"version": "1.0.0",
"entryPoint": "my_plugin.py",
"description": "A one-line description of what this plugin does",
"license": "MIT",
"urls": {
"repository": "https://github.com/org/my-plugin",
"homepage": "https://example.com/my-plugin"
},
"authors": [
{"name": "Author Name", "email": "author@example.com"}
],
"maintainers": [
{"name": "Maintainer Name", "email": "maintainer@example.com"}
],
"idaVersions": ["9.0", "9.1", "9.2"],
"platforms": ["windows-x86_64", "linux-x86_64", "macos-x86_64", "macos-aarch64"],
"categories": ["malware-analysis"],
"keywords": ["analysis", "automation"],
"pythonDependencies": ["requests>=2.0", "pydantic>=2"],
"logoPath": "assets/logo.png",
"settings": []
}
}| Field | Type | Description |
|---|---|---|
| | Always set to |
| string | Unique identifier. ASCII letters, digits, underscores, hyphens only. No leading/trailing |
| string | Semantic version |
| string | Entry point filename (e.g., |
| string | GitHub URL: |
| array | At least one contact with |
| Field | Type | Default | Description |
|---|---|---|---|
| string | none | One-line description shown in search results |
| string | none | License identifier (e.g., |
| string | none | Homepage URL if different from repository |
| array or string | all versions | Supported IDA versions. Can be explicit list |
| array | all platforms | Supported platforms: |
| array | | See Categories section below |
| array | | Search terms for discoverability |
| array or | | PyPI packages. Use |
| string | none | Relative path to logo image (16:9 aspect ratio recommended) |
| array | | Plugin configuration options. See Settings section |
disassembly-and-processor-modules
file-parsers-and-loaders
decompilation
debugging-and-tracing
deobfuscation
collaboration-and-productivity
integration-with-third-parties-interoperability
api-scripting-and-automation
ui-ux-and-visualization
malware-analysis
vulnerability-research-and-exploit-development
other9.29.19.0sp19.0">=9.0"my-plugin/
├── ida-plugin.json
├── README.md # Displayed on plugins.hex-rays.com
├── my_plugin.py # entryPoint
└── my_plugin_lib/ # optional supporting modules
├── __init__.py
└── helpers.py{
"IDAMetadataDescriptorVersion": 1,
"plugin": {
"name": "my-simple-plugin",
"version": "1.0.0",
"entryPoint": "my_plugin.py",
"urls": {
"repository": "https://github.com/username/my-simple-plugin"
},
"authors": [
{"name": "Your Name", "email": "you@example.com"}
]
}
}{
"IDAMetadataDescriptorVersion": 1,
"plugin": {
"name": "capa",
"version": "9.3.1",
"entryPoint": "capa_explorer.py",
"description": "Identify capabilities in executable files using FLARE's capa framework",
"license": "Apache-2.0",
"idaVersions": ">=7.4",
"categories": ["malware-analysis", "api-scripting-and-automation", "ui-ux-and-visualization"],
"pythonDependencies": ["flare-capa==9.3.1"],
"urls": {
"repository": "https://github.com/mandiant/capa"
},
"authors": [
{"name": "Willi Ballenthin", "email": "wballenthin@hex-rays.com"},
{"name": "Moritz Raabe", "email": "moritzraabe@google.com"}
],
"keywords": ["capability-detection", "malware-analysis", "att&ck", "static-analysis"]
}
}pythonDependencies"inline"{
"pythonDependencies": "inline"
}# /// script
# dependencies = [
# "requests>=2.0",
# "pydantic>=2"
# ]
# ///
import ida_kernwin
# ... rest of pluginmy-native-plugin/
├── ida-plugin.json
├── README.md # Displayed on plugins.hex-rays.com
├── my_plugin.dll # Windows
├── my_plugin.so # Linux
└── my_plugin.dylib # macOS (universal or architecture-specific){
"plugin": {
"entryPoint": "my_plugin",
"platforms": ["windows-x86_64", "linux-x86_64", "macos-x86_64", "macos-aarch64"]
}
}.dll.so.dylib{
"plugin": {
"entryPoint": "my_plugin.dll",
"platforms": ["windows-x86_64"]
}
}{
"plugin": {
"entryPoint": "my_plugin.so",
"platforms": ["linux-x86_64"]
}
}hcli plugin config{
"settings": [
{
"key": "api_key",
"name": "API Key",
"type": "string",
"required": true,
"documentation": "Your API key for the service"
},
{
"key": "endpoint",
"name": "API Endpoint",
"type": "string",
"required": false,
"default": "https://api.example.com",
"validation_pattern": "^https://.*$"
},
{
"key": "log_level",
"name": "Log Level",
"type": "string",
"required": false,
"choices": ["debug", "info", "warning", "error"],
"default": "info"
},
{
"key": "enable_telemetry",
"name": "Enable Telemetry",
"type": "boolean",
"required": false,
"default": false
}
]
}| Field | Type | Required | Description |
|---|---|---|---|
| string | yes | Code-level identifier (e.g., |
| string | yes | Human-readable label (e.g., |
| | yes | Value type |
| boolean | yes | Whether user must provide a value |
| string | no | Help text for users |
| string or boolean | no | Default value if not configured |
| string | no | Regex for validating string values |
| array of strings | no | Allowed values (mutually exclusive with |
ida-settingsfrom ida_settings import get_current_plugin_setting
api_key = get_current_plugin_setting("api_key")
log_level = get_current_plugin_setting("log_level")# Validate a directory
hcli plugin lint /path/to/my-plugin
# Validate a ZIP archive
hcli plugin lint /path/to/my-plugin.zipgit tag v1.0.0 && git push --tagsida-plugin.jsonknown-repositories.txtknown-repositories.txtmulti-plugin.zip
├── plugin-a/
│ ├── ida-plugin.json
│ └── plugin_a.py
└── plugin-b/
├── ida-plugin.json
└── plugin_b.pyida-plugin.jsonplugin.versionida-plugin.jsonhcli plugin upgrade <name>ida-plugin.jsonhcli plugin lintida-plugin.jsonida-settingspythonDependenciesget_current_plugin_setting()../ida-plugin.jsonida-plugin.jsonentryPointida-plugin.jsonidaVersionspythonDependenciesREADME.mdhcli plugin lint# List available plugins
hcli plugin list
# Search plugins
hcli plugin search <query>
# Install a plugin
hcli plugin install <name>
hcli plugin install <name>==1.0.0
# Upgrade a plugin
hcli plugin upgrade <name>
# Uninstall a plugin
hcli plugin uninstall <name>
# List installed plugins
hcli plugin list --installed
# Configure plugin settings
hcli plugin config <name> set <key> <value>
hcli plugin config <name> get <key>
# Validate plugin
hcli plugin lint /path/to/plugin