Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Publishing your plugins

{% hint style=“success” %}

Introducing IDA Plugin Manager - Goodbye Manual Submissions

With the introduction of HCLI and the IDA Plugin Manager, we’ve built a new ecosystem for discovering, installing, and managing IDA plugins — all distributed through a central index in the IDA Plugin Repository. The plugins.hex-rays.com remains available for browsing and showcasing plugins, but the previous manual submission process via the My Hex-Rays portal has been retired. {% endhint %}

Make Your Plugin Compatible with HCLI & Plugin Manager

The key points to make your IDA plugin available via IDA Plugin Manager are:

  • Update/create ida-plugin.json
  • Package your plugin into a ZIP archive
  • Publish releases on GitHub

Refer to the HCLI Plugin Manager Publication Guide for detailed steps, examples and process description.

Plugin Manager & HCLI Basic Documentation Resources

New to HCLI or the Plugin Manager? Start here to get up and running quickly. These resources are perfect for IDA users who want to browse, install, and manage plugins efficiently.

Getting Started with HCLIhttps://hcli.docs.hex-rays.com/getting-started/installation/
Plugin Manager Overviewhttps://hcli.docs.hex-rays.com/user-guide/plugin-manager/

Plugin Development Documentation Resources

Are you a plugin author looking to make your plugin compatible with HCLI and the Plugin Manager? Explore these detailed guides to learn how to prepare, package, and publish your plugin in the new ecosystem.

Repository Architecturehttps://hcli.docs.hex-rays.com/reference/plugin-repository-architecture/
Plugin Packaging Formathttps://hcli.docs.hex-rays.com/reference/plugin-packaging-and-format/
Publishing Your Pluginhttps://hcli.docs.hex-rays.com/reference/packaging-your-existing-plugin/

Pre-submission checklist

Before publishing your plugin to the IDA Plugin Repository, make sure it’s fully compatible with HCLI and the Plugin Manager - read the testing guide.

Define plugin metadata with ida-plugin.json

{% hint style=“info” %}

Updated fields

We’ve added new required and optional fields to ensure compatibility with HCLI and IDA Plugin Manager. See the details and examples here. {% endhint %}

The ida-plugin.json it’s essential to ensure your plugin will be available in the IDA Plugin Repository and discoverable through Plugin Manager.

To work properly, the ida-plugin.json file must contain at the very least the IDAMetadataDescriptorVersion field as well as a plugin object containing the fields described below.

Example of the minimal ida-plugin.json file:

{
  "IDAMetadataDescriptorVersion": 1,
  "plugin": {
    "name": "plugin1",
    "version": "1.0.0",
    "entryPoint": "plugin1.py",
    "urls": {
      "repository": "https://github.com/your-org/your-plugin"
    },
    "authors": [{
      "name": "John Smith",
      "email": "[email protected]"
    }]
  }
}

Check further examples in the HCLI Plugin Manager Docs.

Required Fields Description

FieldDescription
.plugin.nameThe name will be used to identify the plugin and also generate a namespace name for it if necessary (e.g., an IDAPython plugin). The namespace name is generated by converting all non alphanumeric characters of the plugin name to underscores (_) and prepending __plugins__ to it. For example “my plugin” would become __plugins__my_plugin.
.plugin.entryPointThe filename of the “main” file for the plugin. It should be stored in the same directory as its ida-plugin.json file. If the entryPoint has no file extension, IDA will assume it is a native plugin and append the appropriate file extension for dynamic shared objects for the host platform (.dll, .so, .dylib). For IDAPython plugins, this should typically be a .py file (e.g., my-first-plugin.py).
.plugin.versionSpecify the version of your plugin. It must follow the x.y.z format (e.g., 1.0.0).
.plugin.descriptionSummarize your plugin functionality.
.plugin.urls.repositoryLink to your plugin’s public GitHub repository
plugin.authors and/or plugin.maintainers- At least one must be provided. Each entry requires name and email.

Optional Fields Description

FieldDescription
plugin.descriptionSummarize your plugin functionality.
plugin.idaVersionsDeclare which versions of IDA your plugin supports. You can specify a single version (e.g., 9.0) or a version range (e.g., >=9.0) using the semantic versioning scheme.
plugin.platformsSupported platforms. Defaults to all if not specified. Values: windows-x86_64, linux-x86_64, macos-x86_64, macos-aarch64
plugin.licenseSPDX license identifier (e.g., “MIT”, “GPL-3.0”, “Apache-2.0”)
plugin.logoPathInclude an image to visually represent your plugin on its page at plugins.hex-rays.com. This should be a relative path to an image file within your plugin’s repository. The recommended aspect ratio for the image is 16:9.
plugin.categoriesSelect at least one category to improve your plugin’s discoverability: 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, other
plugin.keywordsSearch terms to improve discoverability.
plugin.pythonDependenciesPyPI packages to install (e.g., ["requests>=2.28.0", "package-name"]).
plugin.settingsConfiguration options as a list of descriptors of settings.

FAQ

Make your plugin HCLI and Plugin Manager ready - check out our FAQ for guidance and practical tips.