> For the complete documentation index, see [llms.txt](https://docs.hex-rays.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hex-rays.com/8.4/user-guide/plugins/open-plugin-architecture.md).

# Open Plugin Architecture

IDA’s functionality can easily be extended by the use of programmable plug-ins. Plugins may be written to automate routine tasks, for example to enhance the analysis of hostile code or to add specific functionality to our disassembler. Plugins should be written in C++. They may be linked to hot keys or menu items and have full access to the IDA database and may examine or modify the program or use I/O functions. Our SDK contains

* 4 sample plugins
  * a simple “hello world” type plugin.
  * a sample processor extension plugin (adds 2 NEC V20 specific instructions to the 80×86 processor module).
  * a sample pdb file loader ( as used by IDA itself ).
  * a sample executable decryption plugin.
  * a sample graphing plugin.
  * ![](https://github.com/HexRaysSA/docs/blob/IDA-8.4/user-guide/plugins/assets/charterplugin1.gif) ![](https://github.com/HexRaysSA/docs/blob/IDA-8.4/user-guide/plugins/assets/charterplugin2.gif)
* the source code to a 30+ processor modules!
* the source code to a 20+ loaders
* header files (almost 19.000 lines of heavily commented documentation to IDA’s exported interface).
* import libraries for Borland C/C++ (32 & 64 bits), Microsoft Visual C++ 6 (32 & 64 bits), GNU C/C++ (32 & 64 bits), Watcom 11
* if you received IDA as a download, the SDK download information can be found in the e-mail you have received.

## Additional free plugins, from Ilfak’s blog:

<table><thead><tr><th></th><th></th><th data-type="files"></th></tr></thead><tbody><tr><td><strong>stealth</strong></td><td>Stealth against anti-debugging tricks</td><td></td></tr><tr><td><strong>findcrypt</strong></td><td>Identifies some frequently used block ciphers</td><td></td></tr><tr><td><strong>highlighter</strong></td><td>Highlights code that has been single stepped through in a debugging session</td><td></td></tr><tr><td><strong>unispector</strong></td><td>Extracts unicode strings from an IDA database</td><td></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.hex-rays.com/8.4/user-guide/plugins/open-plugin-architecture.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
