platform module

binaryninja.platform.Platform([arch, handle])

class Platform contains all information related to the execution environment of the binary, mainly the calling conventions used.

class Platform(arch: Optional[Architecture] = None, handle=None)[source]

Bases: object

class Platform contains all information related to the execution environment of the binary, mainly the calling conventions used.

Parameters

arch (Architecture) –

generate_auto_platform_type_id(name)[source]
generate_auto_platform_type_ref(type_class, name)[source]
get_associated_platform_by_address(addr)[source]
get_auto_platform_type_id_source()[source]
get_function_by_name(name, exactMatch=False)[source]
classmethod get_list(os=None, arch=None)[source]
get_system_call_name(number)[source]
get_system_call_type(number)[source]
get_type_by_name(name)[source]
get_type_libraries_by_name(name)[source]
get_variable_by_name(name)[source]
parse_types_from_source(source, filename=None, include_dirs: Optional[List[str]] = None, auto_type_source=None)[source]

parse_types_from_source parses the source string and any needed headers searching for them in the optional list of directories provided in include_dirs. Note that this API does not allow the source to rely on existing types that only exist in a specific view. Use BinaryView.parse_type_string instead.

Parameters
  • source (str) – source string to be parsed

  • filename (str) – optional source filename

  • include_dirs (list(str)) – optional list of string filename include directories

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

Returns

BasicTypeParserResult (a SyntaxError is thrown on parse error)

Return type

BasicTypeParserResult

Example
>>> platform.parse_types_from_source('int foo;\nint bar(int x);\nstruct bas{int x,y;};\n')
({types: {'bas': <type: struct bas>}, variables: {'foo': <type: int32_t>}, functions:{'bar':
<type: int32_t(int32_t x)>}}, '')
>>>
parse_types_from_source_file(filename, include_dirs: Optional[List[str]] = None, auto_type_source=None)[source]

parse_types_from_source_file parses the source file filename and any needed headers searching for them in the optional list of directories provided in include_dirs. Note that this API does not allow the source to rely on existing types that only exist in a specific view. Use BinaryView.parse_type_string instead.

Parameters
  • filename (str) – filename of file to be parsed

  • include_dirs (list(str)) – optional list of string filename include directories

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

Returns

BasicTypeParserResult (a SyntaxError is thrown on parse error)

Return type

BasicTypeParserResult

Example
>>> file = "/Users/binja/tmp.c"
>>> open(file).read()
'int foo;\nint bar(int x);\nstruct bas{int x,y;};\n'
>>> platform.parse_types_from_source_file(file)
({types: {'bas': <type: struct bas>}, variables: {'foo': <type: int32_t>}, functions:
{'bar': <type: int32_t(int32_t x)>}}, '')
>>>
register(os)[source]

register registers the platform for given OS name.

Parameters

os (str) – OS name to register

Return type

None

register_calling_convention(cc)[source]

register_calling_convention register a new calling convention.

Parameters

cc (CallingConvention) – a CallingConvention object to register

Return type

None

property arch
property calling_conventions

List of platform CallingConvention objects (read-only)

Getter

returns the list of supported CallingConvention objects

Type

list(CallingConvention)

property cdecl_calling_convention

CallingConvention object for the cdecl calling convention

property default_calling_convention

Default calling convention.

Getter

returns a CallingConvention object for the default calling convention.

Setter

sets the default calling convention

Type

CallingConvention

property fastcall_calling_convention

CallingConvention object for the fastcall calling convention

property functions

List of platform-specific function definitions (read-only)

property name: str
property os_list

classmethod(function) -> method

Convert a function to be a class method.

A class method receives the class as implicit first argument, just like an instance method receives the instance. To declare a class method, use this idiom:

class C:

@classmethod def f(cls, arg1, arg2, …):

It can be called either on the class (e.g. C.f()) or on an instance (e.g. C().f()). The instance is ignored except for its class. If a class method is called for a derived class, the derived class object is passed as the implied first argument.

Class methods are different than C++ or Java static methods. If you want those, see the staticmethod builtin.

property stdcall_calling_convention

CallingConvention object for the stdcall calling convention

property system_call_convention

CallingConvention object for the system call convention

property system_calls

List of system calls for this platform (read-only)

type_file_path = None
type_include_dirs = []
property type_libraries
property types

List of platform-specific types (read-only)

property variables

List of platform-specific variable definitions (read-only)