IDA SDK

- Main Page
- Header Files
- Classes
- Modules

- File List
- File Members

Functions | Macros
search.hpp File Reference

## Detailed Description

Middle-level search functions.

They all are controlled by Search flags

## Functions
bool | search_down (int sflag)
| Is the SEARCH_DOWN bit set?
idaman int ida_export | search (void *ud, place_t *start, const place_t *end, int *startx, const char *str, int sflag)
| Search for a text substring (low level function). More...
idaman int ida_export | user2bin (ea_t ea, const char *in, uchar *out, uchar *mask, int radix, bool unicode)
| Convert user-specified binary string to internal representation. More...
find_... functions
  Parameters
  | ea | start ea
  | sflag | combination of Search flags
  [out] | opnum | filled with operand number whenever relevant
Returns first ea at which the search criteria is met
idaman ea_t ida_export | find_error (ea_t ea, int sflag, int *opnum=NULL)
| Find next error or problem.
idaman ea_t ida_export | find_notype (ea_t ea, int sflag, int *opnum=NULL)
| Find next operand without any type info.
idaman ea_t ida_export | find_unknown (ea_t ea, int sflag)
| Find next unexplored address.
idaman ea_t ida_export | find_defined (ea_t ea, int sflag)
| Find next ea that is the start of an instruction or data.
idaman ea_t ida_export | find_void (ea_t ea, int sflag, int *opnum=NULL)
| Find next void operand.
idaman ea_t ida_export | find_data (ea_t ea, int sflag)
| Find next data address.
idaman ea_t ida_export | find_code (ea_t ea, int sflag)
| Find next code address.
idaman ea_t ida_export | find_not_func (ea_t ea, int sflag)
| Find next code address that does not belong to a function.
idaman ea_t ida_export | find_imm (ea_t newEA, int sflag, sval_t srchValue, int *opnum=NULL)
| Find next immediate operand with the given value.
idaman ea_t ida_export | find_binary (ea_t startea, ea_t endea, const char *ubinstr, int radix, int sflag)
| Find next address that denotes the start of the specified binary string. More...
idaman ea_t ida_export | find_text (ea_t startEA, int y, int x, const char *ustr, int sflag)
| See search()

## Macros
#define | SEARCH_UP 0x000
| search lower addresses
#define | SEARCH_DOWN 0x001
| search higher addresses
#define | SEARCH_NEXT 0x002
| useful only for search() and find_binary(). More...
#define | SEARCH_CASE 0x004
| case-sensitive search
#define | SEARCH_REGEX 0x008
| regular expressions (only for txt search)
#define | SEARCH_NOBRK 0x010
| don't test ctrl-break
#define | SEARCH_NOSHOW 0x020
| don't display the search progress
#define | SEARCH_UNICODE 0x040
| treat strings as unicode
#define | SEARCH_IDENT 0x080
| search for an identifier. More...
#define | SEARCH_BRK 0x100
| return BADADDR if break is pressed during find_imm()

## Function Documentation

idaman ea_t ida_export find_binary | ( | ea_t | startea,
|  | ea_t | endea,
|  | const char * | ubinstr,
|  | int | radix,
|  | int | sflag
| ) |  |

Find next address that denotes the start of the specified binary string.

Parameters

  startea,endea | range to search
  ubinstr,radix | see user2bin()

idaman int ida_export search | ( | void * | ud,
|  | place_t * | start,
|  | const place_t * | end,
|  | int * | startx,
|  | const char * | str,
|  | int | sflag
| ) |  |

Search for a text substring (low level function).

Parameters

  | ud | line array parameter
  [in,out] | start | pointer to starting place: start->ea: starting address start->lnnum: starting Y coordinate
  | end | pointer to ending place: end->ea: ending address end->lnnum: ending Y coordinate
  [in,out] | startx | pointer to starting X coordinate
  | str | substring to search for.
  | sflag | Search flags

Return values

  0 | substring not found
  1 | substring found. The matching position is returned in: start->ea: address start->lnnum: Y coordinate *startx: X coordinate
  2 | search was cancelled by ctrl-break. The farthest searched address is returned in the same manner as in the successful return (1).
  3 | the input regular expression is bad. The error message was displayed.

idaman int ida_export user2bin | ( | ea_t | ea,
|  | const char * | in,
|  | uchar * | out,
|  | uchar * | mask,
|  | int | radix,
|  | bool | unicode
| ) |  |

Convert user-specified binary string to internal representation.

Parameters

  | ea | linear address to convert for (the conversion depends on the address, because the number of bits in a byte depend on the segment type)
  | in | input text string. contains space-separated: numbers (numeric base is determined by 'radix') if value of number fits a byte, it is considered as a byte if value of number fits a word, it is considered as 2 bytes if value of number fits a dword,it is considered as 4 bytes "..." string constants 'x' character constants ? question marks (to denote variable bytes)
  [out] | out | buffer for the output sequence of bytes
  [out] | mask | buffer for the output comparison mask. if mask[0] == 0xFF upon return, then there were question marks in the input text string.
  | radix | numeric base of numbers (8,10,16)
  | unicode | treat strings as unicode

Note
  L"string" is another way to enter unicode strings

Returns
  length of output string. -1 if the input string has bad format (warning is displayed).

Note
  the output buffers are assumed to be MAXSTR bytes