typeparser module

Class

Description

binaryninja.typeparser.BasicTypeParserResult

binaryninja.typeparser.CoreTypeParser

binaryninja.typeparser.ParsedType

binaryninja.typeparser.QualifiedNameTypeAndId

binaryninja.typeparser.TypeParser

binaryninja.typeparser.TypeParserError

binaryninja.typeparser.TypeParserResult

binaryninja.typeparser.to_bytes

BasicTypeParserResult

classBasicTypeParserResult[source]

Bases:object

BasicTypeParserResult(types: Dict[ForwardRef(‘types.QualifiedName’), ForwardRef(‘types.Type’)], variables: Dict[ForwardRef(‘types.QualifiedName’), ForwardRef(‘types.Type’)], functions: Dict[ForwardRef(‘types.QualifiedName’), ForwardRef(‘types.Type’)])

__init__(types:Dict[QualifiedName,Type],variables:Dict[QualifiedName,Type],functions:Dict[QualifiedName,Type])None
Parameters:
Return type:

None

functions:Dict[QualifiedName,Type]
types:Dict[QualifiedName,Type]
variables:Dict[QualifiedName,Type]

CoreTypeParser

classCoreTypeParser[source]

Bases:TypeParser

get_option_text(option:TypeParserOption,value:str)str|None[source]

Get the string representation of an option for passing to parse_type_*

Parameters:
Returns:

A string representing the option if the parser supports it, otherwise None

Return type:

str |None

parse_type_string(source:str,platform:Platform,existing_types:types.TypeContainerType|None=None)Tuple[Tuple[types.QualifiedNameType,Type]|None,List[TypeParserError]][source]

Parse a single type and name from a string containing their definition.

Parameters:
  • source (str) – Source code to parse

  • platform (Platform) – Platform to assume the types are relevant to

  • existing_types (types.TypeContainerType |None) – Optional container of all existing types to use for parsing context

Returns:

A tuple of (result, errors) where result is a tuple of (type, name) orNone of there was a fatal error.

Return type:

Tuple[Tuple[types.QualifiedNameType,Type] |None,List[TypeParserError]]

parse_types_from_source(source:str,file_name:str,platform:Platform,existing_types:types.TypeContainerType|None=None,options:List[str]|None=None,include_dirs:List[str]|None=None,auto_type_source:str='')Tuple[TypeParserResult|None,List[TypeParserError]][source]

Parse an entire block of source into types, variables, and functions

Parameters:
  • source (str) – Source code to parse

  • file_name (str) – Name of the file containing the source (optional: exists on disk)

  • platform (Platform) – Platform to assume the types are relevant to

  • existing_types (types.TypeContainerType |None) – Optional container of all existing types to use for parsing context

  • options (List[str]|None) – Optional string arguments to pass as options, e.g. command line arguments

  • include_dirs (List[str]|None) – Optional list of directories to include in the header search path

  • auto_type_source (str) – Optional source of types if used for automatically generated types

Returns:

A tuple of (result, errors) where the result is None if there was a fatal error

Return type:

Tuple[TypeParserResult |None,List[TypeParserError]]

preprocess_source(source:str,file_name:str,platform:Platform,existing_types:types.TypeContainerType|None=None,options:List[str]|None=None,include_dirs:List[str]|None=None)Tuple[str|None,List[TypeParserError]][source]

Preprocess a block of source, returning the source that would be parsed

Parameters:
  • source (str) – Source code to process

  • file_name (str) – Name of the file containing the source (does not need to exist on disk)

  • platform (Platform) – Platform to assume the source is relevant to

  • existing_types (types.TypeContainerType |None) – Optional collection of all existing types to use for parsing context

  • options (List[str]|None) – Optional string arguments to pass as options, e.g. command line arguments

  • include_dirs (List[str]|None) – Optional list of directories to include in the header search path

Returns:

A tuple of (preproccessed source, errors), where the preproccessed sourceis None if there was a fatal error.

Return type:

Tuple[str |None,List[TypeParserError]]

ParsedType

classParsedType[source]

Bases:object

ParsedType(name: ‘types.QualifiedNameType’, type: ‘types.Type’, is_user: bool)

__init__(name:types.QualifiedNameType,type:Type,is_user:bool)None
Parameters:
  • name (types.QualifiedNameType) –

  • type (Type) –

  • is_user (bool) –

Return type:

None

is_user:bool
name:types.QualifiedNameType
type:Type

QualifiedNameTypeAndId

classQualifiedNameTypeAndId[source]

Bases:object

QualifiedNameTypeAndId(name: ‘types.QualifiedNameType’, id: str, type: ‘types.Type’)

__init__(name:types.QualifiedNameType,id:str,type:Type)None
Parameters:
  • name (types.QualifiedNameType) –

  • id (str) –

  • type (Type) –

Return type:

None

id:str
name:types.QualifiedNameType
type:Type

TypeParser

classTypeParser[source]

Bases:object

__init__(handle=None)[source]
get_option_text(option:TypeParserOption,value:str)str|None[source]

Get the string representation of an option for passing to parse_type_*

Parameters:
Returns:

A string representing the option if the parser supports it, otherwise None

Return type:

str |None

parse_type_string(source:str,platform:Platform,existing_types:types.TypeContainerType|None=None)Tuple[Tuple[types.QualifiedNameType,Type]|None,List[TypeParserError]][source]

Parse a single type and name from a string containing their definition.

Parameters:
  • source (str) – Source code to parse

  • platform (Platform) – Platform to assume the types are relevant to

  • existing_types (types.TypeContainerType |None) – Optional container of all existing types to use for parsing context

Returns:

A tuple of (result, errors) where result is a tuple of (type, name) orNone of there was a fatal error.

Return type:

Tuple[Tuple[types.QualifiedNameType,Type] |None,List[TypeParserError]]

parse_types_from_source(source:str,file_name:str,platform:Platform,existing_types:types.TypeContainerType|None=None,options:List[str]|None=None,include_dirs:List[str]|None=None,auto_type_source:str='')Tuple[TypeParserResult|None,List[TypeParserError]][source]

Parse an entire block of source into types, variables, and functions

Parameters:
  • source (str) – Source code to parse

  • file_name (str) – Name of the file containing the source (optional: exists on disk)

  • platform (Platform) – Platform to assume the types are relevant to

  • existing_types (types.TypeContainerType |None) – Optional container of all existing types to use for parsing context

  • options (List[str]|None) – Optional string arguments to pass as options, e.g. command line arguments

  • include_dirs (List[str]|None) – Optional list of directories to include in the header search path

  • auto_type_source (str) – Optional source of types if used for automatically generated types

Returns:

A tuple of (result, errors) where the result is None if there was a fatal error

Return type:

Tuple[TypeParserResult |None,List[TypeParserError]]

preprocess_source(source:str,file_name:str,platform:Platform,existing_types:types.TypeContainerType|None=None,options:List[str]|None=None,include_dirs:List[str]|None=None)Tuple[str|None,List[TypeParserError]][source]

Preprocess a block of source, returning the source that would be parsed

Parameters:
  • source (str) – Source code to process

  • file_name (str) – Name of the file containing the source (does not need to exist on disk)

  • platform (Platform) – Platform to assume the source is relevant to

  • existing_types (types.TypeContainerType |None) – Optional collection of all existing types to use for parsing context

  • options (List[str]|None) – Optional string arguments to pass as options, e.g. command line arguments

  • include_dirs (List[str]|None) – Optional list of directories to include in the header search path

Returns:

A tuple of (preproccessed source, errors), where the preproccessed sourceis None if there was a fatal error.

Return type:

Tuple[str |None,List[TypeParserError]]

register()[source]

Register a custom parser with the API

name=None

TypeParserError

classTypeParserError[source]

Bases:object

TypeParserError(severity: binaryninja.enums.TypeParserErrorSeverity, message: str, file_name: str, line: int, column: int)

__init__(severity:TypeParserErrorSeverity,message:str,file_name:str,line:int,column:int)None
Parameters:
Return type:

None

column:int
file_name:str
line:int
message:str
severity:TypeParserErrorSeverity

TypeParserResult

classTypeParserResult[source]

Bases:object

TypeParserResult(types: List[binaryninja.typeparser.ParsedType], variables: List[binaryninja.typeparser.ParsedType], functions: List[binaryninja.typeparser.ParsedType])

__init__(types:List[ParsedType],variables:List[ParsedType],functions:List[ParsedType])None
Parameters:
Return type:

None

functions:List[ParsedType]
types:List[ParsedType]
variables:List[ParsedType]

to_bytes

classto_bytes[source]

Bases: