filemetadata module¶
|
|
|
|
- class FileMetadata(filename: str | None = None, handle: LP_BNFileMetadata | None = 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 (str) – The string path to the file to be opened. Defaults to None.
handle (LP_BNFileMetadata | None) – A handle to the underlying C FileMetadata object. Defaults to None. (Internal use only.)
- begin_undo_actions(anonymous_allowed: bool = True) str [source]¶
begin_undo_actions
starts recording actions taken so they can be undone at some point.- Parameters:
anonymous_allowed (bool) – Legacy interop: prevent empty calls to
commit_undo_actions`
from affecting this undo state. Specifically forundoable_transaction`
- Returns:
Id of undo state, for passing to
commit_undo_actions`
orrevert_undo_actions
.- Return type:
- Example:
>>> bv.get_disassembly(0x100012f1) 'xor eax, eax' >>> state = bv.begin_undo_actions() >>> bv.convert_to_nop(0x100012f1) True >>> bv.commit_undo_actions(state) >>> 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
- commit_undo_actions(id: str | None = None) None [source]¶
commit_undo_actions
commits the actions taken since a call tobegin_undo_actions
Pass as id the value returned bybegin_undo_actions
. Empty values of id will commit all changes since the last call tobegin_undo_actions
.- Parameters:
id (Optional[str]) – id of undo state, from
begin_undo_actions
- Return type:
None
- Example:
>>> bv.get_disassembly(0x100012f1) 'xor eax, eax' >>> state = bv.begin_undo_actions() >>> bv.convert_to_nop(0x100012f1) True >>> bv.commit_undo_actions(state) >>> bv.get_disassembly(0x100012f1) 'nop' >>> bv.undo() >>> bv.get_disassembly(0x100012f1) 'xor eax, eax' >>>
- create_database(filename: str, progress_func: Callable[[int, int], bool] | None = None, settings: SaveSettings | None = 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:
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.
- forget_undo_actions(id: str | None = None) None [source]¶
forget_undo_actions
removes the actions taken since a call tobegin_undo_actions
Pass as id the value returned bybegin_undo_actions
. Empty values of id will remove all changes since the last call tobegin_undo_actions
.- Parameters:
id (Optional[str]) – id of undo state, from
begin_undo_actions
- Return type:
None
- Example:
>>> bv.get_disassembly(0x100012f1) 'xor eax, eax' >>> state = bv.begin_undo_actions() >>> bv.convert_to_nop(0x100012f1) True >>> bv.commit_undo_actions(state) >>> bv.get_disassembly(0x100012f1) 'nop' >>> bv.undo() >>> bv.get_disassembly(0x100012f1) 'nop' >>>
- get_view_of_type(name: str) BinaryView | None [source]¶
- Parameters:
name (str) –
- Return type:
BinaryView | None
navigate
navigates the UI to the specified virtual addressNote
Despite the confusing name,
view
in this context is not a BinaryView but rather a string describing the different UI Views. Checkview
while in different views to see examples such asLinear:ELF
,Graph:PE
.
- redo() None [source]¶
redo
redo the last committed transaction in the undo database.- Return type:
None
- Example:
>>> bv.get_disassembly(0x100012f1) 'xor eax, eax' >>> with bv.undoable_transaction(): >>> bv.convert_to_nop(0x100012f1) True >>> bv.get_disassembly(0x100012f1) 'nop' >>> bv.undo() >>> bv.get_disassembly(0x100012f1) 'xor eax, eax' >>> bv.redo() >>> bv.get_disassembly(0x100012f1) 'nop' >>>
- revert_undo_actions(id: str | None = None) None [source]¶
revert_undo_actions
reverts the actions taken since a call tobegin_undo_actions
Pass as id the value returned bybegin_undo_actions
. Empty values of id will revert all changes since the last call tobegin_undo_actions
.- Parameters:
id (Optional[str]) – id of undo state, from
begin_undo_actions
- Return type:
None
- Example:
>>> bv.get_disassembly(0x100012f1) 'xor eax, eax' >>> state = bv.begin_undo_actions() >>> bv.convert_to_nop(0x100012f1) True >>> bv.revert_undo_actions(state) >>> bv.get_disassembly(0x100012f1) 'xor eax, eax' >>>
- save_auto_snapshot(progress_func: Callable[[int, int], bool] | None = None, settings: SaveSettings | None = None) bool [source]¶
- undo() None [source]¶
undo
undo the last committed transaction in the undo database.- Return type:
None
- Example:
>>> bv.get_disassembly(0x100012f1) 'xor eax, eax' >>> with bv.undoable_transaction(): >>> bv.convert_to_nop(0x100012f1) True >>> bv.get_disassembly(0x100012f1) 'nop' >>> bv.undo() >>> bv.get_disassembly(0x100012f1) 'xor eax, eax' >>> bv.redo() >>> bv.get_disassembly(0x100012f1) 'nop' >>>
- undoable_transaction() Generator [source]¶
undoable_transaction
gives you a context in which you can make changes to analysis, and creates an Undo state containing those actions. If an exception is thrown, any changes made to the analysis inside the transaction are reverted.- Returns:
Transaction context manager, which will commit/revert actions depending on if an exception is thrown when it goes out of scope.
- Return type:
Generator
- Example:
>>> bv.get_disassembly(0x100012f1) 'xor eax, eax' >>> # Actions inside the transaction will be committed to the undo state upon exit >>> with bv.undoable_transaction(): >>> bv.convert_to_nop(0x100012f1) True >>> bv.get_disassembly(0x100012f1) 'nop' >>> bv.undo() >>> bv.get_disassembly(0x100012f1) 'xor eax, eax' >>> # A thrown exception inside the transaction will undo all changes made inside it >>> with bv.undoable_transaction(): >>> bv.convert_to_nop(0x100012f1) # Reverted on thrown exception >>> raise RuntimeError("oh no") RuntimeError: oh no >>> bv.get_disassembly(0x100012f1) 'xor eax, eax'
- property analysis_changed: bool¶
Boolean result of whether the auto-analysis results have changed (read-only)
- 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)
Navigation handler for this FileMetadata (read/write)
Alias for nav
- property original_filename: str¶
The original name of the binary opened if a bndb, otherwise reads or sets the current filename (read/write)
Note
With projects,
bv.file.original_filename
queries the path of the binary as staged in the project directory. Usebv.project_file.name
to query the original name of the opened binary.
- property project_file: ProjectFile | None¶
- property raw: BinaryView | None¶
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)
Bases:
object
- Return type:
- Return type:
- 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:
- 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)