docs.rs failed to build idax-0.2.1
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
idax-0.3.0
idax
Safe, idiomatic Rust bindings for the IDA Pro SDK via the idax C++ wrapper library.
idax provides a concept-driven, fully opaque interface to IDA's analysis engine. All unsafe FFI is encapsulated — users of this crate never write unsafe code. Types that hold SDK resources implement Drop for automatic cleanup.
Prerequisites
- IDA Pro with the IDA SDK (set the
IDASDKenvironment variable to point to your SDK root) - idax C++ library — build the idax project with CMake first to produce
libidax.a - Rust 2024 edition (nightly or stable 1.85+)
Installation
[]
= "0.2"
Quick start
use ;
Module overview
The crate is organized into modules that mirror the C++ ida:: namespace hierarchy. Every module covers a distinct analysis domain:
Core
| Module | Domain | Key capabilities |
|---|---|---|
[error] |
Error handling | Error (category + code + message + context), Result<T>, Status |
[address] |
Address primitives | Address (u64), Range, predicates (is_code, is_data, ...), navigation (next_head, prev_head), iterators (HeadIterator, PredicateIterator) |
[database] |
Database lifecycle | init, open, open_binary, save, close, metadata queries (input_file_path, input_md5, image_base, processor_name, ...), import enumeration, snapshots |
Analysis objects
| Module | Domain | Key capabilities |
|---|---|---|
[segment] |
Segments | CRUD (at, by_name, by_index, create, remove), properties (set_name, set_permissions, set_bitness, resize, move), traversal (next, prev), comments |
[function] |
Functions | CRUD, chunks (chunks, add_tail, remove_tail), stack frames (frame, frame_variable_by_name, define_stack_variable), register variables, callers/callees, item_addresses, code_addresses |
[instruction] |
Instructions | decode, create, text, operand introspection (operand_text, operand_byte_width, operand_register_name), operand formatting (set_operand_hex, set_operand_offset, set_operand_struct_offset_*), xref conveniences (code_refs_from, call_targets, is_call, is_jump), navigation (next, prev) |
[data] |
Byte-level I/O | Read (read_byte .. read_qword, read_bytes, read_string, read_typed), write, patch, originals, define (define_byte .. define_struct, undefine), find_binary_pattern |
[name] |
Naming | get, set, force_set, remove, demangled, resolve, all_user_defined, properties (is_public, is_weak) |
[xref] |
Cross-references | refs_from, refs_to, code/data ref variants, range variants, add_code, add_data, remove_code, remove_data |
[comment] |
Comments | Regular/repeatable (get, set, append, remove), anterior/posterior lines (add_anterior, set_anterior_lines, anterior_lines, ...), render |
[entry] |
Entry points | count, by_index, by_ordinal, add, rename, forwarders |
[fixup] |
Fixups / relocations | at, set, remove, in_range, iteration (first, next, prev), custom fixup handler registration |
[search] |
Search | text, binary_pattern, immediate, next_code, next_data, next_unknown, next_error, next_defined |
Type system
| Module | Domain | Key capabilities |
|---|---|---|
[types] |
Type introspection & construction | TypeInfo (RAII handle with Drop), primitives (void, int8 .. uint64, float32, float64), compound types (pointer_to, array_of, create_struct, create_union, function_type, enum_type), introspection (is_pointer, pointee_type, members, ...), application (apply, retrieve, save_as), type libraries (load_library, import) |
Advanced
| Module | Domain | Key capabilities |
|---|---|---|
[decompiler] |
Hex-Rays decompiler | decompile / decompile_range returning DecompiledFunction (RAII), pseudocode (pseudocode_lines, pseudocode_text), ctree traversal (ctree_items, find_ctree_item_at), microcode (microcode returning MicrocodeFunction), ctree/microcode modification, event subscriptions (on_decompiled, on_ctree_modified, ...) |
[debugger] |
Debugger control | Process lifecycle (start, attach, detach, suspend, resume, step_*, terminate), breakpoints (add_breakpoint, remove_breakpoint, enable_breakpoint, breakpoints), memory (read_memory, write_memory), registers (register_value, set_register_value), threads, appcall (call_function), module/exception/event subscriptions, custom executor registration |
[storage] |
Netnode storage | Node (RAII handle), typed value stores: altval (set_altval / altval), supval (set_supval / supval), hashval (set_hashval / hashval), blob (set_blob / blob), create / open / remove |
[lumina] |
Lumina server | pull, push |
[analysis] |
Auto-analysis | is_enabled, set_enabled, is_idle, wait, schedule, schedule_range, schedule_function, cancel, revert_decisions |
[event] |
IDB event subscriptions | Typed callbacks for segment/function/rename/patch/comment events, filtered subscriptions, ScopedSubscription (RAII unsubscribe on drop) |
Extension points
| Module | Domain | Key capabilities |
|---|---|---|
[plugin] |
Plugin lifecycle | Action registration (register_action / register_action_ex), menu/toolbar/popup attachment, ActionContext for context-aware handlers |
[loader] |
Loader modules | InputFileHandle (seek, read, filename), LoadFlags decode/encode, file_to_database, memory_to_database, set_processor, abort_load |
[processor] |
Processor modules | Processor trait (5 required + 15 optional methods), InstructionFeature / RegisterInfo / AssemblerInfo types |
[graph] |
Custom graphs | Graph (RAII handle), GraphCallback trait for interactive event handling, flow_chart for function CFG extraction |
[ui] |
UI utilities | message, warning, error, info dialogs, ask_* input prompts, ChooserImpl trait for custom list dialogs, widget management, timer scheduling, clipboard, UI event subscriptions |
[lines] |
Color tags | strip_color_tags, has_color_tags |
[diagnostics] |
Logging | log, log_error, performance_counter, reset_performance_counter, dump_performance_counters, is_verbose, set_verbose |
Error handling
All fallible operations return idax::Result<T> (alias for std::result::Result<T, idax::Error>) or idax::Status (alias for Result<()>). The Error type carries:
category—ErrorCategoryenum:Validation,NotFound,Conflict,Unsupported,SdkFailure,Internalcode— numeric error code (0 when unspecified)message— human-readable descriptioncontext— additional context (e.g. which SDK function failed)
use ;
use ErrorCategory;
match at
RAII / Drop
Types that hold SDK resources implement Drop for automatic cleanup:
| Type | Module | Releases |
|---|---|---|
TypeInfo |
types |
Opaque type handle |
Node |
storage |
Netnode handle |
DecompiledFunction |
decompiler |
Decompilation result |
Graph |
graph |
Interactive graph handle |
ScopedSubscription |
event, decompiler, debugger |
Unsubscribes on drop |
Architecture
Your Rust code
|
[ idax ] safe, idiomatic Rust API
|
[ idax-sys ] raw extern "C" FFI bindings (generated by bindgen)
|
[ C shim ] idax_shim.h / idax_shim.cpp (thin C bridge)
|
[ libidax.a ] idax C++ wrapper library
|
[ IDA SDK ] ida.dylib / ida.so / ida.dll
License
MIT