Module ida_lines
High level functions that deal with the generation of the disassembled text lines.
This file also contains definitions for the syntax highlighting.
Finally there are functions that deal with anterior/posterior user-defined lines.
Global variables
var COLOR_ADDR-
hidden address marks. the address is represented as 8digit hex number: 01234567. it doesn't have COLOR_OFF pair. NB: for 64-bit IDA, the address is 16digit.
var COLOR_ADDR_SIZE-
Size of a tagged address (see COLOR_ADDR)
var COLOR_ALTOP-
Alternative operand.
var COLOR_ASMDIR-
Assembler directive.
var COLOR_AUTOCMT-
Automatic comment.
var COLOR_BG_MAX-
Max color number.
var COLOR_BINPREF-
Binary line prefix bytes.
var COLOR_CHAR-
Char constant in instruction.
var COLOR_CNAME-
Regular code name.
var COLOR_CODE-
Single instruction.
var COLOR_CODNAME-
Dummy code name.
var COLOR_COLLAPSED-
Collapsed line.
var COLOR_CREF-
Code reference.
var COLOR_CREFTAIL-
Code reference to tail byte.
var COLOR_CURITEM-
Current item.
var COLOR_CURLINE-
Current line.
var COLOR_DATA-
Data bytes.
var COLOR_DATNAME-
Dummy Data Name.
var COLOR_DCHAR-
Char constant in data directive.
var COLOR_DEFAULT-
Default.
var COLOR_DEMNAME-
Demangled Name.
var COLOR_DNAME-
Regular Data Name.
var COLOR_DNUM-
Numeric constant in data directive.
var COLOR_DREF-
Data reference.
var COLOR_DREFTAIL-
Data reference to tail byte.
var COLOR_DSTR-
String constant in data directive.
var COLOR_ERROR-
Error or problem.
var COLOR_ESC-
Escape character (Quote next character). This is needed to output '\1' and '\2' characters.
var COLOR_EXTERN-
External name definition segment.
var COLOR_EXTRA-
Extra line.
var COLOR_FG_MAX-
Max color number.
var COLOR_HIDLINE-
Hidden line.
var COLOR_HIDNAME-
Hidden name.
var COLOR_IMPNAME-
Imported name.
var COLOR_INSN-
Instruction.
var COLOR_INV-
Escape character (Inverse foreground and background colors). This escape character has no corresponding COLOR_OFF. Its action continues until the next COLOR_INV or end of line.
var COLOR_KEYWORD-
Keywords.
var COLOR_LIBFUNC-
Library function.
var COLOR_LIBNAME-
Library function name.
var COLOR_LOCNAME-
Local variable name.
var COLOR_LUMFUNC-
Lumina function.
var COLOR_LUMINA-
Lumina-related, only for the navigation band.
var COLOR_MACRO-
Macro.
var COLOR_NUMBER-
Numeric constant in instruction.
var COLOR_OFF-
Escape character (OFF). Followed by a color code (color_t).
var COLOR_ON-
Escape character (ON). Followed by a color code (color_t).
var COLOR_OPND1-
Instruction operand 1.
var COLOR_OPND2-
Instruction operand 2.
var COLOR_OPND3-
Instruction operand 3.
var COLOR_OPND4-
Instruction operand 4.
var COLOR_OPND5-
Instruction operand 5.
var COLOR_OPND6-
Instruction operand 6.
var COLOR_OPND7-
Instruction operand 7.
var COLOR_OPND8-
Instruction operand 8.
var COLOR_PREFIX-
Line prefix.
var COLOR_REG-
Register name.
var COLOR_REGCMT-
Regular comment.
var COLOR_REGFUNC-
Regular function.
var COLOR_RESERVED1-
This tag is reserved for internal IDA use.
var COLOR_RPTCMT-
Repeatable comment (comment defined somewhere else)
var COLOR_SEGNAME-
Segment name.
var COLOR_SELECTED-
Selected.
var COLOR_STRING-
String constant in instruction.
var COLOR_SYMBOL-
Punctuation.
var COLOR_UNAME-
Regular unknown name.
var COLOR_UNKNAME-
Dummy unknown name.
var COLOR_UNKNOWN-
Unexplored byte.
var COLOR_VOIDOP-
Void operand.
var SCOLOR_ADDR-
Hidden address mark.
var SCOLOR_ALTOP-
Alternative operand.
var SCOLOR_ASMDIR-
Assembler directive.
var SCOLOR_AUTOCMT-
Automatic comment.
var SCOLOR_BINPREF-
Binary line prefix bytes.
var SCOLOR_CHAR-
Char constant in instruction.
var SCOLOR_CNAME-
Regular code name.
var SCOLOR_CODNAME-
Dummy code name.
var SCOLOR_COLLAPSED-
Collapsed line.
var SCOLOR_CREF-
Code reference.
var SCOLOR_CREFTAIL-
Code reference to tail byte.
var SCOLOR_DATNAME-
Dummy Data Name.
var SCOLOR_DCHAR-
Char constant in data directive.
var SCOLOR_DEFAULT-
Default.
var SCOLOR_DEMNAME-
Demangled Name.
var SCOLOR_DNAME-
Regular Data Name.
var SCOLOR_DNUM-
Numeric constant in data directive.
var SCOLOR_DREF-
Data reference.
var SCOLOR_DREFTAIL-
Data reference to tail byte.
var SCOLOR_DSTR-
String constant in data directive.
var SCOLOR_ERROR-
Error or problem.
var SCOLOR_ESC-
Escape character (Quote next character)
var SCOLOR_EXTRA-
Extra line.
var SCOLOR_HIDNAME-
Hidden name.
var SCOLOR_IMPNAME-
Imported name.
var SCOLOR_INSN-
Instruction.
var SCOLOR_INV-
Escape character (Inverse colors)
var SCOLOR_KEYWORD-
Keywords.
var SCOLOR_LIBNAME-
Library function name.
var SCOLOR_LOCNAME-
Local variable name.
var SCOLOR_MACRO-
Macro.
var SCOLOR_NUMBER-
Numeric constant in instruction.
var SCOLOR_OFF-
Escape character (OFF)
var SCOLOR_ON-
Escape character (ON)
var SCOLOR_PREFIX-
Line prefix.
var SCOLOR_REG-
Register name.
var SCOLOR_REGCMT-
Regular comment.
var SCOLOR_RPTCMT-
Repeatable comment (defined not here)
var SCOLOR_SEGNAME-
Segment name.
var SCOLOR_STRING-
String constant in instruction.
var SCOLOR_SYMBOL-
Punctuation.
var SCOLOR_UNAME-
Regular unknown name.
var SCOLOR_UNKNAME-
Dummy unknown name.
var SCOLOR_VOIDOP-
Void operand.
var VEL_CMT-
append comment line
var VEL_POST-
append posterior line
Functions
def COLSTR(str, tag)-
Utility function to create a colored line @param str: The string @param tag: Color tag constant. One of SCOLOR_XXXX
def add_extra_cmt(*args) ‑> bool-
add_extra_cmt(ea, isprev, format) -> bool Add anterior/posterior comment line(s).
@param ea: (C++: ea_t) linear address @param isprev: (C++: bool) do we add anterior lines? (0-no, posterior) @param format: (C++: const char *) printf() style format string. may contain \n to denote new lines. The resulting string should not contain comment characters (;), the kernel will add them automatically. @return: true if success
def add_extra_line(*args) ‑> bool-
add_extra_line(ea, isprev, format) -> bool Add anterior/posterior non-comment line(s).
@param ea: (C++: ea_t) linear address @param isprev: (C++: bool) do we add anterior lines? (0-no, posterior) @param format: (C++: const char *) printf() style format string. may contain \n to denote new lines. @return: true if success
def add_pgm_cmt(*args) ‑> bool-
add_pgm_cmt(format) -> bool Add anterior comment line(s) at the start of program.
@param format: (C++: const char *) printf() style format string. may contain \n to denote new lines. The resulting string should not contain comment characters (;), the kernel will add them automatically. @return: true if success
def add_sourcefile(ea1: ea_t, ea2: ea_t, filename: char const *)-
add_sourcefile(ea1, ea2, filename) -> bool Mark a range of address as belonging to a source file. An address range may belong only to one source file. A source file may be represented by several address ranges.
@param ea1: (C++: ea_t) linear address of start of the address range @param ea2: (C++: ea_t) linear address of end of the address range (excluded) @param filename: (C++: const char *) name of source file. @return: success
def calc_bg_color(ea: ea_t)-
calc_bg_color(ea) -> bgcolor_t Get background color for line at 'ea'
@param ea: (C++: ea_t) @return: RGB color
def calc_prefix_color(ea: ea_t)-
calc_prefix_color(ea) -> color_t Get prefix color for line at 'ea'
@param ea: (C++: ea_t) @return: Line prefix colors
def create_encoding_helper(*args)-
create_encoding_helper(encidx=-1, nr=nr_once) -> encoder_t
@param encidx: int @param nr: enum encoder_t::notify_recerr_t
def del_extra_cmt(ea: ea_t, what: int)-
del_extra_cmt(ea, what) -> bool
@param ea: ea_t @param what: int
def del_sourcefile(ea: ea_t)-
del_sourcefile(ea) -> bool Delete information about the source file.
@param ea: (C++: ea_t) linear address @return: success
def delete_extra_cmts(ea: ea_t, what: int)-
delete_extra_cmts(ea, what)
@param ea: ea_t @param what: int
def generate_disasm_line(ea: ea_t, flags: int = 0)-
generate_disasm_line(ea, flags=0) -> bool
@param ea: ea_t @param flags: int
def generate_disassembly(ea: ea_t, max_lines: int, as_stack: bool, notags: bool)-
generate_disassembly(ea, max_lines, as_stack, notags) -> (int, [str, …]) Generate disassembly lines (many lines) and put them into a buffer
@param ea: address to generate disassembly for @param max_lines: how many lines max to generate @param as_stack: Display undefined items as 2/4/8 bytes @param notags: bool @return: - None on failure - tuple(most_important_line_number, list(lines)) : Returns a tuple containing the most important line number and a list of generated lines
def get_extra_cmt(ea: ea_t, what: int)-
get_extra_cmt(ea, what) -> ssize_t
@param ea: ea_t @param what: int
def get_first_free_extra_cmtidx(ea: ea_t, start: int)-
get_first_free_extra_cmtidx(ea, start) -> int
@param ea: ea_t @param start: int
def get_sourcefile(ea: ea_t, bounds: range_t = None)-
get_sourcefile(ea, bounds=None) -> char const Get name of source file occupying the given address.
@param ea: (C++: ea_t) linear address @param bounds: (C++: range_t *) pointer to the output buffer with the address range for the current file. May be nullptr. @return: nullptr if source file information is not found, otherwise returns pointer to file name
def install_user_defined_prefix(*args) ‑> bool-
install_user_defined_prefix(prefix_len, udp, owner) -> bool User-defined line-prefixes are displayed just after the autogenerated line prefixes in the disassembly listing. There is no need to call this function explicitly. Use the user_defined_prefix_t class.
@param prefix_len: (C++: size_t) prefixed length. if 0, then uninstall UDP @param udp: (C++: struct user_defined_prefix_t ) object to generate user-defined prefix @param owner: (C++: const void ) pointer to the plugin_t that owns UDP if non-nullptr, then the object will be uninstalled and destroyed when the plugin gets unloaded
def requires_color_esc(c)-
Checks if the given character requires escaping Is the given char a color escape character?
def tag_addr(ea: ea_t)-
tag_addr(ea) -> PyObject * Insert an address mark into a string.
@param ea: (C++: ea_t) address to include
def tag_advance(line: char const *, cnt: int)-
tag_advance(line, cnt) -> int Move pointer to a 'line' to 'cnt' positions right. Take into account escape sequences.
@param line: (C++: const char *) pointer to string @param cnt: (C++: int) number of positions to move right @return: moved pointer
def tag_remove(nonnul_instr: char const *)-
tag_remove(nonnul_instr) -> str
@param nonnul_instr: char const *
def tag_skipcode(line: char const *)-
tag_skipcode(line) -> int Skip one color code. This function should be used if you are interested in color codes and want to analyze all of them. Otherwise tag_skipcodes() function is better since it will skip all colors at once. This function will skip the current color code if there is one. If the current symbol is not a color code, it will return the input.
@param line: (C++: const char *) char const * @return: moved pointer
def tag_skipcodes(line: char const *)-
tag_skipcodes(line) -> int Move the pointer past all color codes.
@param line: (C++: const char *) can't be nullptr @return: moved pointer, can't be nullptr
def tag_strlen(line: char const *)-
tag_strlen(line) -> ssize_t Calculate length of a colored string This function computes the length in unicode codepoints of a line
@param line: (C++: const char *) char const * @return: the number of codepoints in the line, or -1 on error
def update_extra_cmt(ea: ea_t, what: int, str: char const *)-
update_extra_cmt(ea, what, str) -> bool
@param ea: ea_t @param what: int @param str: char const *
Classes
class user_defined_prefix_t (*args)-
Proxy of C++ user_defined_prefix_t class.
init(self, prefix_len, owner) -> user_defined_prefix_t
@param prefix_len: size_t @param owner: void const *
Instance variables
var thisown-
The membership flag
Methods
def get_user_defined_prefix(self, ea: ea_t, insn: insn_t const &, lnnum: int, indent: int, line: char const *)-
get_user_defined_prefix(self, ea, insn, lnnum, indent, line) This callback must be overridden by the derived class.
@param ea: (C++: ea_t) the current address @param insn: (C++: const class insn_t &) the current instruction. if the current item is not an instruction, then insn.itype is zero. @param lnnum: (C++: int) number of the current line (each address may have several listing lines for it). 0 means the very first line for the current address. @param indent: (C++: int) see explanations for gen_printf() @param line: (C++: const char *) the line to be generated. the line usually contains color tags. this argument can be examined to decide whether to generate the prefix.