filemetadata module

binaryninja.filemetadata.FileMetadata([...])

class FileMetadata represents the file being analyzed by Binary Ninja.

binaryninja.filemetadata.NavigationHandler()

binaryninja.filemetadata.SaveSettings([handle])

class SaveSettings is used to specify actions and options that apply to saving a database (.bndb).

class FileMetadata(filename: Optional[str] = None, handle: Optional[binaryninja._binaryninjacore.LP_BNFileMetadata] = None)[source]

Bases: object

class FileMetadata represents the file being analyzed by Binary Ninja. It is responsible for opening, closing, creating the database (.bndb) files, and is used to keep track of undoable actions.

Parameters
  • filename (Optional[str]) –

  • handle (Optional[binaryninja._binaryninjacore.LP_BNFileMetadata]) –

begin_undo_actions() None[source]

begin_undo_actions start recording actions taken so they can be undone at some point.

Return type

None

Example
>>> bv.get_disassembly(0x100012f1)
'xor     eax, eax'
>>> bv.begin_undo_actions()
>>> bv.convert_to_nop(0x100012f1)
True
>>> bv.commit_undo_actions()
>>> bv.get_disassembly(0x100012f1)
'nop'
>>> bv.undo()
>>> bv.get_disassembly(0x100012f1)
'xor     eax, eax'
>>>
close() None[source]

Closes the underlying file handle. It is recommended that this is done in a finally clause to avoid handle leaks.

Return type

None

close_project() None[source]
Return type

None

commit_undo_actions() None[source]

commit_undo_actions commit the actions taken since the last commit to the undo database.

Return type

None

Example
>>> bv.get_disassembly(0x100012f1)
'xor     eax, eax'
>>> bv.begin_undo_actions()
>>> bv.convert_to_nop(0x100012f1)
True
>>> bv.commit_undo_actions()
>>> bv.get_disassembly(0x100012f1)
'nop'
>>> bv.undo()
>>> bv.get_disassembly(0x100012f1)
'xor     eax, eax'
>>>
create_database(filename: str, progress_func: Optional[Callable[[int, int], bool]] = None, settings: Optional[SaveSettings] = None)[source]

create_database writes the current database (.bndb) out to the specified file.

Parameters
  • filename (str) – path and filename to write the bndb to, this string should have “.bndb” appended to it.

  • progress_func (callback) – optional function to be called with the current progress and total count.

  • settings (SaveSettings) – optional argument for special save options.

Returns

true on success, false on failure

Return type

bool

Example
>>> settings = SaveSettings()
>>> bv.file.create_database(f"{bv.file.filename}.bndb", None, settings)
True
get_view_of_type(name: str) Optional[BinaryView][source]
Parameters

name (str) –

Return type

Optional[BinaryView]

is_project_open() bool[source]
Return type

bool

merge_user_analysis(path: str, progress_func: Callable[[int, int], bool], excluded_hashes: Optional[List[str]] = None)[source]
Parameters
navigate(view: str, offset: int) bool[source]

navigate navigates the UI to the specified virtual address

Note

Despite the confusing name, view in this context is not a BinaryView but rather a string describing the different UI Views. Check view while in different views to see examples such as Linear:ELF, Graph:PE.

Parameters
  • view (str) – virtual address to read from.

  • offset (int) – address to navigate to

Returns

whether or not navigation succeeded

Return type

bool

Example
>>> import random
>>> bv.navigate(bv.view, random.choice(list(bv.functions)).start)
True
open_database_for_configuration(filename: str) Optional[BinaryView][source]
Parameters

filename (str) –

Return type

Optional[BinaryView]

open_existing_database(filename: str, progress_func: Optional[Callable[[int, int], bool]] = None)[source]
Parameters
open_project() bool[source]
Return type

bool

redo() None[source]

redo redo the last committed action in the undo database.

Return type

None

Example
>>> bv.get_disassembly(0x100012f1)
'xor     eax, eax'
>>> bv.begin_undo_actions()
>>> bv.convert_to_nop(0x100012f1)
True
>>> bv.commit_undo_actions()
>>> bv.get_disassembly(0x100012f1)
'nop'
>>> bv.undo()
>>> bv.get_disassembly(0x100012f1)
'xor     eax, eax'
>>> bv.redo()
>>> bv.get_disassembly(0x100012f1)
'nop'
>>>
save_auto_snapshot(progress_func: Optional[Callable[[int, int], bool]] = None, settings: Optional[SaveSettings] = None)[source]
Parameters
static set_default_session_data(name: str, value: Any) None[source]
Parameters
  • name (str) –

  • value (Any) –

Return type

None

undo() None[source]

undo undo the last committed action in the undo database.

Return type

None

Example
>>> bv.get_disassembly(0x100012f1)
'xor     eax, eax'
>>> bv.begin_undo_actions()
>>> bv.convert_to_nop(0x100012f1)
True
>>> bv.commit_undo_actions()
>>> bv.get_disassembly(0x100012f1)
'nop'
>>> bv.undo()
>>> bv.get_disassembly(0x100012f1)
'xor     eax, eax'
>>> bv.redo()
>>> bv.get_disassembly(0x100012f1)
'nop'
>>>
property analysis_changed: bool

Boolean result of whether the auto-analysis results have changed (read-only)

property database: Optional[Database]

Gets the backing Database of the file

property existing_views: List[str]
property filename: str

The name of the open bndb or binary filename (read/write)

property has_database: bool

Whether the FileMetadata is backed by a database, or if specified, a specific BinaryViewType (read-only)

property modified: bool

Boolean result of whether the file is modified (Inverse of ‘saved’ property) (read/write)

property nav: Optional[NavigationHandler]

Navigation handler for this FileMetadata (read/write)

property navigation: Optional[NavigationHandler]

Alias for nav

property offset: int

The current offset into the file (read/write)

property original_filename: str

The original name of the binary opened if a bndb, otherwise reads or sets the current filename (read/write)

property raw: Optional[BinaryView]

Gets the “Raw” BinaryView of the file

property saved: bool

Boolean result of whether the file has been saved (Inverse of ‘modified’ property) (read/write)

property session_data: Any

Dictionary object where plugins can store arbitrary data associated with the file

property session_id: int
property snapshot_data_applied_without_error: bool
property view: str
class NavigationHandler[source]

Bases: object

get_current_offset() int[source]
Return type

int

get_current_view() str[source]
Return type

str

navigate(view: str, offset: int) bool[source]
Parameters
  • view (str) –

  • offset (int) –

Return type

bool

class SaveSettings(handle=None)[source]

Bases: object

class SaveSettings is used to specify actions and options that apply to saving a database (.bndb).

is_option_set(option: SaveOption) bool[source]
Parameters

option (SaveOption) –

Return type

bool

set_option(option: SaveOption, state: bool = True)[source]

Set a SaveOption in this instance.

Parameters
  • option (SaveOption) – Option to set.

  • state (bool) – State to assign. Defaults to True.

Example
>>> settings = SaveSettings()
>>> settings.set_option(SaveOption.TrimSnapshots)