Module ida_segregs
[frames] | no frames]

Module ida_segregs

IDA Plugin SDK API wrapper: segregs

Classes
  sreg_range_t
Proxy of C++ sreg_range_t class.
Functions
 
copy_sreg_ranges(dst_rg, src_rg, map_selector=False)
Duplicate segment register ranges.
bool
del_sreg_range(ea, rg)
Delete segment register range started at ea.
bool
get_prev_sreg_range(out, ea, rg)
Get segment register range previous to one with address.more efficient then get_sreg_range(reg, ea-1)
sel_t
get_sreg(ea, rg)
Get value of a segment register.
bool
get_sreg_range(out, ea, rg)
Get segment register range by linear address.
int
get_sreg_range_num(ea, rg)
Get number of segment register range by address.
size_t
get_sreg_ranges_qty(rg)
Get number of segment register ranges.
bool
getn_sreg_range(out, rg, n)
Get segment register range by its number.
 
set_default_dataseg(ds_sel)
Set default value of DS register for all segments.
bool
set_default_sreg_value(sg, rg, value)
Set default value of a segment register for a segment.
 
set_sreg_at_next_code(ea1, ea2, rg, value)
Set the segment register value at the next instruction.
bool
split_sreg_range(ea, rg, v, tag, silent=False)
Create a new segment register range.
Variables
  R_cs = 30
  R_ds = 32
  R_es = 29
  R_fs = 33
  R_gs = 34
  R_ss = 31
  SR_auto = 3
  SR_autostart = 4
  SR_inherit = 1
  SR_user = 2
  SWIG_PYTHON_LEGACY_BOOL = 1
  __package__ = None
Function Details

copy_sreg_ranges(dst_rg, src_rg, map_selector=False)

 

Duplicate segment register ranges.

Parameters:
  • dst_rg - number of destination segment register (C++: int)
  • src_rg - copy ranges from (C++: int)
  • map_selector - map selectors to linear addresses using sel2ea() (C++: bool)

del_sreg_range(ea, rg)

 

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 (C++: ea_t)
  • rg - the segment register number (C++: int)
Returns: bool
success

get_prev_sreg_range(out, ea, rg)

 

Get segment register range previous to one with address.more efficient then get_sreg_range(reg, ea-1)

Parameters:
  • out - segment register range (C++: sreg_range_t *)
  • ea - any linear address in the program (C++: ea_t)
  • rg - the segment register number (C++: int)
Returns: bool
success

get_sreg(ea, rg)

 

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 (C++: ea_t)
  • rg - number of the segment register (C++: int)
Returns: sel_t
value of the segment register, BADSEL if value is unknown.

get_sreg_range(out, ea, rg)

 

Get segment register range by linear address.

Parameters:
  • out - segment register range (C++: sreg_range_t *)
  • ea - any linear address in the program (C++: ea_t)
  • rg - the segment register number (C++: int)
Returns: bool
success

get_sreg_range_num(ea, rg)

 

Get number of segment register range by address.

Parameters:
  • ea - any address in the range (C++: ea_t)
  • rg - the segment register number (C++: int)
Returns: int
-1 if no range occupies the specified address. otherwise returns number of the specified range (0..get_srranges_qty()-1)

get_sreg_ranges_qty(rg)

 

Get number of segment register ranges.

Parameters:
  • rg - the segment register number (C++: int)
Returns: size_t

getn_sreg_range(out, rg, n)

 

Get segment register range by its number.

Parameters:
  • out - segment register range (C++: sreg_range_t *)
  • rg - the segment register number (C++: int)
  • n - number of range (0..qty()-1) (C++: int)
Returns: bool
success

set_default_dataseg(ds_sel)

 

Set default value of DS register for all segments.

Parameters:
  • ds_sel, (C++ - sel_t)

set_default_sreg_value(sg, rg, value)

 

Set default value of a segment register for a segment.

Parameters:
  • sg - pointer to segment structure if NULL, then set the register for all segments (C++: segment_t *)
  • rg - number of segment register (C++: int)
  • value - its default value. this value will be used by get_sreg() if value of the register is unknown at the specified address. (C++: sel_t)
Returns: bool
success

set_sreg_at_next_code(ea1, ea2, rg, value)

 

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 (C++: ea_t)
  • ea2 - the maximal address (C++: ea_t)
  • rg - the segment register number (C++: int)
  • value - the segment register value (C++: sel_t)

split_sreg_range(ea, rg, v, tag, silent=False)

 

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. (C++: ea_t)
  • rg - the number of the segment register (C++: int)
  • v - the new value of the segment register. If the value is unknown, you should specify BADSEL . (C++: sel_t)
  • tag - the register info tag. see Segment register range tags (C++: uchar)
  • silent - if false, display a warning() in the case of failure (C++: bool)
Returns: bool
success