ida_segregs
Functions that deal with the segment registers.
If your processor doesn’t use segment registers, then these functions are of no use for you. However, you should define two virtual segment registers - CS and DS (for code segment and data segment) and specify their internal numbers in the LPH structure (processor_t::reg_code_sreg and processor_t::reg_data_sreg).
Attributes
the value is inherited from the previous range |
|
the value is specified by the user |
|
the value is determined by IDA |
|
used as SR_auto for segment starting address |
Classes
Functions
|
Get value of a segment register. This function uses segment register range and default segment register values stored in the segment structure. |
|
Create a new segment register range. This function is used when the IDP emulator detects that a segment register changes its value. |
|
Set default value of a segment register for a segment. |
|
Set the segment register value at the next instruction. This function is designed to be called from idb_event::sgr_changed handler in order to contain the effect of changing a segment register value only until the next instruction. |
|
Get segment register range by linear address. |
|
Get segment register range previous to one with address. |
|
Set default value of DS register for all segments. |
|
Get number of segment register ranges. |
|
Get segment register range by its number. |
|
Get number of segment register range by address. |
|
Delete segment register range started at ea. When a segment register range is deleted, the previous range is extended to cover the empty space. The segment register range at the beginning of a segment cannot be deleted. |
|
Duplicate segment register ranges. |
Module Contents
- ida_segregs.SWIG_PYTHON_LEGACY_BOOL
- ida_segregs.R_es
- ida_segregs.R_cs
- ida_segregs.R_ss
- ida_segregs.R_ds
- ida_segregs.R_fs
- ida_segregs.R_gs
- class ida_segregs.sreg_range_t
Bases:
ida_range.range_t
- thisown
- val: sel_t
segment register value
- tag: uchar
Segment register range tags
- ida_segregs.SR_inherit
the value is inherited from the previous range
- ida_segregs.SR_user
the value is specified by the user
- ida_segregs.SR_auto
the value is determined by IDA
- ida_segregs.SR_autostart
used as SR_auto for segment starting address
- ida_segregs.get_sreg(ea: ida_idaapi.ea_t, rg: int) sel_t
Get value of a segment register. This function uses segment register range and default segment register values stored in the segment structure.
- Parameters:
ea – linear address in the program
rg – number of the segment register
- Returns:
value of the segment register, BADSEL if value is unknown or rg is not a segment register.
- ida_segregs.split_sreg_range(ea: ida_idaapi.ea_t, rg: int, v: sel_t, tag: uchar, silent: bool = False) bool
Create a new segment register range. This function is used when the IDP emulator detects that a segment register changes its value.
- Parameters:
ea – linear address where the segment register will have a new value. if ea==BADADDR, nothing to do.
rg – the number of the segment register
v – the new value of the segment register. If the value is unknown, you should specify BADSEL.
tag – the register info tag. see Segment register range tags
silent – if false, display a warning() in the case of failure
- Returns:
success
- ida_segregs.set_default_sreg_value(sg: segment_t *, rg: int, value: sel_t) bool
Set default value of a segment register for a segment.
- Parameters:
sg – pointer to segment structure if nullptr, then set the register for all segments
rg – number of segment register
value – its default value. this value will be used by get_sreg() if value of the register is unknown at the specified address.
- Returns:
success
- ida_segregs.set_sreg_at_next_code(ea1: ida_idaapi.ea_t, ea2: ida_idaapi.ea_t, rg: int, value: sel_t) None
Set the segment register value at the next instruction. This function is designed to be called from idb_event::sgr_changed handler in order to contain the effect of changing a segment register value only until the next instruction. It is useful, for example, in the ARM module: the modification of the T register does not affect existing instructions later in the code.
- Parameters:
ea1 – address to start to search for an instruction
ea2 – the maximal address
rg – the segment register number
value – the segment register value
- ida_segregs.get_sreg_range(out: sreg_range_t, ea: ida_idaapi.ea_t, rg: int) bool
Get segment register range by linear address.
- Parameters:
out – segment register range
ea – any linear address in the program
rg – the segment register number
- Returns:
success
- ida_segregs.get_prev_sreg_range(out: sreg_range_t, ea: ida_idaapi.ea_t, rg: int) bool
Get segment register range previous to one with address.
- Parameters:
out – segment register range
ea – any linear address in the program
rg – the segment register number
- Returns:
success
- ida_segregs.set_default_dataseg(ds_sel: sel_t) None
Set default value of DS register for all segments.
- ida_segregs.get_sreg_ranges_qty(rg: int) size_t
Get number of segment register ranges.
- Parameters:
rg – the segment register number
- ida_segregs.getn_sreg_range(out: sreg_range_t, rg: int, n: int) bool
Get segment register range by its number.
- Parameters:
out – segment register range
rg – the segment register number
n – number of range (0..qty()-1)
- Returns:
success
- ida_segregs.get_sreg_range_num(ea: ida_idaapi.ea_t, rg: int) int
Get number of segment register range by address.
- Parameters:
ea – any address in the range
rg – the segment register number
- Returns:
-1 if no range occupies the specified address. otherwise returns number of the specified range (0..get_srranges_qty()-1)
- ida_segregs.del_sreg_range(ea: ida_idaapi.ea_t, rg: int) bool
Delete segment register range started at ea. When a segment register range is deleted, the previous range is extended to cover the empty space. The segment register range at the beginning of a segment cannot be deleted.
- Parameters:
ea – start_ea of the deleted range
rg – the segment register number
- Returns:
success
- ida_segregs.copy_sreg_ranges(dst_rg: int, src_rg: int, map_selector: bool = False) None
Duplicate segment register ranges.
- Parameters:
dst_rg – number of destination segment register
src_rg – copy ranges from
map_selector – map selectors to linear addresses using sel2ea()