typelibrary module¶
- class TypeLibrary(handle: binaryninja._binaryninjacore.LP_BNTypeLibrary)[source]¶
Bases:
object
- Parameters
handle (binaryninja._binaryninjacore.LP_BNTypeLibrary) –
- add_alternate_name(name: str) None [source]¶
Adds an extra name to this type library used during library lookups and dependency resolution
- Parameters
name (str) –
- Return type
None
- add_named_object(name: QualifiedName, type: Type) None [source]¶
add_named_object directly inserts a named object into the type library’s object store. This is not done recursively, so care should be taken that types referring to other types through NamedTypeReferences are already appropriately prepared.
To add types and objects from an existing BinaryView, it is recommended to use
export_object_to_library
, which will automatically pull in all referenced types and record additional dependencies as needed.- Parameters
name (QualifiedName) –
t (Type) –
type (Type) –
- Return type
None
- add_named_type(name: Union[Iterable[Union[str, bytes]], str, QualifiedName], type: Type) None [source]¶
add_named_type directly inserts a named object into the type library’s object store. This is not done recursively, so care should be taken that types referring to other types through NamedTypeReferences are already appropriately prepared.
To add types and objects from an existing BinaryView, it is recommended to use
export_type_to_library
, which will automatically pull in all referenced types and record additional dependencies as needed.- Parameters
name (QualifiedName) –
t (Type) –
type (Type) –
- Return type
None
- add_platform(plat: Platform) None [source]¶
Associate a platform with a type library instance that has not been finalized.
This will cause the library to be searchable by
Platform.get_type_libraries_by_name
when loaded.This does not have side affects until finalization of the type library.
- Parameters
plat (Platform) –
- Return type
None
- add_type_source(name: QualifiedName, source: str) None [source]¶
Manually flag NamedTypeReferences to the given QualifiedName as originating from another source TypeLibrary with the given dependency name.
Warning
Use this api with extreme caution.
- Parameters
name (QualifiedName) –
source (str) –
- Return type
None
- clear_platforms() None [source]¶
Clears the list of platforms associated with a type library instance that has not been finalized
- Return type
None
- finalize() None [source]¶
Flags a newly created type library instance as finalized and makes it available for Platform and Architecture type library searches
- Return type
None
- static from_guid(arch: Architecture, guid: str)[source]¶
from_guid attempts to grab a type library associated with the provided Architecture and GUID pair
- Parameters
arch (Architecture) –
guid (str) –
- Return type
- static from_name(arch: Architecture, name: str)[source]¶
from_name looks up the first type library found with a matching name. Keep in mind that names are not necessarily unique.
- Parameters
arch (Architecture) –
name (str) –
- Return type
- get_named_object(name: Union[QualifiedName, str]) Optional[Type] [source]¶
get_named_object direct extracts a reference to a contained object – when attempting to extract types from a library into a BinaryView, consider using
import_library_object
instead.- Parameters
name (QualifiedName) –
- Return type
- get_named_type(name: Union[str, QualifiedName]) Optional[Type] [source]¶
get_named_type direct extracts a reference to a contained type – when attempting to extract types from a library into a BinaryView, consider using
import_library_type
instead.- Parameters
name (QualifiedName) –
- Return type
- static load_from_file(path: str) Optional[TypeLibrary] [source]¶
Loads a finalized type library instance from file
- Parameters
path (str) –
- Return type
- static new(arch: Architecture, name: str) TypeLibrary [source]¶
Creates an empty type library object with a random GUID and the provided name.
- Parameters
arch (Architecture) –
name (str) –
- Return type
- query_metadata(key: str) Optional[Metadata] [source]¶
query_metadata retrieves a metadata associated with the given key stored in the type library
- Parameters
key (string) – key to query
- Return type
metadata associated with the key
- Example
>>> lib.store_metadata("ordinals", {"9": "htons"}) >>> lib.query_metadata("ordinals")["9"] "htons"
- remove_metadata(key: str) None [source]¶
remove_metadata removes the metadata associated with key from the current type library.
- Parameters
key (string) – key associated with metadata
- Return type
None
- Example
>>> lib.store_metadata("integer", 1337) >>> lib.remove_metadata("integer")
- store_metadata(key: str, md: Metadata) None [source]¶
store_metadata stores an object for the given key in the current type library. Objects stored using store_metadata can be retrieved from any reference to the library. Objects stored are not arbitrary python objects! The values stored must be able to be held in a Metadata object. See
Metadata
for more information. Python objects could obviously be serialized using pickle but this intentionally a task left to the user since there is the potential security issues.This is primarily intended as a way to store Platform specific information relevant to BinaryView implementations; for example the PE BinaryViewType uses type library metadata to retrieve ordinal information, when available.
- Parameters
key (string) – key value to associate the Metadata object with
md (Varies) – object to store.
- Return type
None
- Example
>>> lib.store_metadata("ordinals", {"9": "htons"}) >>> lib.query_metadata("ordinals")["9"] "htons"
- write_to_file(path: str) None [source]¶
Saves a finalized type library instance to file
- Parameters
path (str) –
- Return type
None
- property alternate_names: List[str]¶
A list of extra names that will be considered a match by
Platform.get_type_libraries_by_name
- property arch: Architecture¶
The Architecture this type library is associated with
- property dependency_name: Optional[str]¶
The dependency_name of a library is the name used to record dependencies across type libraries. This allows, for example, a library with the name “musl_libc” to have dependencies on it recorded as “libc_generic”, allowing a type library to be used across multiple platforms where each has a specific libc that also provides the name “libc_generic” as an alternate_name.
- property named_objects: Dict[QualifiedName, Type]¶
A dict containing all named objects (functions, exported variables) provided by a type library (read-only)
- property named_types: Dict[QualifiedName, Type]¶
A dict containing all named types provided by a type library (read-only)