Skip to content

Bytes

bytes

Classes:

  • ByteFlags

    Byte flag constants for flag checking operations.

  • Bytes

    Handles operations related to raw data access from the IDA database.

  • NoValueError

    Raised when a read operation is attempted on an uninitialized address.

  • SearchFlags

    Search flags for text and pattern searching.

  • StringType

    String type constants for string operations.

  • UnsupportedValueError

    Raised when a read operation is attempted on a value which has an unsupported format.

ByteFlags

Bases: IntFlag

Byte flag constants for flag checking operations.

Attributes:

  • ALIGN

    Data Type Flag: Alignment directive

  • ANYNAME

    Composite Flags: Has name or dummy name?

  • BNOT

    Common State Information: Bitwise negation of operands

  • BYTE

    Data Type Flag: Byte

  • CODE

    Item State Flags: Code?

  • COMM

    Common State Information: Has comment?

  • CUSTOM

    Data Type Flag: Custom data type

  • DATA

    Item State Flags: Data?

  • DOUBLE

    Data Type Flag: Double

  • DWORD

    Data Type Flag: Double word

  • FLOAT

    Data Type Flag: Float

  • FLOW

    Common State Information: Exec flow from prev instruction

  • FUNC

    Code-Specific Flags: Function start?

  • IMMD

    Code-Specific Flags: Has immediate value?

  • IVL

    Value and Initialization: Byte has value.

  • JUMP

    Code-Specific Flags: Has jump table or switch_info?

  • LABL

    Common State Information: Has dummy name?

  • LINE

    Common State Information: Has next or prev lines?

  • MS_VAL

    Value and Initialization: Mask for byte value.

  • NAME

    Common State Information: Has name?

  • N_CHAR

    Operand Type Flags: Char ('x')?

  • N_CUST

    Operand Type Flags: Custom representation?

  • N_ENUM

    Operand Type Flags: Enumeration?

  • N_FLT

    Operand Type Flags: Floating point number?

  • N_FOP

    Operand Type Flags: Forced operand?

  • N_NUMB

    Operand Type Flags: Binary number?

  • N_NUMD

    Operand Type Flags: Decimal number?

  • N_NUMH

    Operand Type Flags: Hexadecimal number?

  • N_NUMO

    Operand Type Flags: Octal number?

  • N_OFF

    Operand Type Flags: Offset?

  • N_SEG

    Operand Type Flags: Segment?

  • N_STK

    Operand Type Flags: Stack variable?

  • N_STRO

    Operand Type Flags: Struct offset?

  • N_VOID

    Operand Type Flags: Void (unknown)?

  • OWORD

    Data Type Flag: Octaword/XMM word (16 bytes)

  • PACKREAL

    Data Type Flag: Packed decimal real

  • QWORD

    Data Type Flag: Quad word

  • REF

    Common State Information: Has references

  • SIGN

    Common State Information: Inverted sign of operands

  • STRLIT

    Data Type Flag: String literal

  • STRUCT

    Data Type Flag: Struct variable

  • TAIL

    Tail?

  • TBYTE

    Data Type Flag: TByte

  • UNK

    Item State Flags: Unknown?

  • UNUSED

    Common State Information: Unused bit

  • WORD

    Data Type Flag: Word

  • YWORD

    Data Type Flag: YMM word (32 bytes)

  • ZWORD

    Data Type Flag: ZMM word (64 bytes)

ALIGN class-attribute instance-attribute

ALIGN = FF_ALIGN

Data Type Flag: Alignment directive

ANYNAME class-attribute instance-attribute

ANYNAME = FF_ANYNAME

Composite Flags: Has name or dummy name?

BNOT class-attribute instance-attribute

BNOT = FF_BNOT

Common State Information: Bitwise negation of operands

BYTE class-attribute instance-attribute

BYTE = FF_BYTE

Data Type Flag: Byte

CODE class-attribute instance-attribute

CODE = FF_CODE

Item State Flags: Code?

COMM class-attribute instance-attribute

COMM = FF_COMM

Common State Information: Has comment?

CUSTOM class-attribute instance-attribute

CUSTOM = FF_CUSTOM

Data Type Flag: Custom data type

DATA class-attribute instance-attribute

DATA = FF_DATA

Item State Flags: Data?

DOUBLE class-attribute instance-attribute

DOUBLE = FF_DOUBLE

Data Type Flag: Double

DWORD class-attribute instance-attribute

DWORD = FF_DWORD

Data Type Flag: Double word

FLOAT class-attribute instance-attribute

FLOAT = FF_FLOAT

Data Type Flag: Float

FLOW class-attribute instance-attribute

FLOW = FF_FLOW

Common State Information: Exec flow from prev instruction

FUNC class-attribute instance-attribute

FUNC = FF_FUNC

Code-Specific Flags: Function start?

IMMD class-attribute instance-attribute

IMMD = FF_IMMD

Code-Specific Flags: Has immediate value?

IVL class-attribute instance-attribute

IVL = FF_IVL

Value and Initialization: Byte has value.

JUMP class-attribute instance-attribute

JUMP = FF_JUMP

Code-Specific Flags: Has jump table or switch_info?

LABL class-attribute instance-attribute

LABL = FF_LABL

Common State Information: Has dummy name?

LINE class-attribute instance-attribute

LINE = FF_LINE

Common State Information: Has next or prev lines?

MS_VAL class-attribute instance-attribute

MS_VAL = MS_VAL

Value and Initialization: Mask for byte value.

NAME class-attribute instance-attribute

NAME = FF_NAME

Common State Information: Has name?

N_CHAR class-attribute instance-attribute

N_CHAR = FF_N_CHAR

Operand Type Flags: Char ('x')?

N_CUST class-attribute instance-attribute

N_CUST = FF_N_CUST

Operand Type Flags: Custom representation?

N_ENUM class-attribute instance-attribute

N_ENUM = FF_N_ENUM

Operand Type Flags: Enumeration?

N_FLT class-attribute instance-attribute

N_FLT = FF_N_FLT

Operand Type Flags: Floating point number?

N_FOP class-attribute instance-attribute

N_FOP = FF_N_FOP

Operand Type Flags: Forced operand?

N_NUMB class-attribute instance-attribute

N_NUMB = FF_N_NUMB

Operand Type Flags: Binary number?

N_NUMD class-attribute instance-attribute

N_NUMD = FF_N_NUMD

Operand Type Flags: Decimal number?

N_NUMH class-attribute instance-attribute

N_NUMH = FF_N_NUMH

Operand Type Flags: Hexadecimal number?

N_NUMO class-attribute instance-attribute

N_NUMO = FF_N_NUMO

Operand Type Flags: Octal number?

N_OFF class-attribute instance-attribute

N_OFF = FF_N_OFF

Operand Type Flags: Offset?

N_SEG class-attribute instance-attribute

N_SEG = FF_N_SEG

Operand Type Flags: Segment?

N_STK class-attribute instance-attribute

N_STK = FF_N_STK

Operand Type Flags: Stack variable?

N_STRO class-attribute instance-attribute

N_STRO = FF_N_STRO

Operand Type Flags: Struct offset?

N_VOID class-attribute instance-attribute

N_VOID = FF_N_VOID

Operand Type Flags: Void (unknown)?

OWORD class-attribute instance-attribute

OWORD = FF_OWORD

Data Type Flag: Octaword/XMM word (16 bytes)

PACKREAL class-attribute instance-attribute

PACKREAL = FF_PACKREAL

Data Type Flag: Packed decimal real

QWORD class-attribute instance-attribute

QWORD = FF_QWORD

Data Type Flag: Quad word

REF class-attribute instance-attribute

REF = FF_REF

Common State Information: Has references

SIGN class-attribute instance-attribute

SIGN = FF_SIGN

Common State Information: Inverted sign of operands

STRLIT class-attribute instance-attribute

STRLIT = FF_STRLIT

Data Type Flag: String literal

STRUCT class-attribute instance-attribute

STRUCT = FF_STRUCT

Data Type Flag: Struct variable

TAIL class-attribute instance-attribute

TAIL = FF_TAIL

Tail?

TBYTE class-attribute instance-attribute

TBYTE = FF_TBYTE

Data Type Flag: TByte

UNK class-attribute instance-attribute

UNK = FF_UNK

Item State Flags: Unknown?

UNUSED class-attribute instance-attribute

UNUSED = FF_UNUSED

Common State Information: Unused bit

WORD class-attribute instance-attribute

WORD = FF_WORD

Data Type Flag: Word

YWORD class-attribute instance-attribute

YWORD = FF_YWORD

Data Type Flag: YMM word (32 bytes)

ZWORD class-attribute instance-attribute

ZWORD = FF_ZWORD

Data Type Flag: ZMM word (64 bytes)

Bytes

Bytes(database: Database)

Bases: DatabaseEntity

Handles operations related to raw data access from the IDA database.

This class provides methods to read various data types (bytes, words, floats, etc.) from memory addresses in the disassembled binary.

Args: database: Reference to the active IDA database.

Methods:

  • check_flags_at

    Checks if the specified flags are set at the given address.

  • create_alignment_at

    Create an alignment item.

  • create_byte_at

    Creates byte data items at consecutive addresses starting from the specified address.

  • create_double_at

    Creates double data items at consecutive addresses starting from the specified address.

  • create_dword_at

    Creates dword data items at consecutive addresses starting from the specified address.

  • create_float_at

    Creates float data items at consecutive addresses starting from the specified address.

  • create_oword_at

    Creates oword data items at consecutive addresses starting from the specified address.

  • create_packed_real_at

    Creates packed real data items at consecutive addresses starting

  • create_qword_at

    Creates qword data items at consecutive addresses starting from the specified address.

  • create_string_at

    Converts data at address to string type.

  • create_struct_at

    Creates struct data items at consecutive addresses starting from the specified address.

  • create_tbyte_at

    Creates tbyte data items at consecutive addresses starting from the specified address.

  • create_word_at

    Creates word data items at consecutive addresses starting from the specified address.

  • create_yword_at

    Creates yword data items at consecutive addresses starting from the specified address.

  • create_zword_at

    Creates zword data items at consecutive addresses starting from the specified address.

  • delete_value_at

    Delete value from flags. The corresponding address becomes uninitialized.

  • find_bytes_between

    Finds a byte pattern in memory.

  • find_immediate_between

    Finds an immediate value in instructions.

  • find_text_between

    Finds a text string in memory.

  • get_all_flags_at

    Gets all the full flags for the specified address.

  • get_byte_at

    Retrieves a single byte (8 bits) at the specified address.

  • get_bytes_at

    Gets the specified number of bytes of the program.

  • get_cstring_at

    Gets a C-style null-terminated string.

  • get_data_size_at

    Gets the size of the data item at the specified address.

  • get_disassembly_at

    Retrieves the disassembly text at the specified address.

  • get_double_at

    Retrieves a double-precision floating-point value at the specified address.

  • get_dword_at

    Retrieves a double word (32 bits/4 bytes) at the specified address.

  • get_flags_at

    Gets the flags for the specified address masked with IVL and MS_VAL

  • get_float_at

    Retrieves a single-precision floating-point value at the specified address.

  • get_next_addr

    Gets the next valid address after the specified address.

  • get_next_head

    Gets the next head (start of data item) after the specified address.

  • get_original_byte_at

    Get original byte value (that was before patching).

  • get_original_bytes_at

    Gets the original bytes before any patches by reading individual bytes.

  • get_original_dword_at

    Get original dword value (that was before patching).

  • get_original_qword_at

    Get original qword value (that was before patching).

  • get_original_word_at

    Get original word value (that was before patching).

  • get_prev_addr

    Gets the previous valid address before the specified address.

  • get_prev_head

    Gets the previous head (start of data item) before the specified address.

  • get_qword_at

    Retrieves a quad word (64 bits/8 bytes) at the specified address.

  • get_string_at

    Gets a string from the specified address.

  • get_word_at

    Retrieves a word (16 bits/2 bytes) at the specified address.

  • has_any_flags_at

    Checks if any of the specified flags are set at the given address.

  • has_user_name_at

    Checks if the address has a user-defined name.

  • is_alignment_at

    Checks if the address contains an alignment directive.

  • is_byte_at

    Checks if the address contains a byte data type.

  • is_code_at

    Checks if the address contains code.

  • is_data_at

    Checks if the address contains data.

  • is_double_at

    Checks if the address contains a double data type.

  • is_dword_at

    Checks if the address contains a dword data type.

  • is_float_at

    Checks if the address contains a float data type.

  • is_flowed_at

    Does the previous instruction exist and pass execution flow to the current byte?

  • is_forced_operand_at

    Is operand manually defined?

  • is_head_at

    Checks if the address is the start of a data item.

  • is_manual_insn_at

    Is the instruction overridden?

  • is_not_tail_at

    Checks if the address is not a tail byte.

  • is_oword_at

    Checks if the address contains an oword data type.

  • is_packed_real_at

    Checks if the address contains a packed real data type.

  • is_qword_at

    Checks if the address contains a qword data type.

  • is_string_literal_at

    Checks if the address contains a string literal data type.

  • is_struct_at

    Checks if the address contains a struct data type.

  • is_tail_at

    Checks if the address is part of a multi-byte data item.

  • is_tbyte_at

    Checks if the address contains a tbyte data type.

  • is_unknown_at

    Checks if the address contains unknown/undefined data.

  • is_value_initialized_at

    Check if the value at the specified address is initialized

  • is_word_at

    Checks if the address contains a word data type.

  • is_yword_at

    Checks if the address contains a yword data type.

  • is_zword_at

    Checks if the address contains a zword data type.

  • patch_byte_at

    Patch a byte of the program.

  • patch_bytes_at

    Patch the specified number of bytes of the program.

  • patch_dword_at

    Patch a dword of the program.

  • patch_qword_at

    Patch a qword of the program.

  • patch_word_at

    Patch a word of the program.

  • revert_byte_at

    Revert patched byte to its original value.

  • set_byte_at

    Sets a byte value at the specified address.

  • set_bytes_at

    Sets a sequence of bytes at the specified address.

  • set_dword_at

    Sets a double word (4 bytes) value at the specified address.

  • set_qword_at

    Sets a quad word (8 bytes) value at the specified address.

  • set_word_at

    Sets a word (2 bytes) value at the specified address.

Attributes:

database property

database: Database

Get the database reference, guaranteed to be non-None when called from methods decorated with @check_db_open.

Returns: The active database instance.

Note: This property should only be used in methods decorated with @check_db_open, which ensures m_database is not None.

m_database instance-attribute

m_database = database

check_flags_at

check_flags_at(ea: ea_t, flag_mask: ByteFlags) -> bool

Checks if the specified flags are set at the given address.

Args: ea: The effective address. flag_mask: ByteFlags enum value(s) to check.

Returns: True if all specified flags are set, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

create_alignment_at

create_alignment_at(
    ea: ea_t, length: int, alignment: int
) -> bool

Create an alignment item.

Args: ea: The effective address. length: Size of the item in bytes. 0 means to infer from alignment. alignment: Alignment exponent. Example: 3 means align to 8 bytes, 0 means to infer from length.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If length or alignment are invalid.

create_byte_at

create_byte_at(
    ea: ea_t, count: int = 1, force: bool = False
) -> bool

Creates byte data items at consecutive addresses starting from the specified address.

Args: ea: The effective address to start creating bytes. count: Number of consecutive byte elements to create. force: Forces creation overriding an existing item if there is one.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If count is not positive.

create_double_at

create_double_at(
    ea: ea_t, count: int = 1, force: bool = False
) -> bool

Creates double data items at consecutive addresses starting from the specified address.

Args: ea: The effective address to start creating doubles. count: Number of consecutive double elements to create. force: Forces creation overriding an existing item if there is one.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If count is not positive.

create_dword_at

create_dword_at(
    ea: ea_t, count: int = 1, force: bool = False
) -> bool

Creates dword data items at consecutive addresses starting from the specified address.

Args: ea: The effective address to start creating dwords. count: Number of consecutive dword elements to create. force: Forces creation overriding an existing item if there is one.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If count is not positive.

create_float_at

create_float_at(
    ea: ea_t, count: int = 1, force: bool = False
) -> bool

Creates float data items at consecutive addresses starting from the specified address.

Args: ea: The effective address to start creating floats. count: Number of consecutive float elements to create. force: Forces creation overriding an existing item if there is one.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If count is not positive.

create_oword_at

create_oword_at(
    ea: ea_t, count: int = 1, force: bool = False
) -> bool

Creates oword data items at consecutive addresses starting from the specified address.

Args: ea: The effective address to start creating owords. count: Number of consecutive oword elements to create. force: Forces creation overriding an existing item if there is one.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If count is not positive.

create_packed_real_at

create_packed_real_at(
    ea: ea_t, count: int = 1, force: bool = False
) -> bool

Creates packed real data items at consecutive addresses starting from the specified address.

Args: ea: The effective address to start creating packed reals. count: Number of consecutive packed real elements to create. force: Forces creation overriding an existing item if there is one.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If count is not positive.

create_qword_at

create_qword_at(
    ea: ea_t, count: int = 1, force: bool = False
) -> bool

Creates qword data items at consecutive addresses starting from the specified address.

Args: ea: The effective address to start creating qwords. count: Number of consecutive qword elements to create. force: Forces creation overriding an existing item if there is one.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If count is not positive.

create_string_at

create_string_at(
    ea: ea_t,
    length: Optional[int] = None,
    string_type: StringType = C,
) -> bool

Converts data at address to string type.

Args: ea: The effective address. length: String length (auto-detect if None). string_type: String type (default: StringType.C).

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If length is specified but not positive.

create_struct_at

create_struct_at(
    ea: ea_t, count: int, tid: int, force: bool = False
) -> bool

Creates struct data items at consecutive addresses starting from the specified address.

Args: ea: The effective address to start creating structs. count: Number of consecutive struct elements to create. tid: Structure type ID. force: Forces creation overriding an existing item if there is one.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If count is not positive or tid is invalid.

Example: til = ida_typeinf.tinfo_t() ida_typeinf.parse_decl(til, None, 'struct Point {int x; int y;};', 0) til.set_named_type(None, 'my_struct') db.bytes.create_struct_at(ea, 1, til.get_tid())

create_tbyte_at

create_tbyte_at(
    ea: ea_t, count: int = 1, force: bool = False
) -> bool

Creates tbyte data items at consecutive addresses starting from the specified address.

Args: ea: The effective address to start creating tbytes. count: Number of consecutive tbyte elements to create. force: Forces creation overriding an existing item if there is one.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If count is not positive.

create_word_at

create_word_at(
    ea: ea_t, count: int = 1, force: bool = False
) -> bool

Creates word data items at consecutive addresses starting from the specified address.

Args: ea: The effective address to start creating words. count: Number of consecutive word elements to create. force: Forces creation overriding an existing item if there is one.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If count is not positive.

create_yword_at

create_yword_at(
    ea: ea_t, count: int = 1, force: bool = False
) -> bool

Creates yword data items at consecutive addresses starting from the specified address.

Args: ea: The effective address to start creating ywords. count: Number of consecutive yword elements to create. force: Forces creation overriding an existing item if there is one.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If count is not positive.

create_zword_at

create_zword_at(
    ea: ea_t, count: int = 1, force: bool = False
) -> bool

Creates zword data items at consecutive addresses starting from the specified address.

Args: ea: The effective address to start creating zwords. count: Number of consecutive zword elements to create. force: Forces creation overriding an existing item if there is one.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If count is not positive.

delete_value_at

delete_value_at(ea: ea_t) -> None

Delete value from flags. The corresponding address becomes uninitialized.

Args: ea: The effective address.

Raises: InvalidEAError: If the effective address is invalid.

find_bytes_between

find_bytes_between(
    pattern: bytes,
    start_ea: ea_t = None,
    end_ea: ea_t = None,
) -> ea_t | None

Finds a byte pattern in memory.

Args: pattern: Byte pattern to search for. start_ea: Search start address; defaults to database minimum ea if None end_ea: Search end address; defaults to database maximum ea if None

Returns: Address where pattern was found, or None if not found.

Raises: InvalidParameterError: If pattern or interval are invalid. InvalidEAError: If start_ea or end_ea are specified but invalid.

find_immediate_between

find_immediate_between(
    value: int, start_ea: ea_t = None, end_ea: ea_t = None
) -> ea_t | None

Finds an immediate value in instructions.

Args: value: Immediate value to search for. start_ea: Search start address; defaults to database minimum ea if None end_ea: Search end address; defaults to database maximum ea if None

Returns: Address where immediate was found, or None if not found.

Raises: InvalidParameterError: If value is not an integer. InvalidEAError: If start_ea or end_ea are specified but invalid.

find_text_between

find_text_between(
    text: str,
    start_ea: ea_t = None,
    end_ea: ea_t = None,
    flags: SearchFlags = DOWN,
) -> ea_t | None

Finds a text string in memory.

Args: text: Text to search for. start_ea: Search Start address; defaults to database minimum ea if None end_ea: Search end address; defaults to database maximum ea if None flags: Search flags (default: SearchFlags.DOWN).

Returns: Address where text was found, or None if not found.

Raises: InvalidParameterError: If text or interval are invalid. InvalidEAError: If start_ea or end_ea are specified but invalid.

get_all_flags_at

get_all_flags_at(ea: ea_t) -> ByteFlags

Gets all the full flags for the specified address.

Args: ea: The effective address.

Returns: ByteFlags enum value representing the full flags.

Raises: InvalidEAError: If the effective address is invalid.

get_byte_at

get_byte_at(
    ea: ea_t, allow_uninitialized: bool = False
) -> int

Retrieves a single byte (8 bits) at the specified address.

Args: ea: The effective address. allow_uninitialized: If True, allows reading addresses with uninitialized values.

Returns: The byte value (0-255).

Raises: InvalidEAError: If the effective address is invalid. NoValueError: If allow_uninitialized is False and the address contains an uninitialized value.

get_bytes_at

get_bytes_at(ea: ea_t, size: int) -> bytes | None

Gets the specified number of bytes of the program.

Args: ea: The effective address. size: Number of bytes to read.

Returns: The bytes (as bytes object), or None in case of failure

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If size is not positive.

get_cstring_at

get_cstring_at(
    ea: ea_t, max_length: int = 1024
) -> str | None

Gets a C-style null-terminated string.

Args: ea: The effective address. max_length: Maximum string length to read (default: 1024).

Returns: The string if it was successfully extracted or None in case of error

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If max_length is not positive.

get_data_size_at

get_data_size_at(ea: ea_t) -> int

Gets the size of the data item at the specified address.

Args: ea: The effective address.

Returns: Size of the data item in bytes.

Raises: InvalidEAError: If the effective address is invalid.

get_disassembly_at

get_disassembly_at(
    ea: ea_t, remove_tags: bool = True
) -> str | None

Retrieves the disassembly text at the specified address.

Args: ea: The effective address. remove_tags: If True, removes IDA color/formatting tags from the output.

Returns: The disassembly string, or None if an error occurs.

Raises: InvalidEAError: If the effective address is invalid.

get_double_at

get_double_at(
    ea: ea_t, allow_uninitialized: bool = False
) -> float | None

Retrieves a double-precision floating-point value at the specified address.

Best-effort implementation that may fail on some architectures or non-standard floating-point formats.

Args: ea: The effective address. allow_uninitialized: If True, allows reading addresses with uninitialized values.

Returns: The double value, or None if an error occurs.

Raises: InvalidEAError: If the effective address is invalid. NoValueError: If allow_uninitialized is False and the address contains an uninitialized value. UnsupportedValueError: If the floating-point format is not supported

Note: Only works for standard IEEE 754 32-bit and 64-bit floats. May not work on embedded systems or architectures with custom floating-point representations.

get_dword_at

get_dword_at(
    ea: ea_t, allow_uninitialized: bool = False
) -> int

Retrieves a double word (32 bits/4 bytes) at the specified address.

Args: ea: The effective address. allow_uninitialized: If True, allows reading addresses with uninitialized values.

Returns: The dword value.

Raises: InvalidEAError: If the effective address is invalid. NoValueError: If allow_uninitialized is False and the address contains an uninitialized value.

get_flags_at

get_flags_at(ea: ea_t) -> ByteFlags

Gets the flags for the specified address masked with IVL and MS_VAL

Args: ea: The effective address.

Returns: ByteFlags enum value representing the flags.

Raises: InvalidEAError: If the effective address is invalid.

get_float_at

get_float_at(
    ea: ea_t, allow_uninitialized: bool = False
) -> float | None

Retrieves a single-precision floating-point value at the specified address.

Best-effort implementation that may fail on some architectures or non-standard floating-point formats.

Args: ea: The effective address. allow_uninitialized: If True, allows reading addresses with uninitialized values.

Returns: The float value, or None if an error occurs.

Raises: InvalidEAError: If the effective address is invalid. NoValueError: If allow_uninitialized is False and the address contains an uninitialized value. UnsupportedValueError: If the floating-point format is not supported

Note: Only works for standard IEEE 754 32-bit and 64-bit floats. May not work on embedded systems or architectures with custom floating-point representations.

get_next_addr

get_next_addr(ea: ea_t) -> ea_t | None

Gets the next valid address after the specified address.

Args: ea: The effective address.

Returns: Next valid address or None.

Raises: InvalidEAError: If the effective address is invalid.

get_next_head

get_next_head(
    ea: ea_t, max_ea: ea_t = None
) -> Optional[ea_t]

Gets the next head (start of data item) after the specified address.

Args: ea: The effective address. max_ea: Maximum address to search.

Returns: Address of next head, or None if not found.

Raises: InvalidEAError: If the effective address is invalid.

get_original_byte_at

get_original_byte_at(ea: ea_t) -> int | None

Get original byte value (that was before patching).

Args: ea: The effective address.

Returns: The original byte value, or None if an error occurs.

Raises: InvalidEAError: If the effective address is invalid.

get_original_bytes_at

get_original_bytes_at(ea: ea_t, size: int) -> bytes | None

Gets the original bytes before any patches by reading individual bytes.

Args: ea: The effective address. size: Number of bytes to read.

Returns: The original bytes or None in case of error.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If size is not positive.

get_original_dword_at

get_original_dword_at(ea: ea_t) -> int | None

Get original dword value (that was before patching).

Args: ea: The effective address.

Returns: The original dword value, or None if an error occurs.

Raises: InvalidEAError: If the effective address is invalid.

get_original_qword_at

get_original_qword_at(ea: ea_t) -> int | None

Get original qword value (that was before patching).

Args: ea: The effective address.

Returns: The original qword value, or None if an error occurs.

Raises: InvalidEAError: If the effective address is invalid.

get_original_word_at

get_original_word_at(ea: ea_t) -> int | None

Get original word value (that was before patching).

Args: ea: The effective address.

Returns: The original word value, or None if an error occurs.

Raises: InvalidEAError: If the effective address is invalid.

get_prev_addr

get_prev_addr(ea: ea_t) -> ea_t | None

Gets the previous valid address before the specified address.

Args: ea: The effective address.

Returns: Previous valid address.

Raises: InvalidEAError: If the effective address is invalid.

get_prev_head

get_prev_head(
    ea: ea_t, min_ea: ea_t = None
) -> Optional[ea_t]

Gets the previous head (start of data item) before the specified address.

Args: ea: The effective address. min_ea: Minimum address to search.

Returns: Address of previous head, or None if not found.

Raises: InvalidEAError: If the effective address is invalid.

get_qword_at

get_qword_at(
    ea: ea_t, allow_uninitialized: bool = False
) -> int

Retrieves a quad word (64 bits/8 bytes) at the specified address.

Args: ea: The effective address. allow_uninitialized: If True, allows reading addresses with uninitialized values.

Returns: The qword value.

Raises: InvalidEAError: If the effective address is invalid. NoValueError: If allow_uninitialized is False and the address contains an uninitialized value.

get_string_at

get_string_at(
    ea: ea_t, max_length: Optional[int] = None
) -> str | None

Gets a string from the specified address.

Args: ea: The effective address. max_length: Maximum string length to read.

Returns: The string if it was successfully extracted or None in case of error

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If max_length is specified but not positive.

get_word_at

get_word_at(
    ea: ea_t, allow_uninitialized: bool = False
) -> int

Retrieves a word (16 bits/2 bytes) at the specified address.

Args: ea: The effective address. allow_uninitialized: If True, allows reading addresses with uninitialized values.

Returns: The word value.

Raises: InvalidEAError: If the effective address is invalid. NoValueError: If allow_uninitialized is False and the address contains an uninitialized value.

has_any_flags_at

has_any_flags_at(ea: ea_t, flag_mask: ByteFlags) -> bool

Checks if any of the specified flags are set at the given address.

Args: ea: The effective address. flag_mask: ByteFlags enum value(s) to check.

Returns: True if any of the specified flags are set, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

has_user_name_at

has_user_name_at(ea: ea_t) -> bool

Checks if the address has a user-defined name.

Args: ea: The effective address.

Returns: True if has user name, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_alignment_at

is_alignment_at(ea: ea_t) -> bool

Checks if the address contains an alignment directive.

Args: ea: The effective address.

Returns: True if alignment type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_byte_at

is_byte_at(ea: ea_t) -> bool

Checks if the address contains a byte data type.

Args: ea: The effective address.

Returns: True if byte type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_code_at

is_code_at(ea: ea_t) -> bool

Checks if the address contains code.

Args: ea: The effective address.

Returns: True if code, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_data_at

is_data_at(ea: ea_t) -> bool

Checks if the address contains data.

Args: ea: The effective address.

Returns: True if data, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_double_at

is_double_at(ea: ea_t) -> bool

Checks if the address contains a double data type.

Args: ea: The effective address.

Returns: True if double type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_dword_at

is_dword_at(ea: ea_t) -> bool

Checks if the address contains a dword data type.

Args: ea: The effective address.

Returns: True if dword type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_float_at

is_float_at(ea: ea_t) -> bool

Checks if the address contains a float data type.

Args: ea: The effective address.

Returns: True if float type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_flowed_at

is_flowed_at(ea: ea_t) -> bool

Does the previous instruction exist and pass execution flow to the current byte?

Args: ea: The effective address.

Returns: True if flow, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_forced_operand_at

is_forced_operand_at(ea: ea_t, n: int) -> bool

Is operand manually defined?

Args: ea: The effective address. n: Operand number (0-based).

Returns: True if operand is forced, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If operand number is negative.

is_head_at

is_head_at(ea: ea_t) -> bool

Checks if the address is the start of a data item.

Args: ea: The effective address.

Returns: True if head, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_manual_insn_at

is_manual_insn_at(ea: ea_t) -> bool

Is the instruction overridden?

Args: ea: The effective address.

Returns: True if instruction is manually overridden, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_not_tail_at

is_not_tail_at(ea: ea_t) -> bool

Checks if the address is not a tail byte.

Args: ea: The effective address.

Returns: True if not tail, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_oword_at

is_oword_at(ea: ea_t) -> bool

Checks if the address contains an oword data type.

Args: ea: The effective address.

Returns: True if oword type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_packed_real_at

is_packed_real_at(ea: ea_t) -> bool

Checks if the address contains a packed real data type.

Args: ea: The effective address.

Returns: True if packed real type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_qword_at

is_qword_at(ea: ea_t) -> bool

Checks if the address contains a qword data type.

Args: ea: The effective address.

Returns: True if qword type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_string_literal_at

is_string_literal_at(ea: ea_t) -> bool

Checks if the address contains a string literal data type.

Args: ea: The effective address.

Returns: True if string literal type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_struct_at

is_struct_at(ea: ea_t) -> bool

Checks if the address contains a struct data type.

Args: ea: The effective address.

Returns: True if struct type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_tail_at

is_tail_at(ea: ea_t) -> bool

Checks if the address is part of a multi-byte data item.

Args: ea: The effective address.

Returns: True if tail, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_tbyte_at

is_tbyte_at(ea: ea_t) -> bool

Checks if the address contains a tbyte data type.

Args: ea: The effective address.

Returns: True if tbyte type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_unknown_at

is_unknown_at(ea: ea_t) -> bool

Checks if the address contains unknown/undefined data.

Args: ea: The effective address.

Returns: True if unknown, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_value_initialized_at

is_value_initialized_at(ea: ea_t) -> bool

Check if the value at the specified address is initialized

Args: ea: The effective address.

Returns: True if byte is loaded, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_word_at

is_word_at(ea: ea_t) -> bool

Checks if the address contains a word data type.

Args: ea: The effective address.

Returns: True if word type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_yword_at

is_yword_at(ea: ea_t) -> bool

Checks if the address contains a yword data type.

Args: ea: The effective address.

Returns: True if yword type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

is_zword_at

is_zword_at(ea: ea_t) -> bool

Checks if the address contains a zword data type.

Args: ea: The effective address.

Returns: True if zword type, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

patch_byte_at

patch_byte_at(ea: ea_t, value: int) -> bool

Patch a byte of the program. The original value is saved and can be obtained by get_original_byte_at().

Args: ea: The effective address. value: Byte value to patch.

Returns: True if the database has been modified, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If value is not a valid byte (0-0xFF).

patch_bytes_at

patch_bytes_at(ea: ea_t, data: bytes) -> None

Patch the specified number of bytes of the program. Original values are saved and available with get_original_bytes_at().

Args: ea: The effective address. data: Bytes to patch.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If data is not bytes or is empty.

patch_dword_at

patch_dword_at(ea: ea_t, value: int) -> bool

Patch a dword of the program. The original value is saved and can be obtained by get_original_dword_at().

Args: ea: The effective address. value: Dword value to patch.

Returns: True if the database has been modified, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If value is not a valid dword (0-0xFFFFFFFF).

patch_qword_at

patch_qword_at(ea: ea_t, value: int) -> bool

Patch a qword of the program. The original value is saved and can be obtained by get_original_qword_at().

Args: ea: The effective address. value: Qword value to patch.

Returns: True if the database has been modified, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If value is not a valid qword (0-0xFFFFFFFFFFFFFFFF).

patch_word_at

patch_word_at(ea: ea_t, value: int) -> bool

Patch a word of the program. The original value is saved and can be obtained by get_original_word_at().

Args: ea: The effective address. value: Word value to patch.

Returns: True if the database has been modified, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If value is not a valid word (0-0xFFFF).

revert_byte_at

revert_byte_at(ea: ea_t) -> bool

Revert patched byte to its original value.

Args: ea: The effective address.

Returns: True if byte was patched before and reverted now, False otherwise.

Raises: InvalidEAError: If the effective address is invalid.

set_byte_at

set_byte_at(ea: ea_t, value: int) -> bool

Sets a byte value at the specified address.

Args: ea: The effective address. value: Byte value to set.

Returns: True if successful, False otherwise.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If value is not a valid byte (0-0xFF).

set_bytes_at

set_bytes_at(ea: ea_t, data: bytes) -> None

Sets a sequence of bytes at the specified address.

Args: ea: The effective address. data: Bytes to write.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If data is not bytes or is empty.

set_dword_at

set_dword_at(ea: ea_t, value: int) -> None

Sets a double word (4 bytes) value at the specified address.

Args: ea: The effective address. value: Double word value to set.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If value is not a valid dword (0-0xFFFFFFFF).

set_qword_at

set_qword_at(ea: ea_t, value: int) -> None

Sets a quad word (8 bytes) value at the specified address.

Args: ea: The effective address. value: Quad word value to set.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If value is not a valid qword (0-0xFFFFFFFFFFFFFFFF).

set_word_at

set_word_at(ea: ea_t, value: int) -> None

Sets a word (2 bytes) value at the specified address.

Args: ea: The effective address. value: Word value to set.

Raises: InvalidEAError: If the effective address is invalid. InvalidParameterError: If value is not a valid word (0-0xFFFF).

NoValueError

NoValueError(ea: ea_t)

Bases: ValueError

Raised when a read operation is attempted on an uninitialized address.

SearchFlags

Bases: IntFlag

Search flags for text and pattern searching.

Attributes:

  • BRK

    Return BADADDR if the search was cancelled.

  • CASE

    Case-sensitive search (case-insensitive otherwise)

  • DOWN

    Search towards higher addresses

  • IDENT

    Search for an identifier (text search). It means that the

  • NOBRK

    Don't test if the user interrupted the search

  • NOSHOW

    Don't display the search progress/refresh screen

  • REGEX

    Regular expressions in search string

  • UP

    Search towards lower addresses

BRK class-attribute instance-attribute

BRK = SEARCH_BRK

Return BADADDR if the search was cancelled.

CASE class-attribute instance-attribute

CASE = SEARCH_CASE

Case-sensitive search (case-insensitive otherwise)

DOWN class-attribute instance-attribute

DOWN = SEARCH_DOWN

Search towards higher addresses

IDENT class-attribute instance-attribute

IDENT = SEARCH_IDENT

Search for an identifier (text search). It means that the characters before and after the match cannot be is_visible_char().

NOBRK class-attribute instance-attribute

NOBRK = SEARCH_NOBRK

Don't test if the user interrupted the search

NOSHOW class-attribute instance-attribute

NOSHOW = SEARCH_NOSHOW

Don't display the search progress/refresh screen

REGEX class-attribute instance-attribute

REGEX = SEARCH_REGEX

Regular expressions in search string

UP class-attribute instance-attribute

UP = SEARCH_UP

Search towards lower addresses

StringType

Bases: IntEnum

String type constants for string operations.

Attributes:

  • C

    C-style string.

  • C16

    Zero-terminated 32bit chars.

  • C32

    Zero-terminated 32bit chars.

  • PASCAL

    Pascal-style, one-byte length prefix.

  • PASCAL_16

    Pascal-style, two-byte length prefix.

  • PASCAL_32

    Pascal-style, four-byte length prefix.

C class-attribute instance-attribute

C = STRTYPE_C

C-style string.

C16 class-attribute instance-attribute

C16 = STRTYPE_C_16

Zero-terminated 32bit chars.

C32 class-attribute instance-attribute

C32 = STRTYPE_C_32

Zero-terminated 32bit chars.

PASCAL class-attribute instance-attribute

PASCAL = STRTYPE_PASCAL

Pascal-style, one-byte length prefix.

PASCAL_16 class-attribute instance-attribute

PASCAL_16 = STRTYPE_PASCAL_16

Pascal-style, two-byte length prefix.

PASCAL_32 class-attribute instance-attribute

PASCAL_32 = STRTYPE_PASCAL_32

Pascal-style, four-byte length prefix.

UnsupportedValueError

UnsupportedValueError(message: str)

Bases: ValueError

Raised when a read operation is attempted on a value which has an unsupported format.