Publishing your plugins

Introducing IDA Plugin Manager - Goodbye Manual Submissions

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.

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.

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

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.

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

Field
Description

.plugin.name

The 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.entryPoint

The 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.version

Specify the version of your plugin. It must follow the x.y.z format (e.g., 1.0.0).

.plugin.description

Summarize your plugin functionality.

.plugin.urls.repository

Link 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

Field
Description

plugin.description

Summarize your plugin functionality.

plugin.idaVersions

Declare 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.platforms

Supported platforms. Defaults to all if not specified. Values: windows-x86_64, linux-x86_64, macos-x86_64, macos-aarch64

plugin.license

SPDX license identifier (e.g., "MIT", "GPL-3.0", "Apache-2.0")

plugin.logoPath

Include 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.categories

Select 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.keywords

Search terms to improve discoverability.

plugin.pythonDependencies

PyPI packages to install (e.g., ["requests>=2.28.0", "package-name"]).

plugin.settings

Configuration 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.

Last updated

Was this helpful?