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[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:
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) bool[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

Note

The progress_func callback must return True to continue the save operation, False will abort the save operation.

Warning

The calling thread must not hold a lock on the BinaryView instance as this action is run on the main thread which requires the lock.

Example:
>>> settings = SaveSettings()
>>> bv.file.create_database(f"{bv.file.filename}.bndb", None, settings)
True
Parameters:
Return type:

bool

get_view_of_type(name: str) Optional[BinaryView][source]
Parameters:

name (str) –

Return type:

Optional[BinaryView]

is_project_open() bool[source]
Return type:

bool

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) bool[source]
Parameters:
Return type:

bool

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)