Domain API
A beginner-friendly, open-source Domain API that simplifies scripting and plugin development, making it approachable like never before — in a Pythonic way.
v0.5.1 Released
What's Changed
Drop support for python 3.9, add support for python 3.14 by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/71
Change release flow by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/72
chore(release): v0.5.1-dev.1 by @github-actions[bot] in https://github.com/HexRaysSA/ida-domain/pull/73
Fix tests for IDA 9.4 by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/76
Fix dependabot security alerts by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/77
Add periodic test on nightly IDA build by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/75
Add compatilibty layer for deprecated functions by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/78
Encourage users to use idalib activation script instead of IDADIR by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/74
Fix microcode dump test for new version of IDA by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/82
Fix Dependabot security alerts in uv.lock by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/85
Use proper setters for properties instead of modifying thisown by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/84
Fix problems with invalid license for CI tests by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/88
Run make_if tests only for IDA > 9.4 by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/87
Add IDA 9.4 to the test matrix by @cmghex in https://github.com/HexRaysSA/ida-domain/pull/86
Modify the tests workflow to use ida-hcli-actions by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/90
Fix private import usage warning by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/89
Refactor lvar reference analysis and expose ctree context #80 by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/81
Update test matrix to use IDA 9.4 beta 2 by @cmghex in https://github.com/HexRaysSA/ida-domain/pull/91
Add CI check for deprecated IDA functions by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/94
Downgrade test guards to 9.4 by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/96
Add quotes to path parameters by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/95
Update test matrix to use IDA 9.4 official release by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/100
Add is_private_ea by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/99
Expand the Functions class API functionality by @bbudny-hexrays in https://github.com/HexRaysSA/ida-domain/pull/101
Bump soupsieve to 2.8.4, cryptography to 49.0.0 and idapro to 0.0.10 by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/98
Fixed segment name and size printing for analyze_database example. by @imladenov51 in https://github.com/HexRaysSA/ida-domain/pull/103
Include examples in package by @mrexodia in https://github.com/HexRaysSA/ida-domain/pull/104
Add @experimental decorator by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/108
Implement methods to add/remove xrefs by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/97
Add methods to resolve xrefs to types and their members by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/102
chore(release): v0.5.1-dev.2 by @github-actions[bot] in https://github.com/HexRaysSA/ida-domain/pull/109
Expand the Instructions class API functionality by @bbudny-hexrays in https://github.com/HexRaysSA/ida-domain/pull/105
Fixed segment and function related examples as in #103 by @msobon-hexrays in https://github.com/HexRaysSA/ida-domain/pull/106
chore(release): v0.5.1 by @github-actions[bot] in https://github.com/HexRaysSA/ida-domain/pull/111
New Contributors
@github-actions[bot] made their first contribution in https://github.com/HexRaysSA/ida-domain/pull/73
@bbudny-hexrays made their first contribution in https://github.com/HexRaysSA/ida-domain/pull/101
@imladenov51 made their first contribution in https://github.com/HexRaysSA/ida-domain/pull/103
@mrexodia made their first contribution in https://github.com/HexRaysSA/ida-domain/pull/104
Full Changelog: https://github.com/HexRaysSA/ida-domain/compare/v0.5.0...v0.5.1
General Documentation Resources
Additional Resources
Is the Domain API Right for You?
Just getting started with IDA?
Great! The Domain API was specifically designed to flatten the learning curve. We made this high-level Domain API more Pythonic, easy to install and simpler to learn so you can start scripting and building IDA plugins without getting overwhelmed by complexity.
As an open-source project designed to complement IDAPython SDK, it benefits from a faster release cycle driven by community feedback.
Experienced with C++ or/and IDAPython SDK?
If you’re a seasoned reverser familiar with C++ and/or IDAPython SDK usage, there's no need to change your workflow or adopt "another" API. The Domain API is not intended to replace the existing C++ and IDAPython SDK. It offers a high-level alternative for those who prefer it.
Need low-level control?
If you need full control, stick with IDAPython or the C++ SDK. The high-level Domain API prioritizes ease of use and community-driven evolution over complete coverage from day one. It will continue to evolve rapidly and expand over time.
Benefits of using Domain API
Clean and Pythonic design. The Domain API is built on top of the existing IDAPython SDK, providing a higher-level Domain Model for interacting with IDA.
Domain-focused design. Developed by reverse engineers for reverse engineers, matching how they think about binary analysis.
Community-driven updates, versioned independently. Open-source from the start and developed outside of official IDA release cycles, enabling flexible evolution.
Scripting and Development with the Domain API
Is it possible to develop plugins with the Domain API?
Yes. You can dive right away into plugin development with the Domain API, that has been built on top of the IDAPython SDK. For everything that needs more low-level control, you can use it alongside the IDAPython SDK. They are fully compatible with each other.
Is the Domain API Equivalent to the IDAPython SDK?
The Domain API currently provides coverage for common tasks such as function manipulation, type management, cross-references handling, and more. For a full overview of available capabilities, see the Domain API Reference. As an open-source project, built with an independent release cycle, the Domain API is designed to evolve quickly. You can expect frequent updates that expand its functionality and have a chance to shape the future of its evolution.
If you need access to features not yet available through the Domain API, you can combine the IDAPython alongside your Domain API snippets.
Feedback and contributions
The Domain API has been open source from the start. We welcome not only contributions, but also your honest feedback — from early impressions to insights that help shape its growth toward maturity.
How to contribute? | Visit the Domain API GitHub Repository
Spotted a bug or want to propose a change to the Domain API? Here’s how to get involved:
Read the Contribution Guidelines to understand the process
To report bugs or unexpected behavior, open an Issue on GitHub
To propose changes, submit a Pull Request (PR) with your improvements
How to share your feedback?
We welcome your early insights, feature requests, and ideas for possible use cases of the Domain API. Join the conversation in our community forum.
FAQ
Do I need to update my existing plugins or scripts?
No. You do not need to port your plugins nor update them. The Domain API doesn't affect existing plugins or scripts in any way. If you are familiar and feel completely confident in developing with IDAPython or C++, you can continue to do so without changing your habits or workflow.
Is the Domain API a replacement for IDAPython SDK?
No. The Domain API is not going to replace the IDAPython SDK, but complement it. The high-level Domain API serves as an entry point for developing scripts and plugins in IDA, particularly for newcomers looking for an accessible Pythonic interface.
Last updated
Was this helpful?
