Loading...
Searching...
No Matches
BinaryView

Classes related to interacting with and implementing custom BinaryViews . More...

Detailed Description

Classes related to interacting with and implementing custom BinaryViews .

Classes

class  BinaryNinja::BinaryDataNotification
 
class  BinaryNinja::AnalysisCompletionEvent
 
struct  BinaryNinja::ActiveAnalysisInfo
 
struct  BinaryNinja::AnalysisInfo
 
struct  BinaryNinja::DataVariable
 
struct  BinaryNinja::DataVariableAndName
 
class  BinaryNinja::TagType
 
struct  BinaryNinja::TagReference
 
class  BinaryNinja::Segment
 The Segment object is returned during BinaryView creation and should not be directly instantiated. More...
 
class  BinaryNinja::Section
 The Section object is returned during BinaryView creation and should not be directly instantiated. More...
 
class  BinaryNinja::BinaryView
 BinaryView implements a view on binary data, and presents a queryable interface of a binary file. More...
 
class  BinaryNinja::Relocation
 
class  BinaryNinja::BinaryData
 
class  BinaryNinja::BinaryViewType
 The BinaryViewType object is used internally and should not be directly instantiated. More...
 
class  BinaryNinja::CoreBinaryViewType
 
class  BinaryNinja::ReadException
 Thrown whenever a read is performed out of bounds. More...
 
class  BinaryNinja::BinaryReader
 BinaryReader is a convenience class for reading binary data. More...
 
class  BinaryNinja::WriteException
 Raised whenever a write is performed out of bounds. More...
 
class  BinaryNinja::BinaryWriter
 BinaryWriter is a convenience class for writing binary data. More...
 
class  BinaryNinja::TypeArchive
 Type Archives are a collection of types which can be shared between different analysis sessions and are backed by a database file on disk. More...
 
class  BinaryNinja::SymbolQueue
 

Class Documentation

◆ BinaryNinja::Metadata

class BinaryNinja::Metadata

Public Member Functions

 Metadata (BNMetadata *structuredData)
 
 Metadata (bool data)
 Create a new Metadata object representing a bool.
 
 Metadata (const std::string &data)
 Create a new Metadata object representing a string.
 
 Metadata (uint64_t data)
 Create a new Metadata object representing a uint64.
 
 Metadata (int64_t data)
 Create a new Metadata object representing an int64.
 
 Metadata (double data)
 Create a new Metadata object representing a double.
 
 Metadata (const std::vector< bool > &data)
 Create a new Metadata object representing a vector of bools.
 
 Metadata (const std::vector< std::string > &data)
 Create a new Metadata object representing a vector of strings.
 
 Metadata (const std::vector< uint64_t > &data)
 Create a new Metadata object representing a vector of uint64s.
 
 Metadata (const std::vector< int64_t > &data)
 Create a new Metadata object representing a vector of int64s.
 
 Metadata (const std::vector< double > &data)
 Create a new Metadata object representing a vector of doubles.
 
 Metadata (const std::vector< uint8_t > &data)
 Create a new Metadata object representing a vector of bytes to store.
 
 Metadata (const std::vector< Ref< Metadata > > &data)
 Create a new Metadata object representing a vector of children Metadata objects.
 
 Metadata (const std::map< std::string, Ref< Metadata > > &data)
 Create a new Metadata object representing a map of strings to metadata objects.
 
 Metadata (MetadataType type)
 
virtual ~Metadata ()
 
bool operator== (const Metadata &rhs)
 
Ref< Metadataoperator[] (const std::string &key)
 
Ref< Metadataoperator[] (size_t idx)
 
MetadataType GetType () const
 
bool GetBoolean () const
 
std::string GetString () const
 
uint64_t GetUnsignedInteger () const
 
int64_t GetSignedInteger () const
 
double GetDouble () const
 
std::vector< bool > GetBooleanList () const
 
std::vector< std::string > GetStringList () const
 
std::vector< uint64_t > GetUnsignedIntegerList () const
 
std::vector< int64_t > GetSignedIntegerList () const
 
std::vector< double > GetDoubleList () const
 
std::vector< uint8_t > GetRaw () const
 
std::vector< Ref< Metadata > > GetArray () const
 
std::map< std::string, Ref< Metadata > > GetKeyValueStore () const
 
std::string GetJsonString () const
 
Ref< MetadataGet (const std::string &key)
 Get a Metadata object by key.
 
bool SetValueForKey (const std::string &key, Ref< Metadata > data)
 Set the value mapped to by a particular string.
 
void RemoveKey (const std::string &key)
 Remove a key from the map.
 
Ref< MetadataGet (size_t index)
 Get an item at a given index.
 
bool Append (Ref< Metadata > data)
 Append an item to the array.
 
void RemoveIndex (size_t index)
 Remove an item at a given index.
 
size_t Size () const
 Get the size of the array.
 
bool IsBoolean () const
 
bool IsString () const
 
bool IsUnsignedInteger () const
 
bool IsSignedInteger () const
 
bool IsDouble () const
 
bool IsBooleanList () const
 
bool IsStringList () const
 
bool IsUnsignedIntegerList () const
 
bool IsSignedIntegerList () const
 
bool IsDoubleList () const
 
bool IsRaw () const
 
bool IsArray () const
 
bool IsKeyValueStore () const
 
- Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNMetadata, BNNewMetadataReference, BNFreeMetadata >
 CoreRefCountObject ()
 
virtual ~CoreRefCountObject ()
 
BNMetadataGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void ReleaseForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Additional Inherited Members

- Static Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNMetadata, BNNewMetadataReference, BNFreeMetadata >
static BNMetadataGetObject (CoreRefCountObject *obj)
 
static BNMetadataGetObject (const CoreRefCountObject *obj)
 
- Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNMetadata, BNNewMetadataReference, BNFreeMetadata >
std::atomic< int > m_refs
 
bool m_registeredRef
 
BNMetadatam_object
 

Constructor & Destructor Documentation

◆ Metadata() [1/15]

Metadata::Metadata ( BNMetadata * structuredData)
explicit

◆ Metadata() [2/15]

Metadata::Metadata ( bool data)
explicit

Create a new Metadata object representing a bool.

Thread Safe:
Yes
Parameters
dataBool to store

◆ Metadata() [3/15]

Metadata::Metadata ( const std::string & data)
explicit

Create a new Metadata object representing a string.

Thread Safe:
Yes
Parameters
datastring to store

◆ Metadata() [4/15]

Metadata::Metadata ( uint64_t data)
explicit

Create a new Metadata object representing a uint64.

Thread Safe:
Yes
Parameters
data- uint64 to store

◆ Metadata() [5/15]

Metadata::Metadata ( int64_t data)
explicit

Create a new Metadata object representing an int64.

Thread Safe:
Yes
Parameters
data- int64 to store

◆ Metadata() [6/15]

Metadata::Metadata ( double data)
explicit

Create a new Metadata object representing a double.

Thread Safe:
Yes
Parameters
data- double to store

◆ Metadata() [7/15]

Metadata::Metadata ( const std::vector< bool > & data)
explicit

Create a new Metadata object representing a vector of bools.

Thread Safe:
Yes
Parameters
data- list of bools to store

◆ Metadata() [8/15]

Metadata::Metadata ( const std::vector< std::string > & data)
explicit

Create a new Metadata object representing a vector of strings.

Thread Safe:
Yes
Parameters
data- list of strings to store

◆ Metadata() [9/15]

Metadata::Metadata ( const std::vector< uint64_t > & data)
explicit

Create a new Metadata object representing a vector of uint64s.

Thread Safe:
Yes
Parameters
data- list of uint64s to store

◆ Metadata() [10/15]

Metadata::Metadata ( const std::vector< int64_t > & data)
explicit

Create a new Metadata object representing a vector of int64s.

Thread Safe:
Yes
Parameters
data- list of int64s to store

◆ Metadata() [11/15]

Metadata::Metadata ( const std::vector< double > & data)
explicit

Create a new Metadata object representing a vector of doubles.

Thread Safe:
Yes
Parameters
data- list of doubles to store

◆ Metadata() [12/15]

BinaryNinja::Metadata::Metadata ( const std::vector< uint8_t > & data)
explicit

Create a new Metadata object representing a vector of bytes to store.

Thread Safe:
Yes
Parameters
data- list of bytes to store

◆ Metadata() [13/15]

Metadata::Metadata ( const std::vector< Ref< Metadata > > & data)
explicit

Create a new Metadata object representing a vector of children Metadata objects.

Thread Safe:
Yes
Parameters
data- list of Metadata objects to store

◆ Metadata() [14/15]

Metadata::Metadata ( const std::map< std::string, Ref< Metadata > > & data)
explicit

Create a new Metadata object representing a map of strings to metadata objects.

Thread Safe:
Yes
Parameters
data- map of strings to metadata objects

◆ Metadata() [15/15]

Metadata::Metadata ( MetadataType type)
explicit

◆ ~Metadata()

virtual BinaryNinja::Metadata::~Metadata ( )
inlinevirtual

Member Function Documentation

◆ operator==()

bool Metadata::operator== ( const Metadata & rhs)

◆ operator[]() [1/2]

Ref< Metadata > Metadata::operator[] ( const std::string & key)

◆ operator[]() [2/2]

Ref< Metadata > Metadata::operator[] ( size_t idx)

◆ GetType()

MetadataType Metadata::GetType ( ) const

◆ GetBoolean()

bool Metadata::GetBoolean ( ) const

◆ GetString()

std::string Metadata::GetString ( ) const

◆ GetUnsignedInteger()

uint64_t Metadata::GetUnsignedInteger ( ) const

◆ GetSignedInteger()

int64_t Metadata::GetSignedInteger ( ) const

◆ GetDouble()

double Metadata::GetDouble ( ) const

◆ GetBooleanList()

std::vector< bool > Metadata::GetBooleanList ( ) const

◆ GetStringList()

std::vector< std::string > Metadata::GetStringList ( ) const

◆ GetUnsignedIntegerList()

std::vector< uint64_t > Metadata::GetUnsignedIntegerList ( ) const

◆ GetSignedIntegerList()

std::vector< int64_t > Metadata::GetSignedIntegerList ( ) const

◆ GetDoubleList()

std::vector< double > Metadata::GetDoubleList ( ) const

◆ GetRaw()

vector< uint8_t > Metadata::GetRaw ( ) const

◆ GetArray()

vector< Ref< Metadata > > Metadata::GetArray ( ) const

◆ GetKeyValueStore()

map< std::string, Ref< Metadata > > Metadata::GetKeyValueStore ( ) const

◆ GetJsonString()

std::string Metadata::GetJsonString ( ) const

◆ Get() [1/2]

Ref< Metadata > Metadata::Get ( const std::string & key)

Get a Metadata object by key.

Only for if IsKeyValueStore == true

Thread Safe:
No
Parameters
key
Returns

◆ SetValueForKey()

bool Metadata::SetValueForKey ( const std::string & key,
Ref< Metadata > data )

Set the value mapped to by a particular string.

Only for if IsKeyValueStore == true

Thread Safe:
No
Parameters
key
data
Returns

◆ RemoveKey()

void Metadata::RemoveKey ( const std::string & key)

Remove a key from the map.

Only for if IsKeyValueStore == true

Thread Safe:
No
Parameters
key- Key to remove

◆ Get() [2/2]

Ref< Metadata > Metadata::Get ( size_t index)

Get an item at a given index.

For array data only

Thread Safe:
No
Parameters
indexIndex of the item to retrieve
Returns
Item at that index, if valid.

◆ Append()

bool Metadata::Append ( Ref< Metadata > data)

Append an item to the array.

For array data only

Thread Safe:
No
Parameters
dataData to append
Returns
Whether the append was successful

◆ RemoveIndex()

void Metadata::RemoveIndex ( size_t index)

Remove an item at a given index.

For array data only

Thread Safe:
No
Parameters
indexIndex of the item to remove

◆ Size()

size_t Metadata::Size ( ) const

Get the size of the array.

For array data only

Thread Safe:
No
Returns
Size of the array

◆ IsBoolean()

bool Metadata::IsBoolean ( ) const

◆ IsString()

bool Metadata::IsString ( ) const

◆ IsUnsignedInteger()

bool Metadata::IsUnsignedInteger ( ) const

◆ IsSignedInteger()

bool Metadata::IsSignedInteger ( ) const

◆ IsDouble()

bool Metadata::IsDouble ( ) const

◆ IsBooleanList()

bool Metadata::IsBooleanList ( ) const

◆ IsStringList()

bool Metadata::IsStringList ( ) const

◆ IsUnsignedIntegerList()

bool Metadata::IsUnsignedIntegerList ( ) const

◆ IsSignedIntegerList()

bool Metadata::IsSignedIntegerList ( ) const

◆ IsDoubleList()

bool Metadata::IsDoubleList ( ) const

◆ IsRaw()

bool Metadata::IsRaw ( ) const

◆ IsArray()

bool Metadata::IsArray ( ) const

◆ IsKeyValueStore()

bool Metadata::IsKeyValueStore ( ) const

◆ BinaryNinja::BinaryDataNotification

class BinaryNinja::BinaryDataNotification

Public Types

enum  NotificationType : uint64_t {
  NotificationBarrier = 1ULL << 0 , DataWritten = 1ULL << 1 , DataInserted = 1ULL << 2 , DataRemoved = 1ULL << 3 ,
  FunctionAdded = 1ULL << 4 , FunctionRemoved = 1ULL << 5 , FunctionUpdated = 1ULL << 6 , FunctionUpdateRequested = 1ULL << 7 ,
  DataVariableAdded = 1ULL << 8 , DataVariableRemoved = 1ULL << 9 , DataVariableUpdated = 1ULL << 10 , DataMetadataUpdated = 1ULL << 11 ,
  TagTypeUpdated = 1ULL << 12 , TagAdded = 1ULL << 13 , TagRemoved = 1ULL << 14 , TagUpdated = 1ULL << 15 ,
  SymbolAdded = 1ULL << 16 , SymbolRemoved = 1ULL << 17 , SymbolUpdated = 1ULL << 18 , StringFound = 1ULL << 19 ,
  StringRemoved = 1ULL << 20 , TypeDefined = 1ULL << 21 , TypeUndefined = 1ULL << 22 , TypeReferenceChanged = 1ULL << 23 ,
  TypeFieldReferenceChanged = 1ULL << 24 , SegmentAdded = 1ULL << 25 , SegmentRemoved = 1ULL << 26 , SegmentUpdated = 1ULL << 27 ,
  SectionAdded = 1ULL << 28 , SectionRemoved = 1ULL << 29 , SectionUpdated = 1ULL << 30 , ComponentNameUpdated = 1ULL << 31 ,
  ComponentAdded = 1ULL << 32 , ComponentRemoved = 1ULL << 33 , ComponentMoved = 1ULL << 34 , ComponentFunctionAdded = 1ULL << 35 ,
  ComponentFunctionRemoved = 1ULL << 36 , ComponentDataVariableAdded = 1ULL << 37 , ComponentDataVariableRemoved = 1ULL << 38 , ExternalLibraryAdded = 1ULL << 39 ,
  ExternalLibraryRemoved = 1ULL << 40 , ExternalLibraryUpdated = 1ULL << 41 , ExternalLocationAdded = 1ULL << 42 , ExternalLocationRemoved = 1ULL << 43 ,
  ExternalLocationUpdated = 1ULL << 44 , TypeArchiveAttached = 1ULL << 45 , TypeArchiveDetached = 1ULL << 46 , TypeArchiveConnected = 1ULL << 47 ,
  TypeArchiveDisconnected = 1ULL << 48 , UndoEntryAdded = 1ULL << 49 , UndoEntryTaken = 1ULL << 50 , RedoEntryTaken = 1ULL << 51 ,
  Rebased = 1ULL << 52 , BinaryDataUpdates = DataWritten | DataInserted | DataRemoved , FunctionLifetime = FunctionAdded | FunctionRemoved , FunctionUpdates = FunctionLifetime | FunctionUpdated ,
  DataVariableLifetime = DataVariableAdded | DataVariableRemoved , DataVariableUpdates = DataVariableLifetime | DataVariableUpdated , TagLifetime = TagAdded | TagRemoved , TagUpdates = TagLifetime | TagUpdated ,
  SymbolLifetime = SymbolAdded | SymbolRemoved , SymbolUpdates = SymbolLifetime | SymbolUpdated , StringUpdates = StringFound | StringRemoved , TypeLifetime = TypeDefined | TypeUndefined ,
  TypeUpdates = TypeLifetime | TypeReferenceChanged | TypeFieldReferenceChanged , SegmentLifetime = SegmentAdded | SegmentRemoved , SegmentUpdates = SegmentLifetime | SegmentUpdated , SectionLifetime = SectionAdded | SectionRemoved ,
  SectionUpdates = SectionLifetime | SectionUpdated , ComponentUpdates = ComponentNameUpdated | ComponentAdded | ComponentRemoved | ComponentMoved | ComponentFunctionAdded | ComponentFunctionRemoved | ComponentDataVariableAdded | ComponentDataVariableRemoved , ExternalLibraryLifetime = ExternalLibraryAdded | ExternalLibraryRemoved , ExternalLibraryUpdates = ExternalLibraryLifetime | ExternalLibraryUpdated ,
  ExternalLocationLifetime = ExternalLocationAdded | ExternalLocationRemoved , ExternalLocationUpdates = ExternalLocationLifetime | ExternalLocationUpdated , TypeArchiveUpdates = TypeArchiveAttached | TypeArchiveDetached | TypeArchiveConnected | TypeArchiveDisconnected , UndoUpdates = UndoEntryAdded | UndoEntryTaken | RedoEntryTaken
}
 
using NotificationTypes = uint64_t
 

Public Member Functions

 BinaryDataNotification ()
 
 BinaryDataNotification (NotificationTypes notifications)
 
virtual ~BinaryDataNotification ()
 
BNBinaryDataNotificationGetCallbacks ()
 
virtual uint64_t OnNotificationBarrier (BinaryView *view)
 
virtual void OnBinaryDataWritten (BinaryView *view, uint64_t offset, size_t len)
 
virtual void OnBinaryDataInserted (BinaryView *view, uint64_t offset, size_t len)
 
virtual void OnBinaryDataRemoved (BinaryView *view, uint64_t offset, uint64_t len)
 
virtual void OnAnalysisFunctionAdded (BinaryView *view, Function *func)
 
virtual void OnAnalysisFunctionRemoved (BinaryView *view, Function *func)
 
virtual void OnAnalysisFunctionUpdated (BinaryView *view, Function *func)
 
virtual void OnAnalysisFunctionUpdateRequested (BinaryView *view, Function *func)
 
virtual void OnDataVariableAdded (BinaryView *view, const DataVariable &var)
 
virtual void OnDataVariableRemoved (BinaryView *view, const DataVariable &var)
 
virtual void OnDataVariableUpdated (BinaryView *view, const DataVariable &var)
 
virtual void OnDataMetadataUpdated (BinaryView *view, uint64_t offset)
 
virtual void OnTagTypeUpdated (BinaryView *view, Ref< TagType > tagTypeRef)
 
virtual void OnTagAdded (BinaryView *view, const TagReference &tagRef)
 
virtual void OnTagRemoved (BinaryView *view, const TagReference &tagRef)
 
virtual void OnTagUpdated (BinaryView *view, const TagReference &tagRef)
 
virtual void OnSymbolAdded (BinaryView *view, Symbol *sym)
 
virtual void OnSymbolRemoved (BinaryView *view, Symbol *sym)
 
virtual void OnSymbolUpdated (BinaryView *view, Symbol *sym)
 
virtual void OnStringFound (BinaryView *data, BNStringType type, uint64_t offset, size_t len)
 
virtual void OnStringRemoved (BinaryView *data, BNStringType type, uint64_t offset, size_t len)
 
virtual void OnTypeDefined (BinaryView *data, const QualifiedName &name, Type *type)
 
virtual void OnTypeUndefined (BinaryView *data, const QualifiedName &name, Type *type)
 
virtual void OnTypeReferenceChanged (BinaryView *data, const QualifiedName &name, Type *type)
 
virtual void OnTypeFieldReferenceChanged (BinaryView *data, const QualifiedName &name, uint64_t offset)
 
virtual void OnSegmentAdded (BinaryView *data, Segment *segment)
 
virtual void OnSegmentRemoved (BinaryView *data, Segment *segment)
 
virtual void OnSegmentUpdated (BinaryView *data, Segment *segment)
 
virtual void OnSectionAdded (BinaryView *data, Section *section)
 
virtual void OnSectionRemoved (BinaryView *data, Section *section)
 
virtual void OnSectionUpdated (BinaryView *data, Section *section)
 
virtual void OnComponentNameUpdated (BinaryView *data, std::string &previousName, Component *component)
 This notification is posted after the display name for a component is updated.
 
virtual void OnComponentAdded (BinaryView *data, Component *component)
 This notification is posted after a Component is added to the tree.
 
virtual void OnComponentRemoved (BinaryView *data, Component *formerParent, Component *component)
 This notification is posted after a Component is removed from the tree.
 
virtual void OnComponentMoved (BinaryView *data, Component *formerParent, Component *newParent, Component *component)
 This notification is posted whenever a component is moved from one component to another.
 
virtual void OnComponentFunctionAdded (BinaryView *data, Component *component, Function *function)
 This notification is posted whenever a Function is added to a Component.
 
virtual void OnComponentFunctionRemoved (BinaryView *data, Component *component, Function *function)
 This notification is posted whenever a Function is removed from a Component.
 
virtual void OnComponentDataVariableAdded (BinaryView *data, Component *component, const DataVariable &var)
 This notification is posted whenever a DataVariable is added to a Component.
 
virtual void OnComponentDataVariableRemoved (BinaryView *data, Component *component, const DataVariable &var)
 This notification is posted whenever a DataVariable is removed from a Component.
 
virtual void OnExternalLibraryAdded (BinaryView *data, ExternalLibrary *library)
 
virtual void OnExternalLibraryRemoved (BinaryView *data, ExternalLibrary *library)
 
virtual void OnExternalLibraryUpdated (BinaryView *data, ExternalLibrary *library)
 
virtual void OnExternalLocationAdded (BinaryView *data, ExternalLocation *location)
 
virtual void OnExternalLocationRemoved (BinaryView *data, ExternalLocation *location)
 
virtual void OnExternalLocationUpdated (BinaryView *data, ExternalLocation *location)
 
virtual void OnTypeArchiveAttached (BinaryView *data, const std::string &id, const std::string &path)
 This notification is posted whenever a Type Archive is attached to a Binary View.
 
virtual void OnTypeArchiveDetached (BinaryView *data, const std::string &id, const std::string &path)
 This notification is posted whenever a Type Archive is detached to a Binary View.
 
virtual void OnTypeArchiveConnected (BinaryView *data, TypeArchive *archive)
 This notification is posted whenever a previously disconnected Type Archive attached to the Binary View is connected.
 
virtual void OnTypeArchiveDisconnected (BinaryView *data, TypeArchive *archive)
 This notification is posted whenever a previously connected Type Archive attached to the Binary View is disconnected.
 
virtual void OnUndoEntryAdded (BinaryView *data, UndoEntry *entry)
 This notification is posted whenever an entry is added to undo history.
 
virtual void OnUndoEntryTaken (BinaryView *data, UndoEntry *entry)
 This notification is posted whenever an action is undone.
 
virtual void OnRedoEntryTaken (BinaryView *data, UndoEntry *entry)
 This notification is posted whenever an action is redone.
 
virtual void OnRebased (BinaryView *oldView, BinaryView *newView)
 This notification is posted whenever a binary view is rebased.
 

Member Typedef Documentation

◆ NotificationTypes

Member Enumeration Documentation

◆ NotificationType

Enumerator
NotificationBarrier 
DataWritten 
DataInserted 
DataRemoved 
FunctionAdded 
FunctionRemoved 
FunctionUpdated 
FunctionUpdateRequested 
DataVariableAdded 
DataVariableRemoved 
DataVariableUpdated 
DataMetadataUpdated 
TagTypeUpdated 
TagAdded 
TagRemoved 
TagUpdated 
SymbolAdded 
SymbolRemoved 
SymbolUpdated 
StringFound 
StringRemoved 
TypeDefined 
TypeUndefined 
TypeReferenceChanged 
TypeFieldReferenceChanged 
SegmentAdded 
SegmentRemoved 
SegmentUpdated 
SectionAdded 
SectionRemoved 
SectionUpdated 
ComponentNameUpdated 
ComponentAdded 
ComponentRemoved 
ComponentMoved 
ComponentFunctionAdded 
ComponentFunctionRemoved 
ComponentDataVariableAdded 
ComponentDataVariableRemoved 
ExternalLibraryAdded 
ExternalLibraryRemoved 
ExternalLibraryUpdated 
ExternalLocationAdded 
ExternalLocationRemoved 
ExternalLocationUpdated 
TypeArchiveAttached 
TypeArchiveDetached 
TypeArchiveConnected 
TypeArchiveDisconnected 
UndoEntryAdded 
UndoEntryTaken 
RedoEntryTaken 
Rebased 
BinaryDataUpdates 
FunctionLifetime 
FunctionUpdates 
DataVariableLifetime 
DataVariableUpdates 
TagLifetime 
TagUpdates 
SymbolLifetime 
SymbolUpdates 
StringUpdates 
TypeLifetime 
TypeUpdates 
SegmentLifetime 
SegmentUpdates 
SectionLifetime 
SectionUpdates 
ComponentUpdates 
ExternalLibraryLifetime 
ExternalLibraryUpdates 
ExternalLocationLifetime 
ExternalLocationUpdates 
TypeArchiveUpdates 
UndoUpdates 

Constructor & Destructor Documentation

◆ BinaryDataNotification() [1/2]

BinaryDataNotification::BinaryDataNotification ( )

◆ BinaryDataNotification() [2/2]

BinaryDataNotification::BinaryDataNotification ( NotificationTypes notifications)

◆ ~BinaryDataNotification()

virtual BinaryNinja::BinaryDataNotification::~BinaryDataNotification ( )
inlinevirtual

Member Function Documentation

◆ GetCallbacks()

BNBinaryDataNotification * BinaryNinja::BinaryDataNotification::GetCallbacks ( )
inline

◆ OnNotificationBarrier()

virtual uint64_t BinaryNinja::BinaryDataNotification::OnNotificationBarrier ( BinaryView * view)
inlinevirtual

Reimplemented in NotificationsWorker.

◆ OnBinaryDataWritten()

virtual void BinaryNinja::BinaryDataNotification::OnBinaryDataWritten ( BinaryView * view,
uint64_t offset,
size_t len )
inlinevirtual

◆ OnBinaryDataInserted()

virtual void BinaryNinja::BinaryDataNotification::OnBinaryDataInserted ( BinaryView * view,
uint64_t offset,
size_t len )
inlinevirtual

◆ OnBinaryDataRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnBinaryDataRemoved ( BinaryView * view,
uint64_t offset,
uint64_t len )
inlinevirtual

◆ OnAnalysisFunctionAdded()

virtual void BinaryNinja::BinaryDataNotification::OnAnalysisFunctionAdded ( BinaryView * view,
Function * func )
inlinevirtual

◆ OnAnalysisFunctionRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnAnalysisFunctionRemoved ( BinaryView * view,
Function * func )
inlinevirtual

◆ OnAnalysisFunctionUpdated()

virtual void BinaryNinja::BinaryDataNotification::OnAnalysisFunctionUpdated ( BinaryView * view,
Function * func )
inlinevirtual

◆ OnAnalysisFunctionUpdateRequested()

virtual void BinaryNinja::BinaryDataNotification::OnAnalysisFunctionUpdateRequested ( BinaryView * view,
Function * func )
inlinevirtual

Reimplemented in FlowGraphWidget, and NotificationsWorker.

◆ OnDataVariableAdded()

virtual void BinaryNinja::BinaryDataNotification::OnDataVariableAdded ( BinaryView * view,
const DataVariable & var )
inlinevirtual

◆ OnDataVariableRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnDataVariableRemoved ( BinaryView * view,
const DataVariable & var )
inlinevirtual

◆ OnDataVariableUpdated()

virtual void BinaryNinja::BinaryDataNotification::OnDataVariableUpdated ( BinaryView * view,
const DataVariable & var )
inlinevirtual

◆ OnDataMetadataUpdated()

virtual void BinaryNinja::BinaryDataNotification::OnDataMetadataUpdated ( BinaryView * view,
uint64_t offset )
inlinevirtual

◆ OnTagTypeUpdated()

virtual void BinaryNinja::BinaryDataNotification::OnTagTypeUpdated ( BinaryView * view,
Ref< TagType > tagTypeRef )
inlinevirtual

Reimplemented in NotificationsWorker.

◆ OnTagAdded()

virtual void BinaryNinja::BinaryDataNotification::OnTagAdded ( BinaryView * view,
const TagReference & tagRef )
inlinevirtual

◆ OnTagRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnTagRemoved ( BinaryView * view,
const TagReference & tagRef )
inlinevirtual

◆ OnTagUpdated()

virtual void BinaryNinja::BinaryDataNotification::OnTagUpdated ( BinaryView * view,
const TagReference & tagRef )
inlinevirtual

◆ OnSymbolAdded()

virtual void BinaryNinja::BinaryDataNotification::OnSymbolAdded ( BinaryView * view,
Symbol * sym )
inlinevirtual

◆ OnSymbolRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnSymbolRemoved ( BinaryView * view,
Symbol * sym )
inlinevirtual

◆ OnSymbolUpdated()

virtual void BinaryNinja::BinaryDataNotification::OnSymbolUpdated ( BinaryView * view,
Symbol * sym )
inlinevirtual

◆ OnStringFound()

virtual void BinaryNinja::BinaryDataNotification::OnStringFound ( BinaryView * data,
BNStringType type,
uint64_t offset,
size_t len )
inlinevirtual

◆ OnStringRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnStringRemoved ( BinaryView * data,
BNStringType type,
uint64_t offset,
size_t len )
inlinevirtual

◆ OnTypeDefined()

virtual void BinaryNinja::BinaryDataNotification::OnTypeDefined ( BinaryView * data,
const QualifiedName & name,
Type * type )
inlinevirtual

◆ OnTypeUndefined()

virtual void BinaryNinja::BinaryDataNotification::OnTypeUndefined ( BinaryView * data,
const QualifiedName & name,
Type * type )
inlinevirtual

◆ OnTypeReferenceChanged()

virtual void BinaryNinja::BinaryDataNotification::OnTypeReferenceChanged ( BinaryView * data,
const QualifiedName & name,
Type * type )
inlinevirtual

Reimplemented in NotificationsWorker, and TypeBrowserModel.

◆ OnTypeFieldReferenceChanged()

virtual void BinaryNinja::BinaryDataNotification::OnTypeFieldReferenceChanged ( BinaryView * data,
const QualifiedName & name,
uint64_t offset )
inlinevirtual

Reimplemented in NotificationsWorker, and TypeBrowserModel.

◆ OnSegmentAdded()

virtual void BinaryNinja::BinaryDataNotification::OnSegmentAdded ( BinaryView * data,
Segment * segment )
inlinevirtual

◆ OnSegmentRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnSegmentRemoved ( BinaryView * data,
Segment * segment )
inlinevirtual

◆ OnSegmentUpdated()

virtual void BinaryNinja::BinaryDataNotification::OnSegmentUpdated ( BinaryView * data,
Segment * segment )
inlinevirtual

◆ OnSectionAdded()

virtual void BinaryNinja::BinaryDataNotification::OnSectionAdded ( BinaryView * data,
Section * section )
inlinevirtual

Reimplemented in NotificationsWorker, and SectionWidget.

◆ OnSectionRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnSectionRemoved ( BinaryView * data,
Section * section )
inlinevirtual

Reimplemented in NotificationsWorker, and SectionWidget.

◆ OnSectionUpdated()

virtual void BinaryNinja::BinaryDataNotification::OnSectionUpdated ( BinaryView * data,
Section * section )
inlinevirtual

Reimplemented in NotificationsWorker, and SectionWidget.

◆ OnComponentNameUpdated()

virtual void BinaryNinja::BinaryDataNotification::OnComponentNameUpdated ( BinaryView * data,
std::string & previousName,
Component * component )
inlinevirtual

This notification is posted after the display name for a component is updated.

Parameters
dataBinaryView the Component is contained in
previousNamePrevious name of the component
componentThe component which was modified.

Reimplemented in NotificationsWorker.

◆ OnComponentAdded()

virtual void BinaryNinja::BinaryDataNotification::OnComponentAdded ( BinaryView * data,
Component * component )
inlinevirtual

This notification is posted after a Component is added to the tree.

Parameters
dataBinaryView the Component was added to
componentComponent which was added.

Reimplemented in NotificationsWorker.

◆ OnComponentRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnComponentRemoved ( BinaryView * data,
Component * formerParent,
Component * component )
inlinevirtual

This notification is posted after a Component is removed from the tree.

Parameters
dataBinaryView the Component was removed from
formerParentFormer parent of the Component
component

The removed and now "dead" Component object.

This "dead" Component can no longer be moved to other components or have components added to it. It should not be used after this point for storing any objects, and will be destroyed once no more references are held to it.

Reimplemented in NotificationsWorker.

◆ OnComponentMoved()

virtual void BinaryNinja::BinaryDataNotification::OnComponentMoved ( BinaryView * data,
Component * formerParent,
Component * newParent,
Component * component )
inlinevirtual

This notification is posted whenever a component is moved from one component to another.

Parameters
dataBinaryView the Component was removed from
formerParentFormer parent of the Component
newParentNew parent which the Component was moved to
componentThe component that was moved.

Reimplemented in NotificationsWorker.

◆ OnComponentFunctionAdded()

virtual void BinaryNinja::BinaryDataNotification::OnComponentFunctionAdded ( BinaryView * data,
Component * component,
Function * function )
inlinevirtual

This notification is posted whenever a Function is added to a Component.

Parameters
dataBinaryView containing the Component and Function
componentComponent the Function was added to
functionThe Function which was added

Reimplemented in NotificationsWorker.

◆ OnComponentFunctionRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnComponentFunctionRemoved ( BinaryView * data,
Component * component,
Function * function )
inlinevirtual

This notification is posted whenever a Function is removed from a Component.

Parameters
dataBinaryView containing the Component and Function
componentComponent the Function was removed from
functionThe Function which was removed

Reimplemented in NotificationsWorker.

◆ OnComponentDataVariableAdded()

virtual void BinaryNinja::BinaryDataNotification::OnComponentDataVariableAdded ( BinaryView * data,
Component * component,
const DataVariable & var )
inlinevirtual

This notification is posted whenever a DataVariable is added to a Component.

Parameters
dataBinaryView containing the Component and DataVariable
componentComponent the DataVariable was added to
varThe DataVariable which was added

Reimplemented in NotificationsWorker.

◆ OnComponentDataVariableRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnComponentDataVariableRemoved ( BinaryView * data,
Component * component,
const DataVariable & var )
inlinevirtual

This notification is posted whenever a DataVariable is removed from a Component.

Parameters
dataBinaryView containing the Component and DataVariable
componentComponent the DataVariable was removed from
varThe DataVariable which was removed

Reimplemented in NotificationsWorker.

◆ OnExternalLibraryAdded()

virtual void BinaryNinja::BinaryDataNotification::OnExternalLibraryAdded ( BinaryView * data,
ExternalLibrary * library )
inlinevirtual

Reimplemented in NotificationsWorker.

◆ OnExternalLibraryRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnExternalLibraryRemoved ( BinaryView * data,
ExternalLibrary * library )
inlinevirtual

Reimplemented in NotificationsWorker.

◆ OnExternalLibraryUpdated()

virtual void BinaryNinja::BinaryDataNotification::OnExternalLibraryUpdated ( BinaryView * data,
ExternalLibrary * library )
inlinevirtual

Reimplemented in NotificationsWorker.

◆ OnExternalLocationAdded()

virtual void BinaryNinja::BinaryDataNotification::OnExternalLocationAdded ( BinaryView * data,
ExternalLocation * location )
inlinevirtual

Reimplemented in NotificationsWorker.

◆ OnExternalLocationRemoved()

virtual void BinaryNinja::BinaryDataNotification::OnExternalLocationRemoved ( BinaryView * data,
ExternalLocation * location )
inlinevirtual

Reimplemented in NotificationsWorker.

◆ OnExternalLocationUpdated()

virtual void BinaryNinja::BinaryDataNotification::OnExternalLocationUpdated ( BinaryView * data,
ExternalLocation * location )
inlinevirtual

Reimplemented in NotificationsWorker.

◆ OnTypeArchiveAttached()

virtual void BinaryNinja::BinaryDataNotification::OnTypeArchiveAttached ( BinaryView * data,
const std::string & id,
const std::string & path )
inlinevirtual

This notification is posted whenever a Type Archive is attached to a Binary View.

Parameters
dataBinaryView target
idId of the attached archive
pathPath on disk of the attached archive

Reimplemented in NotificationsWorker, and TypeBrowserModel.

◆ OnTypeArchiveDetached()

virtual void BinaryNinja::BinaryDataNotification::OnTypeArchiveDetached ( BinaryView * data,
const std::string & id,
const std::string & path )
inlinevirtual

This notification is posted whenever a Type Archive is detached to a Binary View.

Parameters
dataBinaryView target
idId of the attached archive
pathPath on disk of the attached archive

Reimplemented in NotificationsWorker, and TypeBrowserModel.

◆ OnTypeArchiveConnected()

virtual void BinaryNinja::BinaryDataNotification::OnTypeArchiveConnected ( BinaryView * data,
TypeArchive * archive )
inlinevirtual

This notification is posted whenever a previously disconnected Type Archive attached to the Binary View is connected.

Parameters
dataBinaryView the archive is attached to
archiveAttached archive

Reimplemented in NotificationsWorker, and TypeBrowserModel.

◆ OnTypeArchiveDisconnected()

virtual void BinaryNinja::BinaryDataNotification::OnTypeArchiveDisconnected ( BinaryView * data,
TypeArchive * archive )
inlinevirtual

This notification is posted whenever a previously connected Type Archive attached to the Binary View is disconnected.

Parameters
dataBinaryView the archive is attached to
archivePreviously attached archive

Reimplemented in NotificationsWorker, and TypeBrowserModel.

◆ OnUndoEntryAdded()

virtual void BinaryNinja::BinaryDataNotification::OnUndoEntryAdded ( BinaryView * data,
UndoEntry * entry )
inlinevirtual

This notification is posted whenever an entry is added to undo history.

Parameters
dataBinaryView the action was taken on
entryUndoEntry

Reimplemented in NotificationsWorker.

◆ OnUndoEntryTaken()

virtual void BinaryNinja::BinaryDataNotification::OnUndoEntryTaken ( BinaryView * data,
UndoEntry * entry )
inlinevirtual

This notification is posted whenever an action is undone.

Parameters
dataBinaryView the action was taken on
entryUndoEntry that was undone

Reimplemented in NotificationsWorker.

◆ OnRedoEntryTaken()

virtual void BinaryNinja::BinaryDataNotification::OnRedoEntryTaken ( BinaryView * data,
UndoEntry * entry )
inlinevirtual

This notification is posted whenever an action is redone.

Parameters
dataBinaryView the action was taken on
entryUndoEntry that was redone

Reimplemented in NotificationsWorker.

◆ OnRebased()

virtual void BinaryNinja::BinaryDataNotification::OnRebased ( BinaryView * oldView,
BinaryView * newView )
inlinevirtual

This notification is posted whenever a binary view is rebased.

Parameters
oldViewBinaryView the old view
newViewBinaryView the new view

◆ BinaryNinja::AnalysisCompletionEvent

class BinaryNinja::AnalysisCompletionEvent

Public Member Functions

 AnalysisCompletionEvent (BinaryView *view, const std::function< void()> &callback)
 
void Cancel ()
 
- Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNAnalysisCompletionEvent, BNNewAnalysisCompletionEventReference, BNFreeAnalysisCompletionEvent >
 CoreRefCountObject ()
 
virtual ~CoreRefCountObject ()
 
BNAnalysisCompletionEventGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void ReleaseForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Static Protected Member Functions

static void CompletionCallback (void *ctxt)
 

Protected Attributes

std::function< void()> m_callback
 
std::recursive_mutex m_mutex
 

Additional Inherited Members

- Static Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNAnalysisCompletionEvent, BNNewAnalysisCompletionEventReference, BNFreeAnalysisCompletionEvent >
static BNAnalysisCompletionEventGetObject (CoreRefCountObject *obj)
 
static BNAnalysisCompletionEventGetObject (const CoreRefCountObject *obj)
 
- Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNAnalysisCompletionEvent, BNNewAnalysisCompletionEventReference, BNFreeAnalysisCompletionEvent >
std::atomic< int > m_refs
 
bool m_registeredRef
 
BNAnalysisCompletionEventm_object
 

Constructor & Destructor Documentation

◆ AnalysisCompletionEvent()

AnalysisCompletionEvent::AnalysisCompletionEvent ( BinaryView * view,
const std::function< void()> & callback )

Member Function Documentation

◆ CompletionCallback()

void AnalysisCompletionEvent::CompletionCallback ( void * ctxt)
staticprotected

◆ Cancel()

void AnalysisCompletionEvent::Cancel ( )

Member Data Documentation

◆ m_callback

std::function<void()> BinaryNinja::AnalysisCompletionEvent::m_callback
protected

◆ m_mutex

std::recursive_mutex BinaryNinja::AnalysisCompletionEvent::m_mutex
protected

◆ BinaryNinja::ActiveAnalysisInfo

struct BinaryNinja::ActiveAnalysisInfo

Public Member Functions

 ActiveAnalysisInfo (Ref< Function > f, uint64_t t, size_t uc, size_t sc)
 

Public Attributes

Ref< Functionfunc
 
uint64_t analysisTime
 
size_t updateCount
 
size_t submitCount
 

Constructor & Destructor Documentation

◆ ActiveAnalysisInfo()

BinaryNinja::ActiveAnalysisInfo::ActiveAnalysisInfo ( Ref< Function > f,
uint64_t t,
size_t uc,
size_t sc )
inline

Member Data Documentation

◆ func

Ref<Function> BinaryNinja::ActiveAnalysisInfo::func

◆ analysisTime

uint64_t BinaryNinja::ActiveAnalysisInfo::analysisTime

◆ updateCount

size_t BinaryNinja::ActiveAnalysisInfo::updateCount

◆ submitCount

size_t BinaryNinja::ActiveAnalysisInfo::submitCount

◆ BinaryNinja::AnalysisInfo

struct BinaryNinja::AnalysisInfo
Class Members
BNAnalysisState state
uint64_t analysisTime
vector< ActiveAnalysisInfo > activeInfo

◆ BinaryNinja::DataVariable

struct BinaryNinja::DataVariable

Public Member Functions

 DataVariable ()
 
 DataVariable (uint64_t a, Type *t, bool d)
 

Public Attributes

uint64_t address
 
Confidence< Ref< Type > > type
 
bool autoDiscovered
 

Constructor & Destructor Documentation

◆ DataVariable() [1/2]

BinaryNinja::DataVariable::DataVariable ( )
inline

◆ DataVariable() [2/2]

BinaryNinja::DataVariable::DataVariable ( uint64_t a,
Type * t,
bool d )
inline

Member Data Documentation

◆ address

uint64_t BinaryNinja::DataVariable::address

◆ type

Confidence<Ref<Type> > BinaryNinja::DataVariable::type

◆ autoDiscovered

bool BinaryNinja::DataVariable::autoDiscovered

◆ BinaryNinja::DataVariableAndName

struct BinaryNinja::DataVariableAndName

Public Member Functions

 DataVariableAndName ()
 
 DataVariableAndName (uint64_t a, Type *t, bool d, const std::string &n)
 

Public Attributes

uint64_t address
 
Confidence< Ref< Type > > type
 
bool autoDiscovered
 
std::string name
 

Constructor & Destructor Documentation

◆ DataVariableAndName() [1/2]

BinaryNinja::DataVariableAndName::DataVariableAndName ( )
inline

◆ DataVariableAndName() [2/2]

BinaryNinja::DataVariableAndName::DataVariableAndName ( uint64_t a,
Type * t,
bool d,
const std::string & n )
inline

Member Data Documentation

◆ address

uint64_t BinaryNinja::DataVariableAndName::address

◆ type

Confidence<Ref<Type> > BinaryNinja::DataVariableAndName::type

◆ autoDiscovered

bool BinaryNinja::DataVariableAndName::autoDiscovered

◆ name

std::string BinaryNinja::DataVariableAndName::name

◆ BinaryNinja::TagType

class BinaryNinja::TagType

Public Types

typedef BNTagTypeType Type
 

Public Member Functions

 TagType (BNTagType *tagType)
 
 TagType (BinaryView *view)
 
 TagType (BinaryView *view, const std::string &name, const std::string &icon, bool visible=true, Type type=UserTagType)
 
BinaryViewGetView () const
 
std::string GetId () const
 
std::string GetName () const
 
void SetName (const std::string &name)
 Set the name of the TagType.
 
std::string GetIcon () const
 
void SetIcon (const std::string &icon)
 Set the icon to be used for a TagType.
 
bool GetVisible () const
 
void SetVisible (bool visible)
 Set whether the tags of this type are visible.
 
Type GetType () const
 One of: UserTagType, NotificationTagType, BookmarksTagType.
 
void SetType (Type type)
 
- Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNTagType, BNNewTagTypeReference, BNFreeTagType >
 CoreRefCountObject ()
 
virtual ~CoreRefCountObject ()
 
BNTagTypeGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void ReleaseForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Additional Inherited Members

- Static Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNTagType, BNNewTagTypeReference, BNFreeTagType >
static BNTagTypeGetObject (CoreRefCountObject *obj)
 
static BNTagTypeGetObject (const CoreRefCountObject *obj)
 
- Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNTagType, BNNewTagTypeReference, BNFreeTagType >
std::atomic< int > m_refs
 
bool m_registeredRef
 
BNTagTypem_object
 

Member Typedef Documentation

◆ Type

Constructor & Destructor Documentation

◆ TagType() [1/3]

TagType::TagType ( BNTagType * tagType)

◆ TagType() [2/3]

TagType::TagType ( BinaryView * view)

◆ TagType() [3/3]

TagType::TagType ( BinaryView * view,
const std::string & name,
const std::string & icon,
bool visible = true,
TagType::Type type = UserTagType )

Member Function Documentation

◆ GetView()

BinaryView * TagType::GetView ( ) const
Returns
BinaryView for this TagType

◆ GetId()

std::string TagType::GetId ( ) const
Returns
Unique ID of the TagType

◆ GetName()

std::string TagType::GetName ( ) const
Returns
Name of the TagType

◆ SetName()

void TagType::SetName ( const std::string & name)

Set the name of the TagType.

Parameters
nameNew name

◆ GetIcon()

std::string TagType::GetIcon ( ) const
Returns
Unicode string containing an emoji to be used as an icon

◆ SetIcon()

void TagType::SetIcon ( const std::string & icon)

Set the icon to be used for a TagType.

Parameters
iconUnicode string containing an emoji to be used as an icon

◆ GetVisible()

bool TagType::GetVisible ( ) const
Returns
Whether the tags of this type are visible

◆ SetVisible()

void TagType::SetVisible ( bool visible)

Set whether the tags of this type are visible.

Parameters
visibleWhether the tags of this type are visible

◆ GetType()

TagType::Type TagType::GetType ( ) const

One of: UserTagType, NotificationTagType, BookmarksTagType.

Returns
Tag Type.

◆ SetType()

void TagType::SetType ( TagType::Type type)
Parameters
typeTag Type. One of: UserTagType, NotificationTagType, BookmarksTagType

◆ BinaryNinja::TagReference

struct BinaryNinja::TagReference

Public Types

typedef BNTagReferenceType RefType
 

Public Member Functions

 TagReference ()
 
 TagReference (const BNTagReference &ref)
 
bool operator== (const TagReference &other) const
 
bool operator!= (const TagReference &other) const
 
 operator BNTagReference () const
 

Static Public Member Functions

static BNTagReferenceCreateTagReferenceList (const std::vector< TagReference > &tags, size_t *count)
 
static std::vector< TagReferenceConvertTagReferenceList (BNTagReference *tags, size_t count)
 
static void FreeTagReferenceList (BNTagReference *tags, size_t count)
 
static std::vector< TagReferenceConvertAndFreeTagReferenceList (BNTagReference *tags, size_t count)
 

Public Attributes

RefType refType
 
bool autoDefined
 
Ref< Tagtag
 
Ref< Architecturearch
 
Ref< Functionfunc
 
uint64_t addr
 

Member Typedef Documentation

◆ RefType

Constructor & Destructor Documentation

◆ TagReference() [1/2]

TagReference::TagReference ( )

◆ TagReference() [2/2]

TagReference::TagReference ( const BNTagReference & ref)

Member Function Documentation

◆ operator==()

bool TagReference::operator== ( const TagReference & other) const

◆ operator!=()

bool TagReference::operator!= ( const TagReference & other) const

◆ operator BNTagReference()

TagReference::operator BNTagReference ( ) const

◆ CreateTagReferenceList()

BNTagReference * TagReference::CreateTagReferenceList ( const std::vector< TagReference > & tags,
size_t * count )
static

◆ ConvertTagReferenceList()

std::vector< TagReference > TagReference::ConvertTagReferenceList ( BNTagReference * tags,
size_t count )
static

◆ FreeTagReferenceList()

void TagReference::FreeTagReferenceList ( BNTagReference * tags,
size_t count )
static

◆ ConvertAndFreeTagReferenceList()

std::vector< TagReference > TagReference::ConvertAndFreeTagReferenceList ( BNTagReference * tags,
size_t count )
static

Member Data Documentation

◆ refType

RefType BinaryNinja::TagReference::refType

◆ autoDefined

bool BinaryNinja::TagReference::autoDefined

◆ tag

Ref<Tag> BinaryNinja::TagReference::tag

◆ arch

Ref<Architecture> BinaryNinja::TagReference::arch

◆ func

Ref<Function> BinaryNinja::TagReference::func

◆ addr

uint64_t BinaryNinja::TagReference::addr

◆ BinaryNinja::Segment

class BinaryNinja::Segment

The Segment object is returned during BinaryView creation and should not be directly instantiated.

Public Member Functions

 Segment (BNSegment *seg)
 
uint64_t GetStart () const
 
uint64_t GetLength () const
 
uint64_t GetEnd () const
 
uint64_t GetDataEnd () const
 
uint64_t GetDataOffset () const
 
uint64_t GetDataLength () const
 
uint32_t GetFlags () const
 
bool IsAutoDefined () const
 
- Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNSegment, BNNewSegmentReference, BNFreeSegment >
 CoreRefCountObject ()
 
virtual ~CoreRefCountObject ()
 
BNSegmentGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void ReleaseForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Additional Inherited Members

- Static Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNSegment, BNNewSegmentReference, BNFreeSegment >
static BNSegmentGetObject (CoreRefCountObject *obj)
 
static BNSegmentGetObject (const CoreRefCountObject *obj)
 
- Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNSegment, BNNewSegmentReference, BNFreeSegment >
std::atomic< int > m_refs
 
bool m_registeredRef
 
BNSegmentm_object
 

Constructor & Destructor Documentation

◆ Segment()

Segment::Segment ( BNSegment * seg)

Member Function Documentation

◆ GetStart()

uint64_t Segment::GetStart ( ) const

◆ GetLength()

uint64_t Segment::GetLength ( ) const

◆ GetEnd()

uint64_t Segment::GetEnd ( ) const

◆ GetDataEnd()

uint64_t Segment::GetDataEnd ( ) const

◆ GetDataOffset()

uint64_t Segment::GetDataOffset ( ) const

◆ GetDataLength()

uint64_t Segment::GetDataLength ( ) const

◆ GetFlags()

uint32_t Segment::GetFlags ( ) const

◆ IsAutoDefined()

bool Segment::IsAutoDefined ( ) const

◆ BinaryNinja::Section

class BinaryNinja::Section

The Section object is returned during BinaryView creation and should not be directly instantiated.

Public Member Functions

 Section (BNSection *sec)
 
 Section (const std::string &name, uint64_t start, uint64_t length, BNSectionSemantics semantics, const std::string &type, uint64_t align, uint64_t entrySize, const std::string &linkedSection, const std::string &infoSection, uint64_t infoData, bool autoDefined)
 
std::string GetName () const
 
std::string GetType () const
 
uint64_t GetStart () const
 
uint64_t GetLength () const
 
uint64_t GetEnd () const
 
uint64_t GetInfoData () const
 
uint64_t GetAlignment () const
 
uint64_t GetEntrySize () const
 
std::string GetLinkedSection () const
 
std::string GetInfoSection () const
 
BNSectionSemantics GetSemantics () const
 
bool AutoDefined () const
 
- Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNSection, BNNewSectionReference, BNFreeSection >
 CoreRefCountObject ()
 
virtual ~CoreRefCountObject ()
 
BNSectionGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void ReleaseForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Additional Inherited Members

- Static Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNSection, BNNewSectionReference, BNFreeSection >
static BNSectionGetObject (CoreRefCountObject *obj)
 
static BNSectionGetObject (const CoreRefCountObject *obj)
 
- Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNSection, BNNewSectionReference, BNFreeSection >
std::atomic< int > m_refs
 
bool m_registeredRef
 
BNSectionm_object
 

Constructor & Destructor Documentation

◆ Section() [1/2]

Section::Section ( BNSection * sec)

◆ Section() [2/2]

BinaryNinja::Section::Section ( const std::string & name,
uint64_t start,
uint64_t length,
BNSectionSemantics semantics,
const std::string & type,
uint64_t align,
uint64_t entrySize,
const std::string & linkedSection,
const std::string & infoSection,
uint64_t infoData,
bool autoDefined )

Member Function Documentation

◆ GetName()

std::string Section::GetName ( ) const

◆ GetType()

std::string Section::GetType ( ) const

◆ GetStart()

uint64_t Section::GetStart ( ) const

◆ GetLength()

uint64_t Section::GetLength ( ) const

◆ GetEnd()

uint64_t Section::GetEnd ( ) const

◆ GetInfoData()

uint64_t Section::GetInfoData ( ) const

◆ GetAlignment()

uint64_t Section::GetAlignment ( ) const

◆ GetEntrySize()

uint64_t Section::GetEntrySize ( ) const

◆ GetLinkedSection()

std::string Section::GetLinkedSection ( ) const

◆ GetInfoSection()

std::string Section::GetInfoSection ( ) const

◆ GetSemantics()

BNSectionSemantics Section::GetSemantics ( ) const

◆ AutoDefined()

bool Section::AutoDefined ( ) const

◆ BinaryNinja::BinaryView

class BinaryNinja::BinaryView

BinaryView implements a view on binary data, and presents a queryable interface of a binary file.

One key job of BinaryView is file format parsing which allows Binary Ninja to read, write, insert, remove portions of the file given a virtual address. For the purposes of this documentation we define a virtual address as the memory address that the various pieces of the physical file will be loaded at.

A binary file does not have to have just one BinaryView, thus much of the interface to manipulate disassembly exists within or is accessed through a BinaryView. All files are guaranteed to have at least the Raw BinaryView. The Raw BinaryView is simply a hex editor, but is helpful for manipulating binary files via their absolute addresses.

BinaryViews are plugins and thus registered with Binary Ninja at startup, and thus should **never** be instantiated directly as this is already done. The list of available BinaryViews can be seen in the BinaryViewType class which provides an iterator and map of the various installed BinaryViews:

// Getting a list of valid BinaryViewTypes
vector<Ref<BinaryViewType>> types = BinaryViewType::GetViewTypes()
// Getting a list of valid BinaryViewTypes valid for given data
vector<Ref<BinaryViewType>> types = BinaryViewType::GetViewTypesForData(bv);
Ref<BinaryViewType> machoType = BinaryViewType::GetByName("Mach-O");
static std::vector< Ref< BinaryViewType > > GetViewTypes()
Get the list of registered View Types.
Definition binaryviewtype.cpp:121
The BinaryViewType object is used internally and should not be directly instantiated.
Definition binaryninjaapi.h:7044
Definition binaryninjaapi.h:239
See also
BinaryViewType

In the python console:

>>> list(BinaryViewType)
[<view type: 'Raw'>, <view type: 'ELF'>, <view type: 'Mach-O'>, <view type: 'PE'>]
>>> BinaryViewType['ELF']
<view type: 'ELF'>

To open a file with a given BinaryView the following code is recommended:

auto bv = Load("/bin/ls");
Ref< BinaryView > Load(const std::string &filename, bool updateAnalysis=true, const std::string &options="{}", std::function< bool(size_t, size_t)> progress={})
OpenView opens a file on disk and returns a BinaryView, attempting to use the most relevant BinaryVie...
Definition binaryview.cpp:5470
Remarks
By convention in the rest of this document we will use bv to mean an open and, analyzed, BinaryView of an executable file.

When a BinaryView is open on an executable view analysis is automatically run unless specific named parameters are used to disable updates. If such a parameter is used, updates can be triggered using the UpdateAnalysisAndWait() method which disassembles the executable and returns when all disassembly and analysis is complete:

bv->UpdateAnalysisAndWait();

Since BinaryNinja's analysis is multi-threaded this can also be done in the background by using the UpdateAnalysis method instead.

Note
An important note on the \*User\*() methods. Binary Ninja makes a distinction between edits performed by the user and actions performed by auto analysis. Auto analysis actions that can quickly be recalculated are not saved to the database. Auto analysis actions that take a long time and all user edits are stored in the database (e.g. RemoveUserFunction rather than RemoveFunction ). Thus use \*User\*() methods if saving to the database is desired.

Public Member Functions

void NotifyDataWritten (uint64_t offset, size_t len)
 
void NotifyDataInserted (uint64_t offset, size_t len)
 
void NotifyDataRemoved (uint64_t offset, uint64_t len)
 
 BinaryView (BNBinaryView *view)
 
virtual bool Init ()
 
FileMetadataGetFile () const
 
Ref< BinaryViewGetParentView () const
 
std::string GetTypeName () const
 
bool IsModified () const
 
bool IsAnalysisChanged () const
 
bool CreateDatabase (const std::string &path, Ref< SaveSettings > settings=new SaveSettings())
 Writes the current database (.bndb) out to the specified file.
 
bool CreateDatabase (const std::string &path, const std::function< bool(size_t progress, size_t total)> &progressCallback, Ref< SaveSettings > settings=new SaveSettings())
 Writes the current database (.bndb) out to the specified file.
 
bool SaveAutoSnapshot (Ref< SaveSettings > settings=new SaveSettings())
 
bool SaveAutoSnapshot (const std::function< bool(size_t progress, size_t total)> &progressCallback, Ref< SaveSettings > settings=new SaveSettings())
 
bool RunUndoableTransaction (std::function< bool()> func)
 Run a function in a context in which any changes made to analysis will be added to an undo state.
 
std::string BeginUndoActions (bool anonymousAllowed=true)
 Start recording actions taken so they can be undone at some point.
 
void CommitUndoActions (const std::string &id)
 Commit the actions taken since a call to BeginUndoActions.
 
void RevertUndoActions (const std::string &id)
 Revert the actions taken since a call to BeginUndoActions.
 
void ForgetUndoActions (const std::string &id)
 Forget the actions taken since a call to BeginUndoActions.
 
bool CanUndo ()
 
bool Undo ()
 Undo the last committed action in the undo database.
 
bool CanRedo ()
 
bool Redo ()
 Redo the last committed action in the undo database.
 
std::string GetCurrentView ()
 Get the current View name, e.g.
 
uint64_t GetCurrentOffset ()
 Get the current offset in the current view.
 
bool Navigate (const std::string &view, uint64_t offset)
 Navigate to the specified virtual address in the specified view.
 
size_t Read (void *dest, uint64_t offset, size_t len)
 Read writes `len` bytes at virtual address `offset` to address `dest`.
 
DataBuffer ReadBuffer (uint64_t offset, size_t len)
 ReadBuffer reads len bytes from a virtual address into a DataBuffer.
 
size_t Write (uint64_t offset, const void *data, size_t len)
 Write writes `len` bytes data at address `dest` to virtual address `offset`.
 
size_t WriteBuffer (uint64_t offset, const DataBuffer &data)
 WriteBuffer writes the contents of a DataBuffer into a virtual address.
 
size_t Insert (uint64_t offset, const void *data, size_t len)
 Insert inserts `len` bytes data at address `dest` starting from virtual address `offset`.
 
size_t InsertBuffer (uint64_t offset, const DataBuffer &data)
 InsertBuffer inserts the contents of a DataBuffer starting from a virtual address.
 
size_t Remove (uint64_t offset, uint64_t len)
 PerformRemove removes `len` bytes from virtual address `offset`.
 
std::vector< float > GetEntropy (uint64_t offset, size_t len, size_t blockSize)
 
BNModificationStatus GetModification (uint64_t offset)
 GetModification checks whether the virtual address `offset` is modified.
 
std::vector< BNModificationStatusGetModification (uint64_t offset, size_t len)
 
bool IsValidOffset (uint64_t offset) const
 IsValidOffset checks whether a virtual address `offset` is valid.
 
bool IsOffsetReadable (uint64_t offset) const
 IsOffsetReadable checks whether a virtual address is readable.
 
bool IsOffsetWritable (uint64_t offset) const
 IsOffsetWritable checks whether a virtual address is writable.
 
bool IsOffsetExecutable (uint64_t offset) const
 IsOffsetExecutable checks whether a virtual address is executable.
 
bool IsOffsetBackedByFile (uint64_t offset) const
 IsOffsetBackedByFile checks whether a virtual address is backed by a file.
 
bool IsOffsetCodeSemantics (uint64_t offset) const
 
bool IsOffsetWritableSemantics (uint64_t offset) const
 
bool IsOffsetExternSemantics (uint64_t offset) const
 
uint64_t GetNextValidOffset (uint64_t offset) const
 GetNextValidOffset implements a query for the next valid readable, writable, or executable virtual memory address after `offset`.
 
uint64_t GetImageBase () const
 GetImageBase queries for the image base in the BinaryView.
 
uint64_t GetOriginalImageBase () const
 GetOriginalImageBase queries for the original image base in the BinaryView, unaffected by any rebasing operations.
 
void SetOriginalImageBase (uint64_t imageBase)
 SetOriginalBase sets the original image base in the BinaryView, unaffected by any rebasing operations.
 
uint64_t GetOriginalBase () const
 GetOriginalBase queries for the original image base in the BinaryView, unaffected by any rebasing operations.
 
void SetOriginalBase (uint64_t base)
 SetOriginalBase sets the original image base in the BinaryView, unaffected by any rebasing operations.
 
uint64_t GetStart () const
 GetStart queries for the first valid virtual address in the BinaryView.
 
uint64_t GetEnd () const
 GetEnd queries for the end virtual address of the BinaryView.
 
uint64_t GetLength () const
 GetLength queries for the total length of the BinaryView from start to end.
 
uint64_t GetEntryPoint () const
 GetEntryPoint returns the entry point of the executable in the BinaryView.
 
Ref< ArchitectureGetDefaultArchitecture () const
 GetDefaultArchitecture returns the current "default architecture" for the BinaryView.
 
void SetDefaultArchitecture (Architecture *arch)
 SetDefaultArchitecture allows setting the default architecture for the BinaryView.
 
Ref< PlatformGetDefaultPlatform () const
 GetDefaultPlatform returns the current default platform for the BinaryView.
 
void SetDefaultPlatform (Platform *platform)
 SetDefaultPlatform allows setting the default platform for the BinaryView.
 
BNEndianness GetDefaultEndianness () const
 GetDefaultEndianness returns the default endianness for the BinaryView.
 
bool IsRelocatable () const
 Whether the binary is relocatable.
 
size_t GetAddressSize () const
 Address size of the binary.
 
bool IsExecutable () const
 Whether the binary is an executable.
 
bool Save (FileAccessor *file)
 Save the original binary file to a FileAccessor.
 
bool Save (const std::string &path)
 Save the original binary file to the provided destination.
 
void DefineRelocation (Architecture *arch, BNRelocationInfo &info, uint64_t target, uint64_t reloc)
 
void DefineRelocation (Architecture *arch, BNRelocationInfo &info, Ref< Symbol > target, uint64_t reloc)
 
std::vector< std::pair< uint64_t, uint64_t > > GetRelocationRanges () const
 
std::vector< std::pair< uint64_t, uint64_t > > GetRelocationRangesAtAddress (uint64_t addr) const
 
std::vector< std::pair< uint64_t, uint64_t > > GetRelocationRangesInRange (uint64_t addr, size_t size) const
 
bool RangeContainsRelocation (uint64_t addr, size_t size) const
 
std::vector< Ref< Relocation > > GetRelocationsAt (uint64_t addr) const
 
void RegisterNotification (BinaryDataNotification *notify)
 Provides a mechanism for receiving callbacks for various analysis events.
 
void UnregisterNotification (BinaryDataNotification *notify)
 Unregister a notification passed to RegisterNotification.
 
void AddAnalysisOption (const std::string &name)
 Adds an analysis option.
 
Ref< FunctionAddFunctionForAnalysis (Platform *platform, uint64_t addr, bool autoDiscovered=false, Type *type=nullptr)
 Add a new function of the given platform at the virtual address.
 
void AddEntryPointForAnalysis (Platform *platform, uint64_t start)
 adds an virtual address to start analysis from for a given platform
 
void AddToEntryFunctions (Function *func)
 adds an function to all entry function list
 
void RemoveAnalysisFunction (Function *func, bool updateRefs=false)
 removes a function from the list of functions
 
Ref< FunctionCreateUserFunction (Platform *platform, uint64_t start)
 Add a new user function of the given platform at the virtual address.
 
void RemoveUserFunction (Function *func)
 removes a user function from the list of functions
 
bool HasInitialAnalysis ()
 check for the presence of an initial analysis in this BinaryView.
 
void SetAnalysisHold (bool enable)
 Controls the analysis hold for this BinaryView.
 
bool GetFunctionAnalysisUpdateDisabled ()
 
void SetFunctionAnalysisUpdateDisabled (bool disabled)
 
void UpdateAnalysisAndWait ()
 start the analysis running and dont return till it is complete
 
void UpdateAnalysis ()
 asynchronously starts the analysis running and returns immediately.
 
void AbortAnalysis ()
 Abort the currently running analysis.
 
void DefineDataVariable (uint64_t addr, const Confidence< Ref< Type > > &type)
 Define a DataVariable at a given address with a set type.
 
void DefineUserDataVariable (uint64_t addr, const Confidence< Ref< Type > > &type)
 Define a user DataVariable at a given address with a set type.
 
void UndefineDataVariable (uint64_t addr, bool blacklist=true)
 Undefine a DataVariable at a given address.
 
void UndefineUserDataVariable (uint64_t addr)
 Undefine a user DataVariable at a given address.
 
std::map< uint64_t, DataVariableGetDataVariables ()
 Get a map of DataVariables defined in the current BinaryView.
 
bool GetDataVariableAtAddress (uint64_t addr, DataVariable &var)
 Get a DataVariable at a given address.
 
std::vector< Ref< Function > > GetAnalysisFunctionList ()
 Get a list of functions within this BinaryView.
 
bool HasFunctions () const
 Check whether the BinaryView has any functions defined.
 
Ref< FunctionGetAnalysisFunction (Platform *platform, uint64_t addr)
 Gets a function object for the function starting at a virtual address.
 
Ref< FunctionGetRecentAnalysisFunctionForAddress (uint64_t addr)
 Get the most recently used Function starting at a virtual address.
 
std::vector< Ref< Function > > GetAnalysisFunctionsForAddress (uint64_t addr)
 Get a list of functions defined at an address.
 
std::vector< Ref< Function > > GetAnalysisFunctionsContainingAddress (uint64_t addr)
 Get a list of functions containing an address.
 
Ref< FunctionGetAnalysisEntryPoint ()
 Get the function defined as the Analysis entry point for the view.
 
std::vector< Ref< Function > > GetAllEntryFunctions ()
 Get all entry functions (including user-defined ones)
 
Ref< BasicBlockGetRecentBasicBlockForAddress (uint64_t addr)
 Get most recently used Basic Block containing a virtual address.
 
std::vector< Ref< BasicBlock > > GetBasicBlocksForAddress (uint64_t addr)
 Get a list of Basic Blocks containing a virtual address.
 
std::vector< Ref< BasicBlock > > GetBasicBlocksStartingAtAddress (uint64_t addr)
 Get a list of basic blocks starting at a virtual address.
 
std::vector< ReferenceSourceGetCodeReferences (uint64_t addr)
 Get a list of references made from code (instructions) to a virtual address.
 
std::vector< ReferenceSourceGetCodeReferences (uint64_t addr, uint64_t len)
 Get a list of references from code (instructions) to a range of addresses.
 
std::vector< uint64_t > GetCodeReferencesFrom (ReferenceSource src)
 Get code references made by a particular "ReferenceSource".
 
std::vector< uint64_t > GetCodeReferencesFrom (ReferenceSource src, uint64_t len)
 Get code references from a range of addresses.
 
std::vector< uint64_t > GetDataReferences (uint64_t addr)
 Get references made by data ('DataVariables') to a virtual address.
 
std::vector< uint64_t > GetDataReferences (uint64_t addr, uint64_t len)
 Get references made by data ('DataVariables') in a given range, to a virtual address.
 
std::vector< uint64_t > GetDataReferencesFrom (uint64_t addr)
 Get references made by data ('DataVariables') located at a virtual address.
 
std::vector< uint64_t > GetDataReferencesFrom (uint64_t addr, uint64_t len)
 Get references made by data ('DataVariables') located in a range of virtual addresses.
 
void AddUserDataReference (uint64_t fromAddr, uint64_t toAddr)
 Add a user Data Reference from a virtual address to another virtual address.
 
void RemoveUserDataReference (uint64_t fromAddr, uint64_t toAddr)
 Remove a user Data Reference from a virtual address to another virtual address.
 
std::vector< ReferenceSourceGetCodeReferencesForType (const QualifiedName &type)
 Get code references to a Type.
 
std::vector< uint64_t > GetDataReferencesForType (const QualifiedName &type)
 Get data references to a Type.
 
std::vector< TypeReferenceSourceGetTypeReferencesForType (const QualifiedName &type)
 Get Type references to a Type.
 
std::vector< TypeFieldReferenceGetCodeReferencesForTypeField (const QualifiedName &type, uint64_t offset)
 Returns a list of references to a specific type field.
 
std::vector< uint64_t > GetDataReferencesForTypeField (const QualifiedName &type, uint64_t offset)
 Returns a list of virtual addresses of data which references the type type .
 
std::vector< uint64_t > GetDataReferencesFromForTypeField (const QualifiedName &type, uint64_t offset)
 Returns a list of virtual addresses of data which are referenced from the type type .
 
std::vector< TypeReferenceSourceGetTypeReferencesForTypeField (const QualifiedName &type, uint64_t offset)
 Returns a list of type references to a specific type field.
 
std::vector< TypeReferenceSourceGetCodeReferencesForTypeFrom (ReferenceSource src)
 Returns a list of types referenced by code at ReferenceSource src.
 
std::vector< TypeReferenceSourceGetCodeReferencesForTypeFrom (ReferenceSource src, uint64_t len)
 Returns a list of types referenced by code at ReferenceSource src.
 
std::vector< TypeReferenceSourceGetCodeReferencesForTypeFieldFrom (ReferenceSource src)
 Returns a list of type fields referenced by code at ReferenceSource src.
 
std::vector< TypeReferenceSourceGetCodeReferencesForTypeFieldFrom (ReferenceSource src, uint64_t len)
 Returns a list of type fields referenced by code at ReferenceSource src.
 
std::vector< uint64_t > GetAllFieldsReferenced (const QualifiedName &type)
 Returns a list of offsets in the QualifiedName specified by name, which are referenced by code.
 
std::map< uint64_t, std::vector< size_t > > GetAllSizesReferenced (const QualifiedName &type)
 Returns a map from field offset to a list of sizes of the accesses to the specified type.
 
std::map< uint64_t, std::vector< Confidence< Ref< Type > > > > GetAllTypesReferenced (const QualifiedName &type)
 Returns a map from field offset to a list of incoming types written to the specified type.
 
std::vector< size_t > GetSizesReferenced (const QualifiedName &type, uint64_t offset)
 Returns a list of types related to the type field access.
 
std::vector< Confidence< Ref< Type > > > GetTypesReferenced (const QualifiedName &type, uint64_t offset)
 Returns a list of types referenced by a particular type field.
 
std::unordered_set< QualifiedNameGetOutgoingDirectTypeReferences (const QualifiedName &type)
 
std::unordered_set< QualifiedNameGetOutgoingRecursiveTypeReferences (const QualifiedName &type)
 
std::unordered_set< QualifiedNameGetOutgoingRecursiveTypeReferences (const std::unordered_set< QualifiedName > &types)
 
std::unordered_set< QualifiedNameGetIncomingDirectTypeReferences (const QualifiedName &type)
 
std::unordered_set< QualifiedNameGetIncomingRecursiveTypeReferences (const QualifiedName &type)
 
std::unordered_set< QualifiedNameGetIncomingRecursiveTypeReferences (const std::unordered_set< QualifiedName > &types)
 
Ref< StructureCreateStructureBasedOnFieldAccesses (const QualifiedName &type)
 
std::vector< uint64_t > GetCallees (ReferenceSource addr)
 Returns a list of virtual addresses called by the call site in the ReferenceSource.
 
std::vector< ReferenceSourceGetCallers (uint64_t addr)
 Returns a list of ReferenceSource objects (xrefs or cross-references) that call the provided virtual address.
 
Ref< SymbolGetSymbolByAddress (uint64_t addr, const NameSpace &nameSpace=NameSpace())
 Returns the Symbol at the provided virtual address.
 
Ref< SymbolGetSymbolByRawName (const std::string &name, const NameSpace &nameSpace=NameSpace())
 Retrieves a Symbol object for the given a raw (mangled) name.
 
std::vector< Ref< Symbol > > GetSymbolsByName (const std::string &name, const NameSpace &nameSpace=NameSpace())
 Retrieves a list of symbols with a given name.
 
std::vector< Ref< Symbol > > GetSymbolsByRawName (const std::string &name, const NameSpace &nameSpace=NameSpace())
 Retrieves the list of all Symbol objects with a given raw name.
 
std::vector< Ref< Symbol > > GetSymbols (const NameSpace &nameSpace=NameSpace())
 Retrieves the list of all Symbol objects.
 
std::vector< Ref< Symbol > > GetSymbols (uint64_t start, uint64_t len, const NameSpace &nameSpace=NameSpace())
 Retrieves a list of symbols in a given range.
 
std::vector< Ref< Symbol > > GetSymbolsOfType (BNSymbolType type, const NameSpace &nameSpace=NameSpace())
 Retrieves a list of all Symbol objects of the provided symbol type.
 
std::vector< Ref< Symbol > > GetSymbolsOfType (BNSymbolType type, uint64_t start, uint64_t len, const NameSpace &nameSpace=NameSpace())
 Retrieves a list of all Symbol objects of the provided symbol type in the given range.
 
std::vector< Ref< Symbol > > GetVisibleSymbols (const NameSpace &nameSpace=NameSpace())
 Get the list of visible symbols.
 
void DefineAutoSymbol (Ref< Symbol > sym)
 Adds a symbol to the internal list of automatically discovered Symbol objects in a given namespace.
 
Ref< SymbolDefineAutoSymbolAndVariableOrFunction (Ref< Platform > platform, Ref< Symbol > sym, Ref< Type > type)
 Defines an "Auto" symbol, and a Variable/Function alongside it.
 
void UndefineAutoSymbol (Ref< Symbol > sym)
 Undefine an automatically defined symbol.
 
void DefineUserSymbol (Ref< Symbol > sym)
 Define a user symbol.
 
void UndefineUserSymbol (Ref< Symbol > sym)
 Undefine a user symbol.
 
void DefineImportedFunction (Ref< Symbol > importAddressSym, Ref< Function > func, Ref< Type > type=nullptr)
 Defines an imported Function func with a ImportedFunctionSymbol type.
 
Ref< DebugInfoGetDebugInfo ()
 The current debug info object for this binary view.
 
void ApplyDebugInfo (Ref< DebugInfo > newDebugInfo)
 Sets the debug info and applies its contents to the current BinaryView.
 
void SetDebugInfo (Ref< DebugInfo > newDebugInfo)
 Sets the debug info for the current binary view.
 
bool IsApplyingDebugInfo () const
 Determine is a debug info object is currently being applied.
 
void BeginBulkModifySymbols ()
 
void EndBulkModifySymbols ()
 
void AddTagType (Ref< TagType > tagType)
 Add a new TagType to this binaryview.
 
void RemoveTagType (Ref< TagType > tagType)
 Remove a TagType from this binaryview.
 
Ref< TagTypeGetTagType (const std::string &name)
 Get a TagType by name.
 
Ref< TagTypeGetTagType (const std::string &name, TagType::Type type)
 Get a TagType by name and TagType::Type.
 
Ref< TagTypeGetTagTypeByName (const std::string &name)
 Get a TagType by name.
 
Ref< TagTypeGetTagTypeByName (const std::string &name, TagType::Type type)
 Get a TagType by name and TagType::Type.
 
Ref< TagTypeGetTagTypeById (const std::string &id)
 Get a TagType by its ID.
 
Ref< TagTypeGetTagTypeById (const std::string &id, TagType::Type type)
 Get a TagType by its ID and TagType::Type.
 
std::vector< Ref< TagType > > GetTagTypes ()
 Get the list of all defined TagTypes.
 
void AddTag (Ref< Tag > tag, bool user=false)
 Add a Tag.
 
void RemoveTag (Ref< Tag > tag, bool user=false)
 Remove a tag.
 
Ref< TagGetTag (const std::string &tagId)
 Get a tag by its ID.
 
std::vector< TagReferenceGetAllTagReferences ()
 
std::vector< TagReferenceGetAllAddressTagReferences ()
 
std::vector< TagReferenceGetAllFunctionTagReferences ()
 
std::vector< TagReferenceGetAllTagReferencesOfType (Ref< TagType > tagType)
 
std::vector< TagReferenceGetTagReferencesOfType (Ref< TagType > tagType)
 
size_t GetTagReferencesOfTypeCount (Ref< TagType > tagType)
 
size_t GetAllTagReferencesOfTypeCount (Ref< TagType > tagType)
 
std::map< Ref< TagType >, size_t > GetAllTagReferenceTypeCounts ()
 
std::vector< TagReferenceGetDataTagReferences ()
 
std::vector< TagReferenceGetAutoDataTagReferences ()
 
std::vector< TagReferenceGetUserDataTagReferences ()
 
std::vector< Ref< Tag > > GetDataTags (uint64_t addr)
 
std::vector< Ref< Tag > > GetAutoDataTags (uint64_t addr)
 
std::vector< Ref< Tag > > GetUserDataTags (uint64_t addr)
 
std::vector< Ref< Tag > > GetDataTagsOfType (uint64_t addr, Ref< TagType > tagType)
 
std::vector< Ref< Tag > > GetAutoDataTagsOfType (uint64_t addr, Ref< TagType > tagType)
 
std::vector< Ref< Tag > > GetUserDataTagsOfType (uint64_t addr, Ref< TagType > tagType)
 
std::vector< TagReferenceGetDataTagsInRange (uint64_t start, uint64_t end)
 
std::vector< TagReferenceGetAutoDataTagsInRange (uint64_t start, uint64_t end)
 
std::vector< TagReferenceGetUserDataTagsInRange (uint64_t start, uint64_t end)
 
void AddAutoDataTag (uint64_t addr, Ref< Tag > tag)
 
void RemoveAutoDataTag (uint64_t addr, Ref< Tag > tag)
 
void RemoveAutoDataTagsOfType (uint64_t addr, Ref< TagType > tagType)
 
void AddUserDataTag (uint64_t addr, Ref< Tag > tag)
 
void RemoveUserDataTag (uint64_t addr, Ref< Tag > tag)
 
void RemoveUserDataTagsOfType (uint64_t addr, Ref< TagType > tagType)
 
void RemoveTagReference (const TagReference &ref)
 
Ref< TagCreateAutoDataTag (uint64_t addr, const std::string &tagTypeName, const std::string &data, bool unique=false)
 
Ref< TagCreateUserDataTag (uint64_t addr, const std::string &tagTypeName, const std::string &data, bool unique=false)
 
Ref< TagCreateAutoDataTag (uint64_t addr, Ref< TagType > tagType, const std::string &data, bool unique=false)
 
Ref< TagCreateUserDataTag (uint64_t addr, Ref< TagType > tagType, const std::string &data, bool unique=false)
 
std::optional< Ref< Component > > GetComponentByGuid (std::string guid)
 Lookup a component by its GUID.
 
std::optional< Ref< Component > > GetComponentByPath (std::string path)
 Lookup a component by its pathname.
 
Ref< ComponentGetRootComponent ()
 Get the root component for the BinaryView (read-only)
 
Ref< ComponentCreateComponent ()
 Create a component.
 
Ref< ComponentCreateComponent (std::string parentGUID)
 Create a component as a subcomponent of the component with a given Guid.
 
Ref< ComponentCreateComponent (Ref< Component > parent)
 Create a component as a subcomponent of a given Component.
 
Ref< ComponentCreateComponentWithName (std::string name, std::string parentGUID={})
 Create a component with a given name and optional parent.
 
Ref< ComponentCreateComponentWithName (std::string name, Ref< Component > parent)
 Create a component with a given name and parent.
 
bool RemoveComponent (Ref< Component > component)
 Remove a component from the tree entirely.
 
bool RemoveComponent (std::string guid)
 Remove a component from the tree entirely.
 
std::vector< Ref< Component > > GetFunctionParentComponents (Ref< Function > function) const
 
std::vector< Ref< Component > > GetDataVariableParentComponents (DataVariable var) const
 
std::optional< BNStringTypeCheckForStringAnnotationType (uint64_t addr, std::string &value, bool allowShortStrings, bool allowLargeStrings, size_t childWidth)
 Heuristically determine if a string exists at the given address.
 
bool CanAssemble (Architecture *arch)
 Check whether the given architecture supports assembling instructions.
 
bool IsNeverBranchPatchAvailable (Architecture *arch, uint64_t addr)
 Check whether the "Never Branch" patch is available for a given architecture at a given address.
 
bool IsAlwaysBranchPatchAvailable (Architecture *arch, uint64_t addr)
 Check whether the "Always Branch" patch is available for a given architecture at a given address.
 
bool IsInvertBranchPatchAvailable (Architecture *arch, uint64_t addr)
 Check whether the "Invert Branch" patch is available for a given architecture at a given address.
 
bool IsSkipAndReturnZeroPatchAvailable (Architecture *arch, uint64_t addr)
 Check whether the "Skip and Return Zero" patch is available for a given architecture at a given address.
 
bool IsSkipAndReturnValuePatchAvailable (Architecture *arch, uint64_t addr)
 Check whether the "Skip and Return Value" patch is available for a given architecture at a given address.
 
bool ConvertToNop (Architecture *arch, uint64_t addr)
 Convert the instruction at the given address to a nop.
 
bool AlwaysBranch (Architecture *arch, uint64_t addr)
 Convert the conditional branch at the given address to always branch.
 
bool InvertBranch (Architecture *arch, uint64_t addr)
 Convert the conditional branch at the given address to branch under inverted conditions.
 
bool SkipAndReturnValue (Architecture *arch, uint64_t addr, uint64_t value)
 Convert the given instruction to skip the rest of the function and return 0.
 
size_t GetInstructionLength (Architecture *arch, uint64_t addr)
 Get the length of the instruction at a given address.
 
bool GetStringAtAddress (uint64_t addr, BNStringReference &strRef)
 Get the string at an address.
 
std::vector< BNStringReferenceGetStrings ()
 Get the list of strings located within the view.
 
std::vector< BNStringReferenceGetStrings (uint64_t start, uint64_t len)
 Get the list of strings located within a range.
 
Ref< AnalysisCompletionEventAddAnalysisCompletionEvent (const std::function< void()> &callback)
 Sets up a call back function to be called when analysis has been completed.
 
AnalysisInfo GetAnalysisInfo ()
 
BNAnalysisProgress GetAnalysisProgress ()
 
Ref< BackgroundTaskGetBackgroundAnalysisTask ()
 
uint64_t GetNextFunctionStartAfterAddress (uint64_t addr)
 Returns the virtual address of the Function that occurs after the virtual address `addr`.
 
uint64_t GetNextBasicBlockStartAfterAddress (uint64_t addr)
 Returns the virtual address of the BasicBlock that occurs after the virtual address `addr`.
 
uint64_t GetNextDataAfterAddress (uint64_t addr)
 Retrieves the virtual address of the next non-code byte.
 
uint64_t GetNextDataVariableStartAfterAddress (uint64_t addr)
 Retrieves the address of the next DataVariable.
 
uint64_t GetPreviousFunctionStartBeforeAddress (uint64_t addr)
 Returns the virtual address of the Function that occurs prior to the virtual address provided.
 
uint64_t GetPreviousBasicBlockStartBeforeAddress (uint64_t addr)
 Returns the virtual address of the Basic Block that occurs prior to the virtual address provided.
 
uint64_t GetPreviousBasicBlockEndBeforeAddress (uint64_t addr)
 Returns the ending virtual address of the Basic Block that occurs prior to the virtual address provided.
 
uint64_t GetPreviousDataBeforeAddress (uint64_t addr)
 Returns the virtual address of the previous data (non-code) byte.
 
uint64_t GetPreviousDataVariableStartBeforeAddress (uint64_t addr)
 Returns the virtual address of the previous DataVariable.
 
bool ParsePossibleValueSet (const std::string &value, BNRegisterValueType state, PossibleValueSet &result, uint64_t here, std::string &errors)
 
bool ParseTypeString (const std::string &text, QualifiedNameAndType &result, std::string &errors, const std::set< QualifiedName > &typesAllowRedefinition={}, bool importDependencies=true)
 Parse a single type and name from a string containing their definition.
 
bool ParseTypeString (const std::string &text, std::map< QualifiedName, Ref< Type > > &types, std::map< QualifiedName, Ref< Type > > &variables, std::map< QualifiedName, Ref< Type > > &functions, std::string &errors, const std::set< QualifiedName > &typesAllowRedefinition={}, bool importDependencies=true)
 Parse an entire block of source into types, variables, and functions.
 
bool ParseTypesFromSource (const std::string &text, const std::vector< std::string > &options, const std::vector< std::string > &includeDirs, TypeParserResult &result, std::string &errors, const std::set< QualifiedName > &typesAllowRedefinition={}, bool importDependencies=true)
 Parse an entire block of source into a structure containing types, variables, and functions.
 
class TypeContainer GetTypeContainer ()
 Type Container for all types (user and auto) in the BinaryView.
 
class TypeContainer GetAutoTypeContainer ()
 Type Container for ONLY auto types in the BinaryView.
 
class TypeContainer GetUserTypeContainer ()
 Type Container for ONLY user types in the BinaryView.
 
std::map< QualifiedName, Ref< Type > > GetTypes ()
 
std::vector< std::pair< QualifiedName, Ref< Type > > > GetDependencySortedTypes ()
 List of all types, sorted such that types are after all types on which they depend.
 
std::vector< QualifiedNameGetTypeNames (const std::string &matching="")
 
Ref< TypeGetTypeByName (const QualifiedName &name)
 
Ref< TypeGetTypeByRef (Ref< NamedTypeReference > name)
 
Ref< TypeGetTypeById (const std::string &id)
 
std::string GetTypeId (const QualifiedName &name)
 
QualifiedName GetTypeNameById (const std::string &id)
 
bool IsTypeAutoDefined (const QualifiedName &name)
 
QualifiedName DefineType (const std::string &id, const QualifiedName &defaultName, Ref< Type > type)
 
std::unordered_map< std::string, QualifiedNameDefineTypes (const std::vector< std::pair< std::string, QualifiedNameAndType > > &types, std::function< bool(size_t, size_t)> progress={})
 
void DefineUserType (const QualifiedName &name, Ref< Type > type)
 
void DefineUserTypes (const std::vector< QualifiedNameAndType > &types, std::function< bool(size_t, size_t)> progress={})
 
void DefineUserTypes (const std::vector< ParsedType > &types, std::function< bool(size_t, size_t)> progress={})
 
void UndefineType (const std::string &id)
 
void UndefineUserType (const QualifiedName &name)
 
void RenameType (const QualifiedName &oldName, const QualifiedName &newName)
 
void RegisterPlatformTypes (Platform *platform)
 
std::optional< std::pair< Ref< Platform >, QualifiedName > > LookupImportedTypePlatform (const QualifiedName &name)
 Gives you details of which platform and name was imported to result in the given type name.
 
void AddTypeLibrary (TypeLibrary *lib)
 Make the contents of a type library available for type/import resolution.
 
Ref< TypeLibraryGetTypeLibrary (const std::string &name)
 Get the type library with the given name.
 
std::vector< Ref< TypeLibrary > > GetTypeLibraries ()
 Get the list of imported type libraries.
 
Ref< TypeImportTypeLibraryType (Ref< TypeLibrary > &lib, const QualifiedName &name)
 Recursively imports a type from the specified type library, or, if no library was explicitly provided, the first type library associated with the current `BinaryView` that provides the name requested.
 
Ref< TypeImportTypeLibraryObject (Ref< TypeLibrary > &lib, const QualifiedName &name)
 Recursively imports an object from the specified type library, or, if no library was explicitly provided, the first type library associated with the current `BinaryView` that provides the name requested.
 
Ref< TypeImportTypeLibraryTypeByGuid (const std::string &guid)
 Recursively imports a type by guid from the current BinaryView's set of type libraries.
 
std::optional< QualifiedNameGetTypeNameByGuid (const std::string &guid)
 
void ExportTypeToTypeLibrary (TypeLibrary *lib, const QualifiedName &name, Type *type)
 Recursively exports ``type`` into ``lib`` as a type with name ``name``.
 
void ExportObjectToTypeLibrary (TypeLibrary *lib, const QualifiedName &name, Type *type)
 Recursively exports ``type`` into ``lib`` as an object with name ``name``.
 
void RecordImportedObjectLibrary (Platform *tgtPlatform, uint64_t tgtAddr, TypeLibrary *lib, const QualifiedName &name)
 Should be called by custom `BinaryView` implementations when they have successfully imported an object from a type library (eg a symbol's type).
 
std::optional< std::pair< Ref< TypeLibrary >, QualifiedName > > LookupImportedObjectLibrary (Platform *tgtPlatform, uint64_t tgtAddr)
 Gives you details of which type library and name was used to determine the type of a symbol at a given address.
 
std::optional< std::pair< Ref< TypeLibrary >, QualifiedName > > LookupImportedTypeLibrary (const QualifiedName &name)
 Gives you details of which type library and name was imported to result in the given type name.
 
Ref< TypeArchiveAttachTypeArchive (const std::string &id, const std::string &path)
 Attach a given type archive to the binary view.
 
void DetachTypeArchive (const std::string &id)
 Detach from a type archive, breaking all associations to types with the archive.
 
Ref< TypeArchiveGetTypeArchive (const std::string &id) const
 Look up a connected archive by its id.
 
std::unordered_map< std::string, std::string > GetTypeArchives () const
 Get all attached type archives.
 
std::optional< std::string > GetTypeArchivePath (const std::string &id) const
 Look up the path for an attached (but not necessarily connected) type archive by its id.
 
std::unordered_map< QualifiedName, std::map< std::string, std::string > > GetTypeArchiveTypeNames () const
 Get a list of all available type names in all connected archives, and their archive/type id pair.
 
std::unordered_map< std::string, std::pair< std::string, std::string > > GetAssociatedTypeArchiveTypes () const
 Get a list of all types in the analysis that are associated with a specific type archive.
 
std::unordered_map< std::string, std::string > GetAssociatedTypesFromArchive (const std::string &archive) const
 Get a list of all types in the analysis that are associated with a specific type archive.
 
std::optional< std::pair< std::string, std::string > > GetAssociatedTypeArchiveTypeTarget (const std::string &id) const
 Determine the target archive / type id of a given analysis type.
 
std::optional< std::string > GetAssociatedTypeArchiveTypeSource (const std::string &archiveId, const std::string &archiveTypeId) const
 Determine the local source type for a given archive type.
 
BNSyncStatus GetTypeArchiveSyncStatus (const std::string &typeId) const
 Get the current status of any changes pending in a given type.
 
bool DisassociateTypeArchiveType (const std::string &typeId)
 Disassociate an associated type, so that it will no longer receive updates from its connected type archive.
 
bool PullTypeArchiveTypes (const std::string &archiveId, const std::unordered_set< std::string > &archiveTypeIds, std::unordered_map< std::string, std::string > &updatedTypes)
 Pull a collection of types from a type archive, associating with them and any dependencies.
 
bool PushTypeArchiveTypes (const std::string &archiveId, const std::unordered_set< std::string > &typeIds, std::unordered_map< std::string, std::string > &updatedTypes)
 Push a collection of types, and all their dependencies, into a type archive.
 
bool FindNextData (uint64_t start, const DataBuffer &data, uint64_t &result, BNFindFlag flags=FindCaseSensitive)
 
bool FindNextText (uint64_t start, const std::string &data, uint64_t &result, Ref< DisassemblySettings > settings, BNFindFlag flags=FindCaseSensitive, const FunctionViewType &viewType=NormalFunctionGraph)
 
bool FindNextConstant (uint64_t start, uint64_t constant, uint64_t &result, Ref< DisassemblySettings > settings, const FunctionViewType &viewType=NormalFunctionGraph)
 
bool FindNextData (uint64_t start, uint64_t end, const DataBuffer &data, uint64_t &addr, BNFindFlag flags, const std::function< bool(size_t current, size_t total)> &progress)
 
bool FindNextText (uint64_t start, uint64_t end, const std::string &data, uint64_t &addr, Ref< DisassemblySettings > settings, BNFindFlag flags, const FunctionViewType &viewType, const std::function< bool(size_t current, size_t total)> &progress)
 
bool FindNextConstant (uint64_t start, uint64_t end, uint64_t constant, uint64_t &addr, Ref< DisassemblySettings > settings, const FunctionViewType &viewType, const std::function< bool(size_t current, size_t total)> &progress)
 
bool FindAllData (uint64_t start, uint64_t end, const DataBuffer &data, BNFindFlag flags, const std::function< bool(size_t current, size_t total)> &progress, const std::function< bool(uint64_t addr, const DataBuffer &match)> &matchCallback)
 
bool FindAllText (uint64_t start, uint64_t end, const std::string &data, Ref< DisassemblySettings > settings, BNFindFlag flags, const FunctionViewType &viewType, const std::function< bool(size_t current, size_t total)> &progress, const std::function< bool(uint64_t addr, const std::string &match, const LinearDisassemblyLine &line)> &matchCallback)
 
bool FindAllConstant (uint64_t start, uint64_t end, uint64_t constant, Ref< DisassemblySettings > settings, const FunctionViewType &viewType, const std::function< bool(size_t current, size_t total)> &progress, const std::function< bool(uint64_t addr, const LinearDisassemblyLine &line)> &matchCallback)
 
bool Search (const std::string &query, const std::function< bool(uint64_t offset, const DataBuffer &buffer)> &otherCallback)
 
void Reanalyze ()
 
Ref< WorkflowGetWorkflow ()
 
void ShowPlainTextReport (const std::string &title, const std::string &contents)
 Displays contents to the user in the UI or on the command-line.
 
void ShowMarkdownReport (const std::string &title, const std::string &contents, const std::string &plainText)
 Displays markdown contents to the user in the UI or on the command-line.
 
void ShowHTMLReport (const std::string &title, const std::string &contents, const std::string &plainText)
 Displays HTML contents to the user in the UI or on the command-line.
 
void ShowGraphReport (const std::string &title, FlowGraph *graph)
 Displays a flow graph in UI applications and nothing in command-line applications.
 
bool GetAddressInput (uint64_t &result, const std::string &prompt, const std::string &title)
 Prompts the user to input an unsigned integer with the given prompt and title.
 
bool GetAddressInput (uint64_t &result, const std::string &prompt, const std::string &title, uint64_t currentAddress)
 Prompts the user to input an unsigned integer with the given prompt and title.
 
MemoryMapGetMemoryMap ()
 A mock object that is a placeholder during development of this feature.
 
void BeginBulkAddSegments ()
 Begin a bulk segment addition operation.
 
void EndBulkAddSegments ()
 Finalize and apply all queued segments (auto and user) added during a bulk segment addition operation.
 
void CancelBulkAddSegments ()
 Cancel a bulk segment addition operation.
 
void AddAutoSegment (uint64_t start, uint64_t length, uint64_t dataOffset, uint64_t dataLength, uint32_t flags)
 Add an analysis segment that specifies how data from the raw file is mapped into a virtual address space.
 
void AddAutoSegments (const std::vector< BNSegmentInfo > &segments)
 Add analysis segments that specify how data from the raw file is mapped into a virtual address space.
 
void RemoveAutoSegment (uint64_t start, uint64_t length)
 Removes an automatically generated segment from the current segment mapping.
 
void AddUserSegment (uint64_t start, uint64_t length, uint64_t dataOffset, uint64_t dataLength, uint32_t flags)
 Creates a user-defined segment that specifies how data from the raw file is mapped into a virtual address space.
 
void AddUserSegments (const std::vector< BNSegmentInfo > &segments)
 Creates user-defined segments that specify how data from the raw file is mapped into a virtual address space.
 
void RemoveUserSegment (uint64_t start, uint64_t length)
 Removes a user-defined segment from th current segment mapping.
 
std::vector< Ref< Segment > > GetSegments ()
 Get the list of registered Segments.
 
Ref< SegmentGetSegmentAt (uint64_t addr)
 Gets the Segment a given virtual address is located in.
 
bool GetAddressForDataOffset (uint64_t offset, uint64_t &addr)
 Retrieves the virtual addreses that maps to the given file offset, if possible.
 
bool GetDataOffsetForAddress (uint64_t addr, uint64_t &offset)
 
void AddAutoSection (const std::string &name, uint64_t start, uint64_t length, BNSectionSemantics semantics=DefaultSectionSemantics, const std::string &type="", uint64_t align=1, uint64_t entrySize=0, const std::string &linkedSection="", const std::string &infoSection="", uint64_t infoData=0)
 Creates an analysis-defined section that can help inform analysis by clarifying what types of data exist in what ranges.
 
void RemoveAutoSection (const std::string &name)
 Remove an automatically defined section by name.
 
void AddUserSection (const std::string &name, uint64_t start, uint64_t length, BNSectionSemantics semantics=DefaultSectionSemantics, const std::string &type="", uint64_t align=1, uint64_t entrySize=0, const std::string &linkedSection="", const std::string &infoSection="", uint64_t infoData=0)
 Creates a user-defined section that can help inform analysis by clarifying what types of data exist in what ranges.
 
void RemoveUserSection (const std::string &name)
 Remove a user defined section by name.
 
std::vector< Ref< Section > > GetSections ()
 Get the list of defined sections.
 
std::vector< Ref< Section > > GetSectionsAt (uint64_t addr)
 Get the list of sections containing addr.
 
Ref< SectionGetSectionByName (const std::string &name)
 Get a Section by name.
 
std::vector< std::string > GetUniqueSectionNames (const std::vector< std::string > &names)
 Create unique names for all items in the input list, modifying them if they are not unique.
 
std::vector< BNAddressRangeGetAllocatedRanges ()
 Get the list of allocated ranges.
 
std::vector< BNAddressRangeGetMappedAddressRanges ()
 Get the list of ranges mapped into the address space.
 
std::vector< BNAddressRangeGetBackedAddressRanges ()
 Get the list of ranges that are mapped into the address space and are backed by a target object.
 
std::string GetCommentForAddress (uint64_t addr) const
 Get the comment placed at an address.
 
std::vector< uint64_t > GetCommentedAddresses () const
 Get the list of commented addresses.
 
void SetCommentForAddress (uint64_t addr, const std::string &comment)
 Set the comment at an address.
 
void StoreMetadata (const std::string &key, Ref< Metadata > value, bool isAuto=false)
 
Ref< MetadataQueryMetadata (const std::string &key)
 
void RemoveMetadata (const std::string &key)
 
Ref< MetadataGetMetadata ()
 
Ref< MetadataGetAutoMetadata ()
 
std::string GetStringMetadata (const std::string &key)
 
std::vector< uint8_t > GetRawMetadata (const std::string &key)
 
uint64_t GetUIntMetadata (const std::string &key)
 
std::vector< std::string > GetLoadSettingsTypeNames ()
 
Ref< SettingsGetLoadSettings (const std::string &typeName)
 
void SetLoadSettings (const std::string &typeName, Ref< Settings > settings)
 
BNAnalysisParameters GetParametersForAnalysis ()
 
void SetParametersForAnalysis (BNAnalysisParameters params)
 
uint64_t GetMaxFunctionSizeForAnalysis ()
 
void SetMaxFunctionSizeForAnalysis (uint64_t size)
 
bool GetNewAutoFunctionAnalysisSuppressed ()
 
void SetNewAutoFunctionAnalysisSuppressed (bool suppress)
 
std::set< NameSpaceGetNameSpaces () const
 Returns a list of namespaces for the current BinaryView.
 
bool HasSymbols () const
 Check whether this BinaryView has any defined symbols.
 
bool HasDataVariables () const
 Check whether this BinaryView has any defined DataVariables.
 
Ref< StructureCreateStructureFromOffsetAccess (const QualifiedName &type, bool *newMemberAdded) const
 
Confidence< Ref< Type > > CreateStructureMemberFromAccess (const QualifiedName &name, uint64_t offset) const
 
Ref< LoggerCreateLogger (const std::string &name)
 Create a logger with a session ID tied to this BinaryView.
 
void AddExpressionParserMagicValue (const std::string &name, uint64_t value)
 Add a magic value to the expression parser.
 
void RemoveExpressionParserMagicValue (const std::string &name)
 Remove a magic value from the expression parser.
 
void AddExpressionParserMagicValues (const std::vector< std::string > &names, const std::vector< uint64_t > &values)
 Add a list of magic value to the expression parser.
 
void RemoveExpressionParserMagicValues (const std::vector< std::string > &names)
 Remove a list of magic value from the expression parser.
 
bool GetExpressionParserMagicValue (const std::string &name, uint64_t *value)
 Get the value of an expression parser magic value.
 
Ref< ExternalLibraryAddExternalLibrary (const std::string &name, Ref< ProjectFile > backingFile, bool isAuto=false)
 
void RemoveExternalLibrary (const std::string &name)
 
Ref< ExternalLibraryGetExternalLibrary (const std::string &name)
 
std::vector< Ref< ExternalLibrary > > GetExternalLibraries ()
 
Ref< ExternalLocationAddExternalLocation (Ref< Symbol > sourceSymbol, Ref< ExternalLibrary > library, std::optional< std::string > targetSymbol, std::optional< uint64_t > targetAddress, bool isAuto=false)
 
void RemoveExternalLocation (Ref< Symbol > sourceSymbol)
 
Ref< ExternalLocationGetExternalLocation (Ref< Symbol > sourceSymbol)
 
std::vector< Ref< ExternalLocation > > GetExternalLocations ()
 
Confidence< RegisterValueGetGlobalPointerValue () const
 
bool UserGlobalPointerValueSet () const
 
void ClearUserGlobalPointerValue ()
 
void SetUserGlobalPointerValue (const Confidence< RegisterValue > &value)
 
std::optional< std::pair< std::string, BNStringType > > StringifyUnicodeData (Architecture *arch, const DataBuffer &buffer, bool allowShortStrings=false)
 
- Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNBinaryView, BNNewViewReference, BNFreeBinaryView >
 CoreRefCountObject ()
 
virtual ~CoreRefCountObject ()
 
BNBinaryViewGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void ReleaseForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Static Public Member Functions

static NameSpace GetInternalNameSpace ()
 Internal namespace for the current BinaryView.
 
static NameSpace GetExternalNameSpace ()
 External namespace for the current BinaryView.
 
static bool ParseExpression (Ref< BinaryView > view, const std::string &expression, uint64_t &offset, uint64_t here, std::string &errorString)
 Evaluates a string expression to an integer value.
 
- Static Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNBinaryView, BNNewViewReference, BNFreeBinaryView >
static BNBinaryViewGetObject (CoreRefCountObject *obj)
 
static BNBinaryViewGetObject (const CoreRefCountObject *obj)
 

Protected Member Functions

 BinaryView (const std::string &typeName, FileMetadata *file, BinaryView *parentView=nullptr)
 BinaryView constructor.
 
virtual size_t PerformRead (void *dest, uint64_t offset, size_t len)
 PerformRead provides a mapping between the flat file and virtual offsets in the file.
 
virtual size_t PerformWrite (uint64_t offset, const void *data, size_t len)
 PerformWrite provides a mapping between the flat file and virtual offsets in the file.
 
virtual size_t PerformInsert (uint64_t offset, const void *data, size_t len)
 PerformInsert provides a mapping between the flat file and virtual offsets in the file, inserting `len` bytes from `data` to virtual address `offset`.
 
virtual size_t PerformRemove (uint64_t offset, uint64_t len)
 PerformRemove provides a mapping between the flat file and virtual offsets in the file, removing `len` bytes from virtual address `offset`.
 
virtual BNModificationStatus PerformGetModification (uint64_t offset)
 PerformGetModification implements a query as to whether the virtual address `offset` is modified.
 
virtual bool PerformIsValidOffset (uint64_t offset)
 PerformIsValidOffset implements a check as to whether a virtual address `offset` is valid.
 
virtual bool PerformIsOffsetReadable (uint64_t offset)
 PerformIsOffsetReadable implements a check as to whether a virtual address is readable.
 
virtual bool PerformIsOffsetWritable (uint64_t offset)
 PerformIsOffsetWritable implements a check as to whether a virtual address is writable.
 
virtual bool PerformIsOffsetExecutable (uint64_t offset)
 PerformIsOffsetExecutable implements a check as to whether a virtual address is executable.
 
virtual bool PerformIsOffsetBackedByFile (uint64_t offset)
 PerformIsOffsetBackedByFile implements a check as to whether a virtual address is backed by a file.
 
virtual uint64_t PerformGetNextValidOffset (uint64_t offset)
 PerformGetNextValidOffset implements a query for the next valid readable, writable, or executable virtual memory address after `offset`.
 
virtual uint64_t PerformGetStart () const
 PerformGetStart implements a query for the first readable, writable, or executable virtual address in the BinaryView.
 
virtual uint64_t PerformGetLength () const
 
virtual uint64_t PerformGetEntryPoint () const
 
virtual bool PerformIsExecutable () const
 PerformIsExecutable implements a check which returns true if the BinaryView is executable.
 
virtual BNEndianness PerformGetDefaultEndianness () const
 PerformGetDefaultEndianness implements a check which returns the Endianness of the BinaryView.
 
virtual bool PerformIsRelocatable () const
 PerformIsRelocatable implements a check which returns true if the BinaryView is relocatable.
 
virtual size_t PerformGetAddressSize () const
 PerformGetAddressSize implements a query for the address size for this BinaryView.
 
virtual bool PerformSave (FileAccessor *file)
 
void PerformDefineRelocation (Architecture *arch, BNRelocationInfo &info, uint64_t target, uint64_t reloc)
 
void PerformDefineRelocation (Architecture *arch, BNRelocationInfo &info, Ref< Symbol > sym, uint64_t reloc)
 

Protected Attributes

Ref< FileMetadatam_file
 The underlying file.
 

Additional Inherited Members

- Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNBinaryView, BNNewViewReference, BNFreeBinaryView >
std::atomic< int > m_refs
 
bool m_registeredRef
 
BNBinaryViewm_object
 

Constructor & Destructor Documentation

◆ BinaryView() [1/2]

BinaryView::BinaryView ( const std::string & typeName,
FileMetadata * file,
BinaryView * parentView = nullptr )
protected

BinaryView constructor.

Parameters
typeNamename of the BinaryView (e.g. ELF, PE, Mach-O, ...)
filea file to create a view from
parentViewoptional view that contains the raw data used by this view

◆ BinaryView() [2/2]

BinaryView::BinaryView ( BNBinaryView * view)

Member Function Documentation

◆ PerformRead()

virtual size_t BinaryNinja::BinaryView::PerformRead ( void * dest,
uint64_t offset,
size_t len )
inlineprotectedvirtual

PerformRead provides a mapping between the flat file and virtual offsets in the file.

Note
This method **may** be overridden by custom BinaryViews. Use AddAutoSegment to provide data without overriding this method.
Warning
This method **must not** be called directly.
Parameters
destthe address to write len number of bytes.
offsetthe virtual offset to find and read len bytes from
lenthe number of bytes to read from offset and write to dest

◆ PerformWrite()

virtual size_t BinaryNinja::BinaryView::PerformWrite ( uint64_t offset,
const void * data,
size_t len )
inlineprotectedvirtual

PerformWrite provides a mapping between the flat file and virtual offsets in the file.

Note
This method **may** be overridden by custom BinaryViews. Use AddAutoSegment to provide data without overriding this method.
Warning
This method **must not** be called directly.
Parameters
offsetthe virtual offset to find and write len bytes to
datathe address to read len number of bytes from
lenthe number of bytes to read from data and write to offset
Returns
length of data written, 0 on error

◆ PerformInsert()

virtual size_t BinaryNinja::BinaryView::PerformInsert ( uint64_t offset,
const void * data,
size_t len )
inlineprotectedvirtual

PerformInsert provides a mapping between the flat file and virtual offsets in the file, inserting `len` bytes from `data` to virtual address `offset`.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Parameters
offsetthe virtual offset to find and insert len bytes into
datathe address to read len number of bytes from
lenthe number of bytes to read from data and insert at offset
Returns
length of data inserted, 0 on error

◆ PerformRemove()

virtual size_t BinaryNinja::BinaryView::PerformRemove ( uint64_t offset,
uint64_t len )
inlineprotectedvirtual

PerformRemove provides a mapping between the flat file and virtual offsets in the file, removing `len` bytes from virtual address `offset`.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Parameters
offsetthe virtual offset to find and remove bytes from
lenthe number of bytes to be removed
Returns
length of data removed, 0 on error

◆ PerformGetModification()

virtual BNModificationStatus BinaryNinja::BinaryView::PerformGetModification ( uint64_t offset)
inlineprotectedvirtual

PerformGetModification implements a query as to whether the virtual address `offset` is modified.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Parameters
offseta virtual address to be checked
Returns
one of Original, Changed, Inserted

◆ PerformIsValidOffset()

bool BinaryView::PerformIsValidOffset ( uint64_t offset)
protectedvirtual

PerformIsValidOffset implements a check as to whether a virtual address `offset` is valid.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Parameters
offsetthe virtual address to check
Returns
whether the offset is valid

◆ PerformIsOffsetReadable()

bool BinaryView::PerformIsOffsetReadable ( uint64_t offset)
protectedvirtual

PerformIsOffsetReadable implements a check as to whether a virtual address is readable.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Parameters
offsetthe virtual address to check
Returns
whether the offset is readable

◆ PerformIsOffsetWritable()

bool BinaryView::PerformIsOffsetWritable ( uint64_t offset)
protectedvirtual

PerformIsOffsetWritable implements a check as to whether a virtual address is writable.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Parameters
offsetthe virtual address to check
Returns
whether the offset is writable

◆ PerformIsOffsetExecutable()

bool BinaryView::PerformIsOffsetExecutable ( uint64_t offset)
protectedvirtual

PerformIsOffsetExecutable implements a check as to whether a virtual address is executable.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Parameters
offsetthe virtual address to check
Returns
whether the offset is executable

◆ PerformIsOffsetBackedByFile()

bool BinaryView::PerformIsOffsetBackedByFile ( uint64_t offset)
protectedvirtual

PerformIsOffsetBackedByFile implements a check as to whether a virtual address is backed by a file.

Parameters
offsetthe virtual address to check
Returns
whether the offset is backed by a file

◆ PerformGetNextValidOffset()

uint64_t BinaryView::PerformGetNextValidOffset ( uint64_t offset)
protectedvirtual

PerformGetNextValidOffset implements a query for the next valid readable, writable, or executable virtual memory address after `offset`.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Parameters
offseta virtual address to start checking from
Returns
the next valid address

◆ PerformGetStart()

virtual uint64_t BinaryNinja::BinaryView::PerformGetStart ( ) const
inlineprotectedvirtual

PerformGetStart implements a query for the first readable, writable, or executable virtual address in the BinaryView.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Returns
the first virtual address in the BinaryView

◆ PerformGetLength()

virtual uint64_t BinaryNinja::BinaryView::PerformGetLength ( ) const
inlineprotectedvirtual

◆ PerformGetEntryPoint()

virtual uint64_t BinaryNinja::BinaryView::PerformGetEntryPoint ( ) const
inlineprotectedvirtual

◆ PerformIsExecutable()

virtual bool BinaryNinja::BinaryView::PerformIsExecutable ( ) const
inlineprotectedvirtual

PerformIsExecutable implements a check which returns true if the BinaryView is executable.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Returns
whether the BinaryView is executable

◆ PerformGetDefaultEndianness()

BNEndianness BinaryView::PerformGetDefaultEndianness ( ) const
protectedvirtual

PerformGetDefaultEndianness implements a check which returns the Endianness of the BinaryView.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Returns
either LittleEndian or BigEndian

◆ PerformIsRelocatable()

bool BinaryView::PerformIsRelocatable ( ) const
protectedvirtual

PerformIsRelocatable implements a check which returns true if the BinaryView is relocatable.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Returns
whether the BinaryView is relocatable

◆ PerformGetAddressSize()

size_t BinaryView::PerformGetAddressSize ( ) const
protectedvirtual

PerformGetAddressSize implements a query for the address size for this BinaryView.

Note
This method **may** be overridden by custom BinaryViews.
Warning
This method **must not** be called directly.
Returns
the address size for this BinaryView

◆ PerformSave()

bool BinaryView::PerformSave ( FileAccessor * file)
protectedvirtual

◆ PerformDefineRelocation() [1/2]

void BinaryView::PerformDefineRelocation ( Architecture * arch,
BNRelocationInfo & info,
uint64_t target,
uint64_t reloc )
protected

◆ PerformDefineRelocation() [2/2]

void BinaryView::PerformDefineRelocation ( Architecture * arch,
BNRelocationInfo & info,
Ref< Symbol > sym,
uint64_t reloc )
protected

◆ NotifyDataWritten()

void BinaryView::NotifyDataWritten ( uint64_t offset,
size_t len )

◆ NotifyDataInserted()

void BinaryView::NotifyDataInserted ( uint64_t offset,
size_t len )

◆ NotifyDataRemoved()

void BinaryView::NotifyDataRemoved ( uint64_t offset,
uint64_t len )

◆ Init()

virtual bool BinaryNinja::BinaryView::Init ( )
inlinevirtual

◆ GetFile()

FileMetadata * BinaryNinja::BinaryView::GetFile ( ) const
inline
Returns
FileMetadata for this BinaryView

◆ GetParentView()

Ref< BinaryView > BinaryView::GetParentView ( ) const
Returns
View that contains the raw data used by this view

◆ GetTypeName()

string BinaryView::GetTypeName ( ) const

◆ IsModified()

bool BinaryView::IsModified ( ) const
Returns
Whether the file has unsaved modifications

◆ IsAnalysisChanged()

bool BinaryView::IsAnalysisChanged ( ) const
Returns
Whether auto-analysis results have changed.

◆ CreateDatabase() [1/2]

bool BinaryNinja::BinaryView::CreateDatabase ( const std::string & path,
Ref< SaveSettings > settings = new SaveSettings() )

Writes the current database (.bndb) out to the specified file.

Parameters
pathpath and filename to write the bndb to. Should have ".bndb" appended to it.
settingsSpecial save options
Returns
Whether the save was successful

◆ CreateDatabase() [2/2]

bool BinaryNinja::BinaryView::CreateDatabase ( const std::string & path,
const std::function< bool(size_t progress, size_t total)> & progressCallback,
Ref< SaveSettings > settings = new SaveSettings() )

Writes the current database (.bndb) out to the specified file.

Parameters
pathpath and filename to write the bndb to. Should have ".bndb" appended to it.
progressCallbackcallback function to send save progress to.
settingsSpecial save options
Returns
Whether the save was successful

◆ SaveAutoSnapshot() [1/2]

bool BinaryView::SaveAutoSnapshot ( Ref< SaveSettings > settings = new SaveSettings())

◆ SaveAutoSnapshot() [2/2]

bool BinaryNinja::BinaryView::SaveAutoSnapshot ( const std::function< bool(size_t progress, size_t total)> & progressCallback,
Ref< SaveSettings > settings = new SaveSettings() )

◆ RunUndoableTransaction()

bool BinaryView::RunUndoableTransaction ( std::function< bool()> func)

Run a function in a context in which any changes made to analysis will be added to an undo state.

If the function returns false or throws an exception, any changes made within will be reverted.

Parameters
funcFunction to run in undo context
Returns
Return status of function
Exceptions
std::exceptionIf the called function throws an exception

◆ BeginUndoActions()

string BinaryView::BeginUndoActions ( bool anonymousAllowed = true)
nodiscard

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

Parameters
anonymousAllowedLegacy interop: prevent empty calls to CommitUndoActions from affecting this undo state. Specifically for RunUndoableTransaction.
Returns
Id of UndoEntry created, for passing to either CommitUndoActions or RevertUndoActions

◆ CommitUndoActions()

void BinaryView::CommitUndoActions ( const std::string & id)

Commit the actions taken since a call to BeginUndoActions.

Parameters
idId of UndoEntry created by BeginUndoActions

◆ RevertUndoActions()

void BinaryView::RevertUndoActions ( const std::string & id)

Revert the actions taken since a call to BeginUndoActions.

Parameters
idId of UndoEntry created by BeginUndoActions

◆ ForgetUndoActions()

void BinaryView::ForgetUndoActions ( const std::string & id)

Forget the actions taken since a call to BeginUndoActions.

Parameters
idId of UndoEntry created by BeginUndoActions

◆ CanUndo()

bool BinaryView::CanUndo ( )
Returns
Whether it is possible to perform an Undo

◆ Undo()

bool BinaryView::Undo ( )

Undo the last committed action in the undo database.

◆ CanRedo()

bool BinaryView::CanRedo ( )
Returns
Whether it is possible to perform a Redo

◆ Redo()

bool BinaryView::Redo ( )

Redo the last committed action in the undo database.

◆ GetCurrentView()

string BinaryView::GetCurrentView ( )

Get the current View name, e.g.

``Linear:ELF``, ``Graph:PE``

Returns
The current view name

◆ GetCurrentOffset()

uint64_t BinaryView::GetCurrentOffset ( )

Get the current offset in the current view.

Returns
The current offset

◆ Navigate()

bool BinaryView::Navigate ( const std::string & view,
uint64_t offset )

Navigate to the specified virtual address in the specified view.

Parameters
viewView name. e.g. ``Linear:ELF``, ``Graph:PE``
offsetVirtual address to navigate to
Returns
Whether the navigation was successful.

◆ Read()

size_t BinaryView::Read ( void * dest,
uint64_t offset,
size_t len )

Read writes `len` bytes at virtual address `offset` to address `dest`.

Parameters
destVirtual address to write to
offsetvirtual address to read from
lennumber of bytes to read
Returns
amount of bytes read

◆ ReadBuffer()

DataBuffer BinaryView::ReadBuffer ( uint64_t offset,
size_t len )

ReadBuffer reads len bytes from a virtual address into a DataBuffer.

Parameters
offsetvirtual address to read from
lennumber of bytes to read
Returns
DataBuffer containing the read bytes

◆ Write()

size_t BinaryView::Write ( uint64_t offset,
const void * data,
size_t len )

Write writes `len` bytes data at address `dest` to virtual address `offset`.

Parameters
offsetvirtual address to write to
dataaddress to read from
lennumber of bytes to write
Returns
amount of bytes written

◆ WriteBuffer()

size_t BinaryView::WriteBuffer ( uint64_t offset,
const DataBuffer & data )

WriteBuffer writes the contents of a DataBuffer into a virtual address.

Parameters
offsetvirtual address to write to
dataDataBuffer containing the bytes to write
Returns
amount of bytes written

◆ Insert()

size_t BinaryView::Insert ( uint64_t offset,
const void * data,
size_t len )

Insert inserts `len` bytes data at address `dest` starting from virtual address `offset`.

Parameters
offsetvirtual address to start inserting from
dataaddress to read from
lennumber of bytes to write
Returns
amount of bytes written

◆ InsertBuffer()

size_t BinaryView::InsertBuffer ( uint64_t offset,
const DataBuffer & data )

InsertBuffer inserts the contents of a DataBuffer starting from a virtual address.

Parameters
offsetvirtual address to start inserting from
dataDataBuffer containing the bytes to write
Returns
amount of bytes written

◆ Remove()

size_t BinaryView::Remove ( uint64_t offset,
uint64_t len )

PerformRemove removes `len` bytes from virtual address `offset`.

Parameters
offsetthe virtual offset to find and remove bytes from
lenthe number of bytes to be removed
Returns
length of data removed, 0 on error

◆ GetEntropy()

vector< float > BinaryView::GetEntropy ( uint64_t offset,
size_t len,
size_t blockSize )

◆ GetModification() [1/2]

BNModificationStatus BinaryView::GetModification ( uint64_t offset)

GetModification checks whether the virtual address `offset` is modified.

Parameters
offseta virtual address to be checked
Returns
one of Original, Changed, Inserted

◆ GetModification() [2/2]

vector< BNModificationStatus > BinaryView::GetModification ( uint64_t offset,
size_t len )

◆ IsValidOffset()

bool BinaryView::IsValidOffset ( uint64_t offset) const

IsValidOffset checks whether a virtual address `offset` is valid.

Parameters
offsetthe virtual address to check
Returns
whether the offset is valid

◆ IsOffsetReadable()

bool BinaryView::IsOffsetReadable ( uint64_t offset) const

IsOffsetReadable checks whether a virtual address is readable.

Parameters
offsetthe virtual address to check
Returns
whether the offset is readable

◆ IsOffsetWritable()

bool BinaryView::IsOffsetWritable ( uint64_t offset) const

IsOffsetWritable checks whether a virtual address is writable.

Parameters
offsetthe virtual address to check
Returns
whether the offset is writable

◆ IsOffsetExecutable()

bool BinaryView::IsOffsetExecutable ( uint64_t offset) const

IsOffsetExecutable checks whether a virtual address is executable.

Parameters
offsetthe virtual address to check
Returns
whether the offset is executable

◆ IsOffsetBackedByFile()

bool BinaryView::IsOffsetBackedByFile ( uint64_t offset) const

IsOffsetBackedByFile checks whether a virtual address is backed by a file.

Parameters
offsetthe virtual address to check
Returns
whether the offset is backed by a file

◆ IsOffsetCodeSemantics()

bool BinaryView::IsOffsetCodeSemantics ( uint64_t offset) const

◆ IsOffsetWritableSemantics()

bool BinaryView::IsOffsetWritableSemantics ( uint64_t offset) const

◆ IsOffsetExternSemantics()

bool BinaryView::IsOffsetExternSemantics ( uint64_t offset) const

◆ GetNextValidOffset()

uint64_t BinaryView::GetNextValidOffset ( uint64_t offset) const

GetNextValidOffset implements a query for the next valid readable, writable, or executable virtual memory address after `offset`.

Parameters
offseta virtual address to start checking from
Returns
the next valid address

◆ GetImageBase()

uint64_t BinaryView::GetImageBase ( ) const

GetImageBase queries for the image base in the BinaryView.

Returns
the image base of the BinaryView

◆ GetOriginalImageBase()

uint64_t BinaryView::GetOriginalImageBase ( ) const

GetOriginalImageBase queries for the original image base in the BinaryView, unaffected by any rebasing operations.

Returns
the original image base of the BinaryView

◆ SetOriginalImageBase()

void BinaryView::SetOriginalImageBase ( uint64_t imageBase)

SetOriginalBase sets the original image base in the BinaryView, unaffected by any rebasing operations.

This is only intended to be used by Binary View implementations to provide this value. Regular users should NOT change this value.

Parameters
imageBasethe original image base of the binary view

◆ GetOriginalBase()

uint64_t BinaryView::GetOriginalBase ( ) const

GetOriginalBase queries for the original image base in the BinaryView, unaffected by any rebasing operations.

Deprecated
This API has been deprecated in favor of GetOriginalImageBase in 4.0.xxxx
Returns
the original image base of the BinaryView

◆ SetOriginalBase()

void BinaryView::SetOriginalBase ( uint64_t base)

SetOriginalBase sets the original image base in the BinaryView, unaffected by any rebasing operations.

This is only intended to be used by Binary View implementations to provide this value. Regular users should NOT change this value.

Deprecated
This API has been deprecated in favor of SetOriginalImageBase in 4.0.xxxx
Parameters
basethe original image base of the binary view

◆ GetStart()

uint64_t BinaryView::GetStart ( ) const

GetStart queries for the first valid virtual address in the BinaryView.

Returns
the start of the BinaryView

◆ GetEnd()

uint64_t BinaryView::GetEnd ( ) const

GetEnd queries for the end virtual address of the BinaryView.

Returns
the end of the BinaryView

◆ GetLength()

uint64_t BinaryView::GetLength ( ) const

GetLength queries for the total length of the BinaryView from start to end.

Returns
the length of the BinaryView

◆ GetEntryPoint()

uint64_t BinaryView::GetEntryPoint ( ) const

GetEntryPoint returns the entry point of the executable in the BinaryView.

Returns
the entry point

◆ GetDefaultArchitecture()

Ref< Architecture > BinaryView::GetDefaultArchitecture ( ) const

GetDefaultArchitecture returns the current "default architecture" for the BinaryView.

Returns
the current default architecture

◆ SetDefaultArchitecture()

void BinaryView::SetDefaultArchitecture ( Architecture * arch)

SetDefaultArchitecture allows setting the default architecture for the BinaryView.

Parameters
archthe new default architecture

◆ GetDefaultPlatform()

Ref< Platform > BinaryView::GetDefaultPlatform ( ) const

GetDefaultPlatform returns the current default platform for the BinaryView.

Returns
the current default Platform

◆ SetDefaultPlatform()

void BinaryView::SetDefaultPlatform ( Platform * platform)

SetDefaultPlatform allows setting the default platform for the BinaryView.

Parameters
archthe new default platform

◆ GetDefaultEndianness()

BNEndianness BinaryView::GetDefaultEndianness ( ) const

GetDefaultEndianness returns the default endianness for the BinaryView.

Returns
the current default Endianness, one of LittleEndian, BigEndian

◆ IsRelocatable()

bool BinaryView::IsRelocatable ( ) const

Whether the binary is relocatable.

Returns
Whether the binary is relocatable

◆ GetAddressSize()

size_t BinaryView::GetAddressSize ( ) const

Address size of the binary.

Returns
Address size of the binary

◆ IsExecutable()

bool BinaryView::IsExecutable ( ) const

Whether the binary is an executable.

Returns
Whether the binary is an executable

◆ Save() [1/2]

bool BinaryView::Save ( FileAccessor * file)

Save the original binary file to a FileAccessor.

Parameters
filea FileAccessor pointing to the location to save the binary
Returns
Whether the save was successful

◆ Save() [2/2]

bool BinaryNinja::BinaryView::Save ( const std::string & path)

Save the original binary file to the provided destination.

Parameters
pathdestination path and filename of the file to be written
Returns
Whether the save was successful

◆ DefineRelocation() [1/2]

void BinaryView::DefineRelocation ( Architecture * arch,
BNRelocationInfo & info,
uint64_t target,
uint64_t reloc )

◆ DefineRelocation() [2/2]

void BinaryView::DefineRelocation ( Architecture * arch,
BNRelocationInfo & info,
Ref< Symbol > target,
uint64_t reloc )

◆ GetRelocationRanges()

vector< pair< uint64_t, uint64_t > > BinaryView::GetRelocationRanges ( ) const

◆ GetRelocationRangesAtAddress()

vector< pair< uint64_t, uint64_t > > BinaryView::GetRelocationRangesAtAddress ( uint64_t addr) const

◆ GetRelocationRangesInRange()

vector< pair< uint64_t, uint64_t > > BinaryView::GetRelocationRangesInRange ( uint64_t addr,
size_t size ) const

◆ RangeContainsRelocation()

bool BinaryView::RangeContainsRelocation ( uint64_t addr,
size_t size ) const

◆ GetRelocationsAt()

std::vector< Ref< Relocation > > BinaryView::GetRelocationsAt ( uint64_t addr) const

◆ RegisterNotification()

void BinaryView::RegisterNotification ( BinaryDataNotification * notify)

Provides a mechanism for receiving callbacks for various analysis events.

Parameters
notifyAn instance of a class Subclassing BinaryDataNotification

◆ UnregisterNotification()

void BinaryView::UnregisterNotification ( BinaryDataNotification * notify)

Unregister a notification passed to RegisterNotification.

Parameters
notifyAn instance of a class Subclassing BinaryDataNotification

◆ AddAnalysisOption()

void BinaryView::AddAnalysisOption ( const std::string & name)

Adds an analysis option.

Analysis options elaborate the analysis phase. The user must start analysis by calling either UpdateAnalysis or UpdateAnalysisAndWait

Parameters
nameName of the analysis option. Available options are "linearsweep" and "signaturematcher"

◆ AddFunctionForAnalysis()

Ref< Function > BinaryView::AddFunctionForAnalysis ( Platform * platform,
uint64_t addr,
bool autoDiscovered = false,
Type * type = nullptr )

Add a new function of the given platform at the virtual address.

Parameters
platformPlatform for the function to be loaded
addrVirtual adddress of the function to be loaded
autoDiscoveredtrue if function was automatically discovered, false if created by user
typeoptional function type

◆ AddEntryPointForAnalysis()

void BinaryView::AddEntryPointForAnalysis ( Platform * platform,
uint64_t start )

adds an virtual address to start analysis from for a given platform

Parameters
platformPlatform for the entry point analysis
startvirtual address to start analysis from

◆ AddToEntryFunctions()

void BinaryView::AddToEntryFunctions ( Function * func)

adds an function to all entry function list

Parameters
funcFunction to add

◆ RemoveAnalysisFunction()

void BinaryView::RemoveAnalysisFunction ( Function * func,
bool updateRefs = false )

removes a function from the list of functions

Parameters
funcFunction to be removed
updateRefsautomatically update other functions that were referenced

◆ CreateUserFunction()

Ref< Function > BinaryView::CreateUserFunction ( Platform * platform,
uint64_t start )

Add a new user function of the given platform at the virtual address.

Parameters
platformPlatform for the function to be loaded
addrVirtual adddress of the function to be loaded

◆ RemoveUserFunction()

void BinaryView::RemoveUserFunction ( Function * func)

removes a user function from the list of functions

Parameters
funcFunction to be removed

◆ HasInitialAnalysis()

bool BinaryView::HasInitialAnalysis ( )

check for the presence of an initial analysis in this BinaryView.

Returns
Whether the BinaryView has an initial analysis

◆ SetAnalysisHold()

void BinaryView::SetAnalysisHold ( bool enable)

Controls the analysis hold for this BinaryView.

Enabling analysis hold defers all future analysis updates, therefore causing UpdateAnalysis and UpdateAnalysisAndWait to take no action.

Parameters
enableWhether to enable or disable the analysis hold

◆ GetFunctionAnalysisUpdateDisabled()

bool BinaryView::GetFunctionAnalysisUpdateDisabled ( )

◆ SetFunctionAnalysisUpdateDisabled()

void BinaryView::SetFunctionAnalysisUpdateDisabled ( bool disabled)

◆ UpdateAnalysisAndWait()

void BinaryView::UpdateAnalysisAndWait ( )

start the analysis running and dont return till it is complete

Analysis of BinaryViews does not occur automatically, the user must start analysis by calling either UpdateAnalysis or UpdateAnalysisAndWait. An analysis update **must** be run after changes are made which could change analysis results such as adding functions.

◆ UpdateAnalysis()

void BinaryView::UpdateAnalysis ( )

asynchronously starts the analysis running and returns immediately.

Analysis of BinaryViews does not occur automatically, the user must start analysis by calling either UpdateAnalysis or UpdateAnalysisAndWait. An analysis update **must** be run after changes are made which could change analysis results such as adding functions.

◆ AbortAnalysis()

void BinaryView::AbortAnalysis ( )

Abort the currently running analysis.

This method should be considered non-recoverable and generally only used when shutdown is imminent after stopping.

◆ DefineDataVariable()

void BinaryView::DefineDataVariable ( uint64_t addr,
const Confidence< Ref< Type > > & type )

Define a DataVariable at a given address with a set type.

Parameters
addrvirtual address to define the DataVariable at
typeType for the DataVariable

◆ DefineUserDataVariable()

void BinaryView::DefineUserDataVariable ( uint64_t addr,
const Confidence< Ref< Type > > & type )

Define a user DataVariable at a given address with a set type.

Parameters
addrvirtual address to define the DataVariable at
typeType for the DataVariable

◆ UndefineDataVariable()

void BinaryView::UndefineDataVariable ( uint64_t addr,
bool blacklist = true )

Undefine a DataVariable at a given address.

Parameters
addrvirtual address of the DataVariable
blacklistwhether to add the address to the data variable black list so that the auto analysis would not recreate the variable on re-analysis

◆ UndefineUserDataVariable()

void BinaryView::UndefineUserDataVariable ( uint64_t addr)

Undefine a user DataVariable at a given address.

Parameters
addrvirtual address of the DataVariable

◆ GetDataVariables()

map< uint64_t, DataVariable > BinaryView::GetDataVariables ( )

Get a map of DataVariables defined in the current BinaryView.

Returns
A map of addresses to the DataVariables defined at them

◆ GetDataVariableAtAddress()

bool BinaryView::GetDataVariableAtAddress ( uint64_t addr,
DataVariable & var )

Get a DataVariable at a given address.

Parameters
addrAddress for the DataVariable
varReference to a DataVariable class to write to
Returns
Whether a DataVariable was successfully retrieved

◆ GetAnalysisFunctionList()

vector< Ref< Function > > BinaryView::GetAnalysisFunctionList ( )

Get a list of functions within this BinaryView.

Returns
vector of Functions within the BinaryView

◆ HasFunctions()

bool BinaryView::HasFunctions ( ) const

Check whether the BinaryView has any functions defined.

Returns
Whether the BinaryView has any functions defined

◆ GetAnalysisFunction()

Ref< Function > BinaryView::GetAnalysisFunction ( Platform * platform,
uint64_t addr )

Gets a function object for the function starting at a virtual address.

Parameters
platformPlatform for the desired function
addrStarting virtual address for the function
Returns
the Function, if it exists

◆ GetRecentAnalysisFunctionForAddress()

Ref< Function > BinaryView::GetRecentAnalysisFunctionForAddress ( uint64_t addr)

Get the most recently used Function starting at a virtual address.

Parameters
addrStarting virtual address for the function
Returns
the Function, if it exists

◆ GetAnalysisFunctionsForAddress()

vector< Ref< Function > > BinaryView::GetAnalysisFunctionsForAddress ( uint64_t addr)

Get a list of functions defined at an address.

Parameters
addrStarting virtual address for the function
Returns
vector of functions

◆ GetAnalysisFunctionsContainingAddress()

vector< Ref< Function > > BinaryView::GetAnalysisFunctionsContainingAddress ( uint64_t addr)

Get a list of functions containing an address.

Parameters
addrAddress to check
Returns
vector of Functions

◆ GetAnalysisEntryPoint()

Ref< Function > BinaryView::GetAnalysisEntryPoint ( )

Get the function defined as the Analysis entry point for the view.

Returns
The analysis entry point function

◆ GetAllEntryFunctions()

vector< Ref< Function > > BinaryView::GetAllEntryFunctions ( )

Get all entry functions (including user-defined ones)

Returns
vector of Functions

◆ GetRecentBasicBlockForAddress()

Ref< BasicBlock > BinaryView::GetRecentBasicBlockForAddress ( uint64_t addr)

Get most recently used Basic Block containing a virtual address.

Parameters
addrAddress within the BasicBlock
Returns
The BasicBlock if it exists

◆ GetBasicBlocksForAddress()

vector< Ref< BasicBlock > > BinaryView::GetBasicBlocksForAddress ( uint64_t addr)

Get a list of Basic Blocks containing a virtual address.

Parameters
addrAddress to check
Returns
vector of basic blocks containing that address

◆ GetBasicBlocksStartingAtAddress()

vector< Ref< BasicBlock > > BinaryView::GetBasicBlocksStartingAtAddress ( uint64_t addr)

Get a list of basic blocks starting at a virtual address.

Parameters
addrAddress to check
Returns
vector of basic blocks starting at that address

◆ GetCodeReferences() [1/2]

vector< ReferenceSource > BinaryView::GetCodeReferences ( uint64_t addr)

Get a list of references made from code (instructions) to a virtual address.

Parameters
addrAddress to check
Returns
vector of ReferenceSources referencing the virtual address

◆ GetCodeReferences() [2/2]

vector< ReferenceSource > BinaryView::GetCodeReferences ( uint64_t addr,
uint64_t len )

Get a list of references from code (instructions) to a range of addresses.

Parameters
addrAddress to check
lenLength of query
Returns
vector of ReferenceSources referencing the virtual address range

◆ GetCodeReferencesFrom() [1/2]

vector< uint64_t > BinaryView::GetCodeReferencesFrom ( ReferenceSource src)

Get code references made by a particular "ReferenceSource".

A ReferenceSource contains a given function, architecture of that function, and an address within it.

Parameters
srcreference source
Returns
List of virtual addresses referenced by this source

◆ GetCodeReferencesFrom() [2/2]

vector< uint64_t > BinaryView::GetCodeReferencesFrom ( ReferenceSource src,
uint64_t len )

Get code references from a range of addresses.

A ReferenceSource contains a given function, architecture of that function, and an address within it.

The 2nd parameter is the length of the range. The start of the range is set in ReferenceSource::addr

Parameters
srcreference source
lenLength of query
Returns
List of virtual addresses referenced by this source

◆ GetDataReferences() [1/2]

vector< uint64_t > BinaryView::GetDataReferences ( uint64_t addr)

Get references made by data ('DataVariables') to a virtual address.

Parameters
addrAddress to check
Returns
vector of virtual addresses referencing the virtual address

◆ GetDataReferences() [2/2]

vector< uint64_t > BinaryView::GetDataReferences ( uint64_t addr,
uint64_t len )

Get references made by data ('DataVariables') in a given range, to a virtual address.

Parameters
addrAddress to check
lenLength of query
Returns
vector of virtual addresses referencing the virtual address range

◆ GetDataReferencesFrom() [1/2]

vector< uint64_t > BinaryView::GetDataReferencesFrom ( uint64_t addr)

Get references made by data ('DataVariables') located at a virtual address.

Parameters
srcreference source
Returns
List of virtual addresses referenced by this address

◆ GetDataReferencesFrom() [2/2]

vector< uint64_t > BinaryView::GetDataReferencesFrom ( uint64_t addr,
uint64_t len )

Get references made by data ('DataVariables') located in a range of virtual addresses.

Parameters
srcreference source
lenLength of query
Returns
List of virtual addresses referenced by this address

◆ AddUserDataReference()

void BinaryView::AddUserDataReference ( uint64_t fromAddr,
uint64_t toAddr )

Add a user Data Reference from a virtual address to another virtual address.

Parameters
fromAddrAddress referencing the toAddr value
toAddrvirtual address being referenced

◆ RemoveUserDataReference()

void BinaryView::RemoveUserDataReference ( uint64_t fromAddr,
uint64_t toAddr )

Remove a user Data Reference from a virtual address to another virtual address.

Parameters
fromAddrAddress referencing the toAddr value
toAddrvirtual address being referenced

◆ GetCodeReferencesForType()

vector< ReferenceSource > BinaryView::GetCodeReferencesForType ( const QualifiedName & type)

Get code references to a Type.

Parameters
typeQualifiedName for a Type
Returns
vector of ReferenceSources

◆ GetDataReferencesForType()

vector< uint64_t > BinaryView::GetDataReferencesForType ( const QualifiedName & type)

Get data references to a Type.

Parameters
typeQualifiedName for a Type
Returns
vector of virtual addresses referencing this Type

◆ GetTypeReferencesForType()

vector< TypeReferenceSource > BinaryView::GetTypeReferencesForType ( const QualifiedName & type)

Get Type references to a Type.

Parameters
typeQualifiedName for a Type
Returns
vector of TypeReferenceSources to this Type

◆ GetCodeReferencesForTypeField()

vector< TypeFieldReference > BinaryView::GetCodeReferencesForTypeField ( const QualifiedName & type,
uint64_t offset )

Returns a list of references to a specific type field.

Parameters
typeQualifiedName of the type
offsetOffset of the field, relative to the start of the type
Returns
vector of TypeFieldReferences

◆ GetDataReferencesForTypeField()

vector< uint64_t > BinaryView::GetDataReferencesForTypeField ( const QualifiedName & type,
uint64_t offset )

Returns a list of virtual addresses of data which references the type type .

Note, the returned addresses are the actual start of the queried type field. For example, suppose there is a DataVariable at 0x1000 that has type A , and type A contains type B at offset 0x10 . Then GetDataReferencesForTypeField(bQualifiedName, 0x8) will return 0x1018 for it.

Parameters
typeQualifiedName of the type
offsetOffset of the field, relative to the start of the type
Returns
List of DataVariable start addresses containing references to the type field

◆ GetDataReferencesFromForTypeField()

vector< uint64_t > BinaryView::GetDataReferencesFromForTypeField ( const QualifiedName & type,
uint64_t offset )

Returns a list of virtual addresses of data which are referenced from the type type .

Only data referenced by structures with the __data_var_refs attribute are included.

Parameters
typeQualifiedName of the type
offsetOffset of the field, relative to the start of the type
Returns
List of addresses referenced from the type field

◆ GetTypeReferencesForTypeField()

vector< TypeReferenceSource > BinaryView::GetTypeReferencesForTypeField ( const QualifiedName & type,
uint64_t offset )

Returns a list of type references to a specific type field.

Parameters
typeQualifiedName of the type
offsetOffset of the field, relative to the start of the type
Returns
vector of TypeReferenceSources

◆ GetCodeReferencesForTypeFrom() [1/2]

vector< TypeReferenceSource > BinaryView::GetCodeReferencesForTypeFrom ( ReferenceSource src)

Returns a list of types referenced by code at ReferenceSource src.

If no function is specified, references from all functions and containing the address will be returned. If no architecture is specified, the architecture of the function will be used.

Parameters
srcSource of the reference to check
Returns
vector of TypeReferenceSources

◆ GetCodeReferencesForTypeFrom() [2/2]

vector< TypeReferenceSource > BinaryView::GetCodeReferencesForTypeFrom ( ReferenceSource src,
uint64_t len )

Returns a list of types referenced by code at ReferenceSource src.

If no function is specified, references from all functions and containing the address will be returned. If no architecture is specified, the architecture of the function will be used.

Parameters
srcSource location to check
lenLength of the query
Returns
vector of TypeReferenceSources

◆ GetCodeReferencesForTypeFieldFrom() [1/2]

vector< TypeReferenceSource > BinaryView::GetCodeReferencesForTypeFieldFrom ( ReferenceSource src)

Returns a list of type fields referenced by code at ReferenceSource src.

If no function is specified, references from all functions and containing the address will be returned. If no architecture is specified, the architecture of the function will be used.

Parameters
srcSource location to check
Returns
vector of TypeReferenceSources

◆ GetCodeReferencesForTypeFieldFrom() [2/2]

vector< TypeReferenceSource > BinaryView::GetCodeReferencesForTypeFieldFrom ( ReferenceSource src,
uint64_t len )

Returns a list of type fields referenced by code at ReferenceSource src.

If no function is specified, references from all functions and containing the address will be returned. If no architecture is specified, the architecture of the function will be used.

Parameters
srcSource location to check
lenLength of the query
Returns
vector of TypeReferenceSources

◆ GetAllFieldsReferenced()

vector< uint64_t > BinaryView::GetAllFieldsReferenced ( const QualifiedName & type)

Returns a list of offsets in the QualifiedName specified by name, which are referenced by code.

Parameters
typeName of type to query for references
Returns
List of offsets

◆ GetAllSizesReferenced()

std::map< uint64_t, std::vector< size_t > > BinaryView::GetAllSizesReferenced ( const QualifiedName & type)

Returns a map from field offset to a list of sizes of the accesses to the specified type.

Parameters
typeName of type to query for references
Returns
A map from field offset to the size of the code accesses to it

◆ GetAllTypesReferenced()

std::map< uint64_t, std::vector< Confidence< Ref< Type > > > > BinaryView::GetAllTypesReferenced ( const QualifiedName & type)

Returns a map from field offset to a list of incoming types written to the specified type.

Parameters
typeName of type to query for references
Returns
A map from field offset to a list of incoming types written to it

◆ GetSizesReferenced()

std::vector< size_t > BinaryView::GetSizesReferenced ( const QualifiedName & type,
uint64_t offset )

Returns a list of types related to the type field access.

Parameters
typeName of type to query for references
offsetOffset of the field, relative to the start of the type
Returns
A list of sizes of accesses to the type

◆ GetTypesReferenced()

std::vector< Confidence< Ref< Type > > > BinaryView::GetTypesReferenced ( const QualifiedName & type,
uint64_t offset )

Returns a list of types referenced by a particular type field.

Parameters
typeName of type to query for references
offsetOffset of the field, relative to the start of the type
Returns
A list of types referenced

◆ GetOutgoingDirectTypeReferences()

unordered_set< QualifiedName > BinaryView::GetOutgoingDirectTypeReferences ( const QualifiedName & type)

◆ GetOutgoingRecursiveTypeReferences() [1/2]

unordered_set< QualifiedName > BinaryView::GetOutgoingRecursiveTypeReferences ( const QualifiedName & type)

◆ GetOutgoingRecursiveTypeReferences() [2/2]

std::unordered_set< QualifiedName > BinaryNinja::BinaryView::GetOutgoingRecursiveTypeReferences ( const std::unordered_set< QualifiedName > & types)

◆ GetIncomingDirectTypeReferences()

unordered_set< QualifiedName > BinaryView::GetIncomingDirectTypeReferences ( const QualifiedName & type)

◆ GetIncomingRecursiveTypeReferences() [1/2]

unordered_set< QualifiedName > BinaryView::GetIncomingRecursiveTypeReferences ( const QualifiedName & type)

◆ GetIncomingRecursiveTypeReferences() [2/2]

std::unordered_set< QualifiedName > BinaryNinja::BinaryView::GetIncomingRecursiveTypeReferences ( const std::unordered_set< QualifiedName > & types)

◆ CreateStructureBasedOnFieldAccesses()

Ref< Structure > BinaryNinja::BinaryView::CreateStructureBasedOnFieldAccesses ( const QualifiedName & type)

◆ GetCallees()

vector< uint64_t > BinaryView::GetCallees ( ReferenceSource addr)

Returns a list of virtual addresses called by the call site in the ReferenceSource.

If no function is specified, call sites from all functions and containing the address will be considered. If no architecture is specified, the architecture of the function will be used.

Parameters
addrReferenceSource to get callees to
Returns
A list of addresses referencing the ReferenceSource

◆ GetCallers()

vector< ReferenceSource > BinaryView::GetCallers ( uint64_t addr)

Returns a list of ReferenceSource objects (xrefs or cross-references) that call the provided virtual address.

In this case, tail calls, jumps, and ordinary calls are considered.

Parameters
addrAddress to check callers for
Returns
A list of ReferenceSources calling this address

◆ GetSymbolByAddress()

Ref< Symbol > BinaryView::GetSymbolByAddress ( uint64_t addr,
const NameSpace & nameSpace = NameSpace() )

Returns the Symbol at the provided virtual address.

Parameters
addrVirtual address to query for symbol
nameSpaceThe optional namespace of the symbols to retrieve
Returns
The symbol located at that address

◆ GetSymbolByRawName()

Ref< Symbol > BinaryView::GetSymbolByRawName ( const std::string & name,
const NameSpace & nameSpace = NameSpace() )

Retrieves a Symbol object for the given a raw (mangled) name.

Parameters
nameRaw (mangled) name of the symbol
nameSpaceThe optional namespace of the symbols to retrieve
Returns
The symbol with that raw name

◆ GetSymbolsByName()

vector< Ref< Symbol > > BinaryView::GetSymbolsByName ( const std::string & name,
const NameSpace & nameSpace = NameSpace() )

Retrieves a list of symbols with a given name.

Parameters
nameName to search for
nameSpaceThe optional namespace of the symbols to retrieve
Returns
List of symbols with that name

◆ GetSymbolsByRawName()

vector< Ref< Symbol > > BinaryView::GetSymbolsByRawName ( const std::string & name,
const NameSpace & nameSpace = NameSpace() )

Retrieves the list of all Symbol objects with a given raw name.

Parameters
nameRawName to search for
nameSpaceThe optional namespace of the symbols to retrieve
Returns
A list of symbols

◆ GetSymbols() [1/2]

vector< Ref< Symbol > > BinaryView::GetSymbols ( const NameSpace & nameSpace = NameSpace())

Retrieves the list of all Symbol objects.

Parameters
nameSpaceThe optional namespace of the symbols to retrieve
Returns
A list of symbols

◆ GetSymbols() [2/2]

vector< Ref< Symbol > > BinaryView::GetSymbols ( uint64_t start,
uint64_t len,
const NameSpace & nameSpace = NameSpace() )

Retrieves a list of symbols in a given range.

Parameters
startVirtual address start of the range
lenLength of the range
nameSpaceThe optional namespace of the symbols to retrieve
Returns
A list of symbols for a given type

◆ GetSymbolsOfType() [1/2]

vector< Ref< Symbol > > BinaryView::GetSymbolsOfType ( BNSymbolType type,
const NameSpace & nameSpace = NameSpace() )

Retrieves a list of all Symbol objects of the provided symbol type.

Parameters
typeThe symbol type
nameSpaceThe optional namespace of the symbols to retrieve
Returns
A list of symbols for a given type

◆ GetSymbolsOfType() [2/2]

vector< Ref< Symbol > > BinaryView::GetSymbolsOfType ( BNSymbolType type,
uint64_t start,
uint64_t len,
const NameSpace & nameSpace = NameSpace() )

Retrieves a list of all Symbol objects of the provided symbol type in the given range.

Parameters
typeThe symbol type
startVirtual address start of the range
lenLength of the range
nameSpaceThe optional namespace of the symbols to retrieve
Returns
A list of symbols for a given type in the given range

◆ GetVisibleSymbols()

std::vector< Ref< Symbol > > BinaryView::GetVisibleSymbols ( const NameSpace & nameSpace = NameSpace())

Get the list of visible symbols.

Parameters
nameSpaceThe optional namespace of the symbols to retrieve
Returns
A list of visible symbols

◆ DefineAutoSymbol()

void BinaryView::DefineAutoSymbol ( Ref< Symbol > sym)

Adds a symbol to the internal list of automatically discovered Symbol objects in a given namespace.

Warning
If multiple symbols for the same address are defined, only the most recent symbol will ever be used.
Parameters
symSymbol to define

◆ DefineAutoSymbolAndVariableOrFunction()

Ref< Symbol > BinaryView::DefineAutoSymbolAndVariableOrFunction ( Ref< Platform > platform,
Ref< Symbol > sym,
Ref< Type > type )

Defines an "Auto" symbol, and a Variable/Function alongside it.

Parameters
platformPlatform for the Type being defined
symSymbol being definedd
typeType being defined
Returns
The defined symbol

◆ UndefineAutoSymbol()

void BinaryView::UndefineAutoSymbol ( Ref< Symbol > sym)

Undefine an automatically defined symbol.

Parameters
symThe symbol to undefine

◆ DefineUserSymbol()

void BinaryView::DefineUserSymbol ( Ref< Symbol > sym)

Define a user symbol.

Parameters
symSymbol to define

◆ UndefineUserSymbol()

void BinaryView::UndefineUserSymbol ( Ref< Symbol > sym)

Undefine a user symbol.

Parameters
symSymbol to undefinee

◆ DefineImportedFunction()

void BinaryView::DefineImportedFunction ( Ref< Symbol > importAddressSym,
Ref< Function > func,
Ref< Type > type = nullptr )

Defines an imported Function func with a ImportedFunctionSymbol type.

Parameters
importAddressSymSymbol for the imported function
funcFunction to define as an imported function
typeOptional type for the function

◆ GetDebugInfo()

Ref< DebugInfo > BinaryView::GetDebugInfo ( )

The current debug info object for this binary view.

Returns
The current debug info object for this binary view

◆ ApplyDebugInfo()

void BinaryView::ApplyDebugInfo ( Ref< DebugInfo > newDebugInfo)

Sets the debug info and applies its contents to the current BinaryView.

Parameters
newDebugInfo

◆ SetDebugInfo()

void BinaryView::SetDebugInfo ( Ref< DebugInfo > newDebugInfo)

Sets the debug info for the current binary view.

Parameters
newDebugInfoSets the debug info for the current binary view

◆ IsApplyingDebugInfo()

bool BinaryView::IsApplyingDebugInfo ( ) const

Determine is a debug info object is currently being applied.

Returns
True if a debug info object is currently being applied

◆ BeginBulkModifySymbols()

void BinaryView::BeginBulkModifySymbols ( )

◆ EndBulkModifySymbols()

void BinaryView::EndBulkModifySymbols ( )

◆ AddTagType()

void BinaryView::AddTagType ( Ref< TagType > tagType)

Add a new TagType to this binaryview.

Parameters
tagTypeTagType to add

◆ RemoveTagType()

void BinaryView::RemoveTagType ( Ref< TagType > tagType)

Remove a TagType from this binaryview.

Parameters
tagTypeTagType to remove

◆ GetTagType() [1/2]

Ref< TagType > BinaryView::GetTagType ( const std::string & name)

Get a TagType by name.

Parameters
nameName of the TagType
Returns
The TagType, if it was found

◆ GetTagType() [2/2]

Ref< TagType > BinaryView::GetTagType ( const std::string & name,
TagType::Type type )

Get a TagType by name and TagType::Type.

Parameters
nameName of the TagType
typeType of the TagType
Returns
The TagType, if it was found

◆ GetTagTypeByName() [1/2]

Ref< TagType > BinaryView::GetTagTypeByName ( const std::string & name)

Get a TagType by name.

Parameters
nameName of the TagType
Returns
The TagType, if it was found

◆ GetTagTypeByName() [2/2]

Ref< TagType > BinaryView::GetTagTypeByName ( const std::string & name,
TagType::Type type )

Get a TagType by name and TagType::Type.

Parameters
nameName of the TagType
typeType of the TagType
Returns
The TagType, if it was found

◆ GetTagTypeById() [1/2]

Ref< TagType > BinaryView::GetTagTypeById ( const std::string & id)

Get a TagType by its ID.

Parameters
idID of the TagType
Returns
The TagType, if it was found

◆ GetTagTypeById() [2/2]

Ref< TagType > BinaryView::GetTagTypeById ( const std::string & id,
TagType::Type type )

Get a TagType by its ID and TagType::Type.

Parameters
idID of the TagType
typeType of the TagType
Returns
The TagType, if it was found

◆ GetTagTypes()

std::vector< Ref< TagType > > BinaryView::GetTagTypes ( )

Get the list of all defined TagTypes.

Returns
Get the list of all defined TagTypes

◆ AddTag()

void BinaryView::AddTag ( Ref< Tag > tag,
bool user = false )

Add a Tag.

Parameters
tagThe tag to add
userWhether this was added by a user or automatically by analysis

◆ RemoveTag()

void BinaryView::RemoveTag ( Ref< Tag > tag,
bool user = false )

Remove a tag.

Parameters
tagThe tag to remove
userWhether the tag being removed is a user tag

◆ GetTag()

Ref< Tag > BinaryView::GetTag ( const std::string & tagId)

Get a tag by its ID.

Parameters
tagIdthe tag ID
Returns
The tag, if it was found

◆ GetAllTagReferences()

std::vector< TagReference > BinaryView::GetAllTagReferences ( )

◆ GetAllAddressTagReferences()

std::vector< TagReference > BinaryView::GetAllAddressTagReferences ( )

◆ GetAllFunctionTagReferences()

std::vector< TagReference > BinaryView::GetAllFunctionTagReferences ( )

◆ GetAllTagReferencesOfType()

std::vector< TagReference > BinaryView::GetAllTagReferencesOfType ( Ref< TagType > tagType)

◆ GetTagReferencesOfType()

std::vector< TagReference > BinaryView::GetTagReferencesOfType ( Ref< TagType > tagType)

◆ GetTagReferencesOfTypeCount()

size_t BinaryView::GetTagReferencesOfTypeCount ( Ref< TagType > tagType)

◆ GetAllTagReferencesOfTypeCount()

size_t BinaryView::GetAllTagReferencesOfTypeCount ( Ref< TagType > tagType)

◆ GetAllTagReferenceTypeCounts()

std::map< Ref< TagType >, size_t > BinaryView::GetAllTagReferenceTypeCounts ( )

◆ GetDataTagReferences()

std::vector< TagReference > BinaryView::GetDataTagReferences ( )

◆ GetAutoDataTagReferences()

std::vector< TagReference > BinaryView::GetAutoDataTagReferences ( )

◆ GetUserDataTagReferences()

std::vector< TagReference > BinaryView::GetUserDataTagReferences ( )

◆ GetDataTags()

std::vector< Ref< Tag > > BinaryView::GetDataTags ( uint64_t addr)

◆ GetAutoDataTags()

std::vector< Ref< Tag > > BinaryView::GetAutoDataTags ( uint64_t addr)

◆ GetUserDataTags()

std::vector< Ref< Tag > > BinaryView::GetUserDataTags ( uint64_t addr)

◆ GetDataTagsOfType()

std::vector< Ref< Tag > > BinaryView::GetDataTagsOfType ( uint64_t addr,
Ref< TagType > tagType )

◆ GetAutoDataTagsOfType()

std::vector< Ref< Tag > > BinaryView::GetAutoDataTagsOfType ( uint64_t addr,
Ref< TagType > tagType )

◆ GetUserDataTagsOfType()

std::vector< Ref< Tag > > BinaryView::GetUserDataTagsOfType ( uint64_t addr,
Ref< TagType > tagType )

◆ GetDataTagsInRange()

std::vector< TagReference > BinaryView::GetDataTagsInRange ( uint64_t start,
uint64_t end )

◆ GetAutoDataTagsInRange()

std::vector< TagReference > BinaryView::GetAutoDataTagsInRange ( uint64_t start,
uint64_t end )

◆ GetUserDataTagsInRange()

std::vector< TagReference > BinaryView::GetUserDataTagsInRange ( uint64_t start,
uint64_t end )

◆ AddAutoDataTag()

void BinaryView::AddAutoDataTag ( uint64_t addr,
Ref< Tag > tag )

◆ RemoveAutoDataTag()

void BinaryView::RemoveAutoDataTag ( uint64_t addr,
Ref< Tag > tag )

◆ RemoveAutoDataTagsOfType()

void BinaryView::RemoveAutoDataTagsOfType ( uint64_t addr,
Ref< TagType > tagType )

◆ AddUserDataTag()

void BinaryView::AddUserDataTag ( uint64_t addr,
Ref< Tag > tag )

◆ RemoveUserDataTag()

void BinaryView::RemoveUserDataTag ( uint64_t addr,
Ref< Tag > tag )

◆ RemoveUserDataTagsOfType()

void BinaryView::RemoveUserDataTagsOfType ( uint64_t addr,
Ref< TagType > tagType )

◆ RemoveTagReference()

void BinaryView::RemoveTagReference ( const TagReference & ref)

◆ CreateAutoDataTag() [1/2]

Ref< Tag > BinaryView::CreateAutoDataTag ( uint64_t addr,
const std::string & tagTypeName,
const std::string & data,
bool unique = false )

◆ CreateUserDataTag() [1/2]

Ref< Tag > BinaryView::CreateUserDataTag ( uint64_t addr,
const std::string & tagTypeName,
const std::string & data,
bool unique = false )

◆ CreateAutoDataTag() [2/2]

Ref< Tag > BinaryView::CreateAutoDataTag ( uint64_t addr,
Ref< TagType > tagType,
const std::string & data,
bool unique = false )

◆ CreateUserDataTag() [2/2]

Ref< Tag > BinaryView::CreateUserDataTag ( uint64_t addr,
Ref< TagType > tagType,
const std::string & data,
bool unique = false )

◆ GetComponentByGuid()

std::optional< Ref< Component > > BinaryView::GetComponentByGuid ( std::string guid)

Lookup a component by its GUID.

Parameters
guidGUID of the component to look up
Returns
The component with that GUID

◆ GetComponentByPath()

std::optional< Ref< Component > > BinaryView::GetComponentByPath ( std::string path)

Lookup a component by its pathname.

Note
This is a convenience method, and for performance-sensitive lookups, GetComponentByGuid is very highly recommended.
See also
GetComponentByGuid, Component::GetGuid

All lookups are absolute from the root component, and are case-sensitive. Pathnames are delimited with "/"

Lookups are done using the display name of the component, which is liable to change when it or its siblings are moved around.

See also
Component::GetDisplayName
Parameters
pathPath of the desired component
Returns
The component at that path

◆ GetRootComponent()

Ref< Component > BinaryView::GetRootComponent ( )

Get the root component for the BinaryView (read-only)

This Component cannot be removed, and houses all unparented Components.

Returns
The Root Component

◆ CreateComponent() [1/3]

Ref< Component > BinaryView::CreateComponent ( )

Create a component.

This component will be added to the root component and initialized with the name "Component"

Returns
The created Component

◆ CreateComponent() [2/3]

Ref< Component > BinaryView::CreateComponent ( std::string parentGUID)

Create a component as a subcomponent of the component with a given Guid.

This component will be initialized with the name "Component"

Parameters
parentGUIDGuid of the component this component will be added to
Returns
The created Component

◆ CreateComponent() [3/3]

Ref< Component > BinaryView::CreateComponent ( Ref< Component > parent)

Create a component as a subcomponent of a given Component.

This component will be initialized with the name "Component"

Parameters
parentParent Component
Returns
The created Component

◆ CreateComponentWithName() [1/2]

Ref< Component > BinaryView::CreateComponentWithName ( std::string name,
std::string parentGUID = {} )

Create a component with a given name and optional parent.

Parameters
nameName to initialize the component with
parentGUIDOptional Guid of the component this component will be added to
Returns
The created Component

◆ CreateComponentWithName() [2/2]

Ref< Component > BinaryView::CreateComponentWithName ( std::string name,
Ref< Component > parent )

Create a component with a given name and parent.

Parameters
nameName to initialize the component with
parentGUIDGuid of the component this component will be added to
Returns
The created Component

◆ RemoveComponent() [1/2]

bool BinaryView::RemoveComponent ( Ref< Component > component)

Remove a component from the tree entirely.

This will also by nature remove all subcomponents.

Parameters
componentComponent to remove
Returns
Whether removal was successful

◆ RemoveComponent() [2/2]

bool BinaryView::RemoveComponent ( std::string guid)

Remove a component from the tree entirely.

This will also by nature remove all subcomponents.

Parameters
guidGuid of the Component to remove
Returns
Whether removal was successful

◆ GetFunctionParentComponents()

std::vector< Ref< Component > > BinaryView::GetFunctionParentComponents ( Ref< Function > function) const

◆ GetDataVariableParentComponents()

std::vector< Ref< Component > > BinaryView::GetDataVariableParentComponents ( DataVariable var) const

◆ CheckForStringAnnotationType()

std::optional< BNStringType > BinaryView::CheckForStringAnnotationType ( uint64_t addr,
std::string & value,
bool allowShortStrings,
bool allowLargeStrings,
size_t childWidth )

Heuristically determine if a string exists at the given address.

This API checks for the following settings: "analysis.unicode.utf8" - default true enables UTF-8 string detection "analysis.unicode.utf16" - default true enables UTF-16 string detection "analysis.unicode.utf32" - default true enables UTF-32 string detection "analysis.unicode.blocks" - selects the Unicode blocks to use for detection

Parameters
addrAddress to check
valueString value to populate
allowShortStringsWhether to allow short strings < 4 characters
allowLargeStringsIf false strings must be less than "rendering.strings.maxAnnotationLength" (default 32) If true strings must be less than "analysis.limits.maxStringLength" (default 16384)
childWidthWidth of the characters
Returns
The type of string annotation found

◆ CanAssemble()

bool BinaryView::CanAssemble ( Architecture * arch)

Check whether the given architecture supports assembling instructions.

Parameters
archArchitecture to check
Returns
Whether the given architecture supports assembling instructions

◆ IsNeverBranchPatchAvailable()

bool BinaryView::IsNeverBranchPatchAvailable ( Architecture * arch,
uint64_t addr )

Check whether the "Never Branch" patch is available for a given architecture at a given address.

Parameters
archArchitecture to check
addrAddress of the instruction to be patched
Returns
Whether the "Never Branch" patch is available

◆ IsAlwaysBranchPatchAvailable()

bool BinaryView::IsAlwaysBranchPatchAvailable ( Architecture * arch,
uint64_t addr )

Check whether the "Always Branch" patch is available for a given architecture at a given address.

Parameters
archArchitecture to check
addrAddress of the instruction to be patched
Returns
Whether the "Always Branch" patch is available

◆ IsInvertBranchPatchAvailable()

bool BinaryView::IsInvertBranchPatchAvailable ( Architecture * arch,
uint64_t addr )

Check whether the "Invert Branch" patch is available for a given architecture at a given address.

Parameters
archArchitecture to check
addrAddress of the instruction to be patched
Returns
Whether the "Invert Branch" patch is available

◆ IsSkipAndReturnZeroPatchAvailable()

bool BinaryView::IsSkipAndReturnZeroPatchAvailable ( Architecture * arch,
uint64_t addr )

Check whether the "Skip and Return Zero" patch is available for a given architecture at a given address.

Parameters
archArchitecture to check
addrAddress of the instruction to be patched
Returns
Whether the "Skip and Return Zero" patch is available

◆ IsSkipAndReturnValuePatchAvailable()

bool BinaryView::IsSkipAndReturnValuePatchAvailable ( Architecture * arch,
uint64_t addr )

Check whether the "Skip and Return Value" patch is available for a given architecture at a given address.

Parameters
archArchitecture to check
addrAddress of the instruction to be patched
Returns
Whether the "Skip and Return Value" patch is available

◆ ConvertToNop()

bool BinaryView::ConvertToNop ( Architecture * arch,
uint64_t addr )

Convert the instruction at the given address to a nop.

Parameters
archArchitecture of the instruction to convert
addrAddress of the instruction to be patched
Returns
Whether the patch was successful

◆ AlwaysBranch()

bool BinaryView::AlwaysBranch ( Architecture * arch,
uint64_t addr )

Convert the conditional branch at the given address to always branch.

Parameters
archArchitecture of the instruction to convert
addrAddress of the instruction to be patched
Returns
Whether the patch was successful

◆ InvertBranch()

bool BinaryView::InvertBranch ( Architecture * arch,
uint64_t addr )

Convert the conditional branch at the given address to branch under inverted conditions.

Parameters
archArchitecture of the instruction to convert
addrAddress of the instruction to be patched
Returns
Whether the patch was successful

◆ SkipAndReturnValue()

bool BinaryView::SkipAndReturnValue ( Architecture * arch,
uint64_t addr,
uint64_t value )

Convert the given instruction to skip the rest of the function and return 0.

Parameters
archArchitecture of the instruction to convert
addrAddress of the instruction to be patched
valueValue to return
Returns
Whether the patch was successful

◆ GetInstructionLength()

size_t BinaryView::GetInstructionLength ( Architecture * arch,
uint64_t addr )

Get the length of the instruction at a given address.

Parameters
archArchitecture of the instruction
addrAddress of the start of the instruction
Returns
The length of the instruction

◆ GetStringAtAddress()

bool BinaryView::GetStringAtAddress ( uint64_t addr,
BNStringReference & strRef )

Get the string at an address.

Parameters
[in]addrAddress of the string
[out]strRefReference to a StringReference the string reference will be writen to.
Returns
Whether a string was at th given address

◆ GetStrings() [1/2]

vector< BNStringReference > BinaryView::GetStrings ( )

Get the list of strings located within the view.

Returns
The list of strings

◆ GetStrings() [2/2]

vector< BNStringReference > BinaryView::GetStrings ( uint64_t start,
uint64_t len )

Get the list of strings located within a range.

Parameters
startStarting virtual address of the range
lenLength of the range
Returns
The list of strings

◆ AddAnalysisCompletionEvent()

Ref< AnalysisCompletionEvent > BinaryView::AddAnalysisCompletionEvent ( const std::function< void()> & callback)

Sets up a call back function to be called when analysis has been completed.

This is helpful when using `UpdateAnalysis` which does not wait for analysis completion before returning.

The callee of this function is not responsible for maintaining the lifetime of the returned AnalysisCompletionEvent object

Parameters
callbackA function to be called with no parameters when analysis has completed.
Returns
An initialized AnalysisCompletionEvent object.

◆ GetAnalysisInfo()

AnalysisInfo BinaryView::GetAnalysisInfo ( )

◆ GetAnalysisProgress()

BNAnalysisProgress BinaryView::GetAnalysisProgress ( )

◆ GetBackgroundAnalysisTask()

Ref< BackgroundTask > BinaryView::GetBackgroundAnalysisTask ( )

◆ GetNextFunctionStartAfterAddress()

uint64_t BinaryView::GetNextFunctionStartAfterAddress ( uint64_t addr)

Returns the virtual address of the Function that occurs after the virtual address `addr`.

Parameters
addrAddress to start searching
Returns
Next function start

◆ GetNextBasicBlockStartAfterAddress()

uint64_t BinaryView::GetNextBasicBlockStartAfterAddress ( uint64_t addr)

Returns the virtual address of the BasicBlock that occurs after the virtual address `addr`.

Parameters
addrAddress to start searching
Returns
Next basic block start

◆ GetNextDataAfterAddress()

uint64_t BinaryView::GetNextDataAfterAddress ( uint64_t addr)

Retrieves the virtual address of the next non-code byte.

Parameters
addrAddress to start searching
Returns
address of the next non-code byte

◆ GetNextDataVariableStartAfterAddress()

uint64_t BinaryView::GetNextDataVariableStartAfterAddress ( uint64_t addr)

Retrieves the address of the next DataVariable.

Parameters
addrAddress to start searching
Returns
address of the next DataVariable

◆ GetPreviousFunctionStartBeforeAddress()

uint64_t BinaryView::GetPreviousFunctionStartBeforeAddress ( uint64_t addr)

Returns the virtual address of the Function that occurs prior to the virtual address provided.

Parameters
addrAddress to start searching
Returns
the virtual address of the previous Function

◆ GetPreviousBasicBlockStartBeforeAddress()

uint64_t BinaryView::GetPreviousBasicBlockStartBeforeAddress ( uint64_t addr)

Returns the virtual address of the Basic Block that occurs prior to the virtual address provided.

Parameters
addrAddress to start searching
Returns
The virtual address of the previous Basic Block

◆ GetPreviousBasicBlockEndBeforeAddress()

uint64_t BinaryView::GetPreviousBasicBlockEndBeforeAddress ( uint64_t addr)

Returns the ending virtual address of the Basic Block that occurs prior to the virtual address provided.

Parameters
addrAddress to start searching
Returns
The ending virtual address of the previous Basic Block

◆ GetPreviousDataBeforeAddress()

uint64_t BinaryView::GetPreviousDataBeforeAddress ( uint64_t addr)

Returns the virtual address of the previous data (non-code) byte.

Parameters
addrAddress to start searching
Returns
The virtual address of the previous non-code byte

◆ GetPreviousDataVariableStartBeforeAddress()

uint64_t BinaryView::GetPreviousDataVariableStartBeforeAddress ( uint64_t addr)

Returns the virtual address of the previous DataVariable.

Parameters
addrAddress to start searching
Returns
The virtual address of the previous DataVariable

◆ ParsePossibleValueSet()

bool BinaryView::ParsePossibleValueSet ( const std::string & value,
BNRegisterValueType state,
PossibleValueSet & result,
uint64_t here,
std::string & errors )

◆ ParseTypeString() [1/2]

bool BinaryNinja::BinaryView::ParseTypeString ( const std::string & text,
QualifiedNameAndType & result,
std::string & errors,
const std::set< QualifiedName > & typesAllowRedefinition = {},
bool importDependencies = true )

Parse a single type and name from a string containing their definition.

Parameters
[in]textText containing the type definition
[out]resultReference into which the resulting type and name will be written
[out]errorsReference to a list into which any parse errors will be written
[in]typesAllowRedefinitionList of types whose names are allowed to be overwritten (legacy cruft?)
[in]importDependenciesIf Type Library / Type Archive types should be imported during parsing
Returns
Whether parsing was successful

◆ ParseTypeString() [2/2]

bool BinaryNinja::BinaryView::ParseTypeString ( const std::string & text,
std::map< QualifiedName, Ref< Type > > & types,
std::map< QualifiedName, Ref< Type > > & variables,
std::map< QualifiedName, Ref< Type > > & functions,
std::string & errors,
const std::set< QualifiedName > & typesAllowRedefinition = {},
bool importDependencies = true )

Parse an entire block of source into types, variables, and functions.

Parameters
[in]textSource code to parse
[out]typesReference to a map of QualifiedNames and Types the parsed types will be writen to
[out]variablesReference to a list of QualifiedNames and Types the parsed variables will be writen to
[out]functionsReference to a list of QualifiedNames and Types the parsed functions will be writen to
[out]errorsReference to a list into which any parse errors will be written
[in]typesAllowRedefinitionList of types whose names are allowed to be overwritten (legacy cruft?)
[in]importDependenciesIf Type Library / Type Archive types should be imported during parsing
Returns
Whether parsing was successful

◆ ParseTypesFromSource()

bool BinaryView::ParseTypesFromSource ( const std::string & text,
const std::vector< std::string > & options,
const std::vector< std::string > & includeDirs,
TypeParserResult & result,
std::string & errors,
const std::set< QualifiedName > & typesAllowRedefinition = {},
bool importDependencies = true )

Parse an entire block of source into a structure containing types, variables, and functions.

Parameters
[in]textSource code to parse
[out]resultReference to a TypeParserResult structure into which types, variables, and functions will be written
[out]errorsReference to a list into which any parse errors will be written
[in]typesAllowRedefinitionList of types whose names are allowed to be overwritten (legacy cruft?)
[in]importDependenciesIf Type Library / Type Archive types should be imported during parsing
Returns
Whether parsing was successful

◆ GetTypeContainer()

TypeContainer BinaryView::GetTypeContainer ( )

Type Container for all types (user and auto) in the BinaryView.

Any auto types modified through the Type Container will be converted into user types.

Returns
Full view Type Container

◆ GetAutoTypeContainer()

TypeContainer BinaryView::GetAutoTypeContainer ( )

Type Container for ONLY auto types in the BinaryView.

Any changes to types will NOT promote auto types to user types.

Returns
Auto types only Type Container

◆ GetUserTypeContainer()

TypeContainer BinaryView::GetUserTypeContainer ( )

Type Container for ONLY user types in the BinaryView.

Returns
User types only Type Container

◆ GetTypes()

map< QualifiedName, Ref< Type > > BinaryView::GetTypes ( )

◆ GetDependencySortedTypes()

vector< pair< QualifiedName, Ref< Type > > > BinaryView::GetDependencySortedTypes ( )

List of all types, sorted such that types are after all types on which they depend.

Order is guaranteed for any collection of types with no cycles. If you have cycles in type dependencies, order for types in a cycle is not guaranteed.

Note
Dependency order is based on named type references for all non-structure types, i.e. ``struct Foo m_foo`` will induce a dependency, whereas ``struct Foo* m_pFoo`` will not.
Returns
Sorted types as defined above

◆ GetTypeNames()

vector< QualifiedName > BinaryView::GetTypeNames ( const std::string & matching = "")

◆ GetTypeByName()

Ref< Type > BinaryView::GetTypeByName ( const QualifiedName & name)

◆ GetTypeByRef()

Ref< Type > BinaryView::GetTypeByRef ( Ref< NamedTypeReference > name)

◆ GetTypeById()

Ref< Type > BinaryView::GetTypeById ( const std::string & id)

◆ GetTypeId()

string BinaryView::GetTypeId ( const QualifiedName & name)

◆ GetTypeNameById()

QualifiedName BinaryView::GetTypeNameById ( const std::string & id)

◆ IsTypeAutoDefined()

bool BinaryView::IsTypeAutoDefined ( const QualifiedName & name)

◆ DefineType()

QualifiedName BinaryView::DefineType ( const std::string & id,
const QualifiedName & defaultName,
Ref< Type > type )

◆ DefineTypes()

std::unordered_map< std::string, QualifiedName > BinaryView::DefineTypes ( const std::vector< std::pair< std::string, QualifiedNameAndType > > & types,
std::function< bool(size_t, size_t)> progress = {} )

◆ DefineUserType()

void BinaryView::DefineUserType ( const QualifiedName & name,
Ref< Type > type )

◆ DefineUserTypes() [1/2]

void BinaryNinja::BinaryView::DefineUserTypes ( const std::vector< QualifiedNameAndType > & types,
std::function< bool(size_t, size_t)> progress = {} )

◆ DefineUserTypes() [2/2]

void BinaryNinja::BinaryView::DefineUserTypes ( const std::vector< ParsedType > & types,
std::function< bool(size_t, size_t)> progress = {} )

◆ UndefineType()

void BinaryView::UndefineType ( const std::string & id)

◆ UndefineUserType()

void BinaryView::UndefineUserType ( const QualifiedName & name)

◆ RenameType()

void BinaryView::RenameType ( const QualifiedName & oldName,
const QualifiedName & newName )

◆ RegisterPlatformTypes()

void BinaryView::RegisterPlatformTypes ( Platform * platform)

◆ LookupImportedTypePlatform()

std::optional< std::pair< Ref< Platform >, QualifiedName > > BinaryView::LookupImportedTypePlatform ( const QualifiedName & name)

Gives you details of which platform and name was imported to result in the given type name.

Parameters
nameName of type in the binary view
Returns
A pair with the platform and the name of the type in the platform, or std::nullopt if it was not imported

◆ AddTypeLibrary()

void BinaryView::AddTypeLibrary ( TypeLibrary * lib)

Make the contents of a type library available for type/import resolution.

Parameters
liblibrary to register with the view

◆ GetTypeLibrary()

Ref< TypeLibrary > BinaryView::GetTypeLibrary ( const std::string & name)

Get the type library with the given name.

Parameters
nameLibrary name to lookup
Returns
The Type Library object, or nullptr if one has not been added with this name

◆ GetTypeLibraries()

std::vector< Ref< TypeLibrary > > BinaryView::GetTypeLibraries ( )

Get the list of imported type libraries.

Returns
All imported type libraries

◆ ImportTypeLibraryType()

Ref< Type > BinaryView::ImportTypeLibraryType ( Ref< TypeLibrary > & lib,
const QualifiedName & name )

Recursively imports a type from the specified type library, or, if no library was explicitly provided, the first type library associated with the current `BinaryView` that provides the name requested.

This may have the impact of loading other type libraries as dependencies on other type libraries are lazily resolved when references to types provided by them are first encountered.

Note that the name actually inserted into the view may not match the name as it exists in the type library in the event of a name conflict. To aid in this, the `Type` object returned is a `NamedTypeReference` to the deconflicted name used.

Parameters
lib
name
Returns
A `NamedTypeReference` to the type, taking into account any renaming performed

◆ ImportTypeLibraryObject()

Ref< Type > BinaryView::ImportTypeLibraryObject ( Ref< TypeLibrary > & lib,
const QualifiedName & name )

Recursively imports an object from the specified type library, or, if no library was explicitly provided, the first type library associated with the current `BinaryView` that provides the name requested.

This may have the impact of loading other type libraries as dependencies on other type libraries are lazily resolved when references to types provided by them are first encountered.

.. note:: If you are implementing a custom BinaryView and use this method to import object types, you should then call ``RecordImportedObjectLibrary`` with the details of where the object is located.

Parameters
lib
name
Returns
The object type, with any interior `NamedTypeReferences` renamed as necessary to be appropriate for the current view

◆ ImportTypeLibraryTypeByGuid()

Ref< Type > BinaryView::ImportTypeLibraryTypeByGuid ( const std::string & guid)

Recursively imports a type by guid from the current BinaryView's set of type libraries.

This API is dependent on the set of TypeLibraries for the current BinaryView's Platform, having appropriate metadata to resolve the type by guid. The key "type_guids" must contain a map(string(guid), string(type_name)) or map(string(guid), tuple(sting(type_name), string(library_name))).

Parameters
guid
Returns
The type, or nullptr if it was not found

◆ GetTypeNameByGuid()

std::optional< QualifiedName > BinaryView::GetTypeNameByGuid ( const std::string & guid)

◆ ExportTypeToTypeLibrary()

void BinaryView::ExportTypeToTypeLibrary ( TypeLibrary * lib,
const QualifiedName & name,
Type * type )

Recursively exports ``type`` into ``lib`` as a type with name ``name``.

As other referenced types are encountered, they are either copied into the destination type library or else the type library that provided the referenced type is added as a dependency for the destination library.

Parameters
lib
name
type

◆ ExportObjectToTypeLibrary()

void BinaryView::ExportObjectToTypeLibrary ( TypeLibrary * lib,
const QualifiedName & name,
Type * type )

Recursively exports ``type`` into ``lib`` as an object with name ``name``.

As other referenced types are encountered, they are either copied into the destination type library or else the type library that provided the referenced type is added as a dependency for the destination library.

Parameters
lib
name
type

◆ RecordImportedObjectLibrary()

void BinaryView::RecordImportedObjectLibrary ( Platform * tgtPlatform,
uint64_t tgtAddr,
TypeLibrary * lib,
const QualifiedName & name )

Should be called by custom `BinaryView` implementations when they have successfully imported an object from a type library (eg a symbol's type).

Values recorded with this function will then be queryable via ``LookupImportedObjectLibrary``.

Parameters
tgtPlatformPlatform of symbol at import site
tgtAddrAddress of symbol at import site
libType Library containing the imported type
nameName of the object in the type library

◆ LookupImportedObjectLibrary()

std::optional< std::pair< Ref< TypeLibrary >, QualifiedName > > BinaryView::LookupImportedObjectLibrary ( Platform * tgtPlatform,
uint64_t tgtAddr )

Gives you details of which type library and name was used to determine the type of a symbol at a given address.

Parameters
tgtPlatformPlatform of symbol at import site
tgtAddrAddress of symbol at import site
Returns
A pair with the library and name used, or std::nullopt if it was not imported

◆ LookupImportedTypeLibrary()

std::optional< std::pair< Ref< TypeLibrary >, QualifiedName > > BinaryView::LookupImportedTypeLibrary ( const QualifiedName & name)

Gives you details of which type library and name was imported to result in the given type name.

Parameters
nameName of type in the binary view
Returns
A pair with the library and the name of the type in the library, or std::nullopt if it was not imported

◆ AttachTypeArchive()

Ref< TypeArchive > BinaryView::AttachTypeArchive ( const std::string & id,
const std::string & path )

Attach a given type archive to the binary view.

No types will actually be associated by calling this, just they will become available.

Parameters
idExpected id of archive
pathPath to archive

◆ DetachTypeArchive()

void BinaryView::DetachTypeArchive ( const std::string & id)

Detach from a type archive, breaking all associations to types with the archive.

Parameters
idId of archive to detach

◆ GetTypeArchive()

Ref< TypeArchive > BinaryView::GetTypeArchive ( const std::string & id) const

Look up a connected archive by its id.

Parameters
idId of archive
Returns
Archive, if one exists with that id. Otherwise nullptr

◆ GetTypeArchives()

std::unordered_map< std::string, std::string > BinaryView::GetTypeArchives ( ) const

Get all attached type archives.

Returns
All attached archive (id, path) pairs

◆ GetTypeArchivePath()

std::optional< std::string > BinaryView::GetTypeArchivePath ( const std::string & id) const

Look up the path for an attached (but not necessarily connected) type archive by its id.

Parameters
idId of archive
Returns
Archive path, if it is attached. Otherwise nullopt.

◆ GetTypeArchiveTypeNames()

std::unordered_map< QualifiedName, std::map< std::string, std::string > > BinaryView::GetTypeArchiveTypeNames ( ) const

Get a list of all available type names in all connected archives, and their archive/type id pair.

Returns
All type names in a map

◆ GetAssociatedTypeArchiveTypes()

std::unordered_map< std::string, std::pair< std::string, std::string > > BinaryView::GetAssociatedTypeArchiveTypes ( ) const

Get a list of all types in the analysis that are associated with a specific type archive.

Returns
Map of all analysis types to their corresponding archive id

◆ GetAssociatedTypesFromArchive()

std::unordered_map< std::string, std::string > BinaryView::GetAssociatedTypesFromArchive ( const std::string & archive) const

Get a list of all types in the analysis that are associated with a specific type archive.

Returns
Map of all analysis types to their corresponding archive id

◆ GetAssociatedTypeArchiveTypeTarget()

std::optional< std::pair< std::string, std::string > > BinaryView::GetAssociatedTypeArchiveTypeTarget ( const std::string & id) const

Determine the target archive / type id of a given analysis type.

Parameters
idId of analysis type
Returns
Pair of archive id and archive type id, if this type is associated. std::nullopt otherwise.

◆ GetAssociatedTypeArchiveTypeSource()

std::optional< std::string > BinaryView::GetAssociatedTypeArchiveTypeSource ( const std::string & archiveId,
const std::string & archiveTypeId ) const

Determine the local source type for a given archive type.

Parameters
archiveIdId of target archive
archiveTypeIdId of target archive type
Returns
Id of source analysis type, if this type is associated. std::nullopt otherwise.

◆ GetTypeArchiveSyncStatus()

BNSyncStatus BinaryView::GetTypeArchiveSyncStatus ( const std::string & typeId) const

Get the current status of any changes pending in a given type.

Parameters
idId of type in analysis
Returns
Status of type

◆ DisassociateTypeArchiveType()

bool BinaryView::DisassociateTypeArchiveType ( const std::string & typeId)

Disassociate an associated type, so that it will no longer receive updates from its connected type archive.

Parameters
typeIdId of type in analysis
Returns
True if successful

◆ PullTypeArchiveTypes()

bool BinaryView::PullTypeArchiveTypes ( const std::string & archiveId,
const std::unordered_set< std::string > & archiveTypeIds,
std::unordered_map< std::string, std::string > & updatedTypes )

Pull a collection of types from a type archive, associating with them and any dependencies.

Parameters
[in]archiveIdId of archive
[in]archiveTypeIdsIds of desired types
[out]updatedTypesList of types that were updated
Returns
True if successful

◆ PushTypeArchiveTypes()

bool BinaryView::PushTypeArchiveTypes ( const std::string & archiveId,
const std::unordered_set< std::string > & typeIds,
std::unordered_map< std::string, std::string > & updatedTypes )

Push a collection of types, and all their dependencies, into a type archive.

Parameters
[in]archiveIdId of archive
[in]typeIdsList of ids of types in analysis
[out]updatedTypesList of types that were updated
Returns
True if successful

◆ FindNextData() [1/2]

bool BinaryView::FindNextData ( uint64_t start,
const DataBuffer & data,
uint64_t & result,
BNFindFlag flags = FindCaseSensitive )

◆ FindNextText() [1/2]

bool BinaryView::FindNextText ( uint64_t start,
const std::string & data,
uint64_t & result,
Ref< DisassemblySettings > settings,
BNFindFlag flags = FindCaseSensitive,
const FunctionViewType & viewType = NormalFunctionGraph )

◆ FindNextConstant() [1/2]

bool BinaryView::FindNextConstant ( uint64_t start,
uint64_t constant,
uint64_t & result,
Ref< DisassemblySettings > settings,
const FunctionViewType & viewType = NormalFunctionGraph )

◆ FindNextData() [2/2]

bool BinaryView::FindNextData ( uint64_t start,
uint64_t end,
const DataBuffer & data,
uint64_t & addr,
BNFindFlag flags,
const std::function< bool(size_t current, size_t total)> & progress )

◆ FindNextText() [2/2]

bool BinaryView::FindNextText ( uint64_t start,
uint64_t end,
const std::string & data,
uint64_t & addr,
Ref< DisassemblySettings > settings,
BNFindFlag flags,
const FunctionViewType & viewType,
const std::function< bool(size_t current, size_t total)> & progress )

◆ FindNextConstant() [2/2]

bool BinaryView::FindNextConstant ( uint64_t start,
uint64_t end,
uint64_t constant,
uint64_t & addr,
Ref< DisassemblySettings > settings,
const FunctionViewType & viewType,
const std::function< bool(size_t current, size_t total)> & progress )

◆ FindAllData()

bool BinaryView::FindAllData ( uint64_t start,
uint64_t end,
const DataBuffer & data,
BNFindFlag flags,
const std::function< bool(size_t current, size_t total)> & progress,
const std::function< bool(uint64_t addr, const DataBuffer &match)> & matchCallback )

◆ FindAllText()

bool BinaryView::FindAllText ( uint64_t start,
uint64_t end,
const std::string & data,
Ref< DisassemblySettings > settings,
BNFindFlag flags,
const FunctionViewType & viewType,
const std::function< bool(size_t current, size_t total)> & progress,
const std::function< bool(uint64_t addr, const std::string &match, const LinearDisassemblyLine &line)> & matchCallback )

◆ FindAllConstant()

bool BinaryView::FindAllConstant ( uint64_t start,
uint64_t end,
uint64_t constant,
Ref< DisassemblySettings > settings,
const FunctionViewType & viewType,
const std::function< bool(size_t current, size_t total)> & progress,
const std::function< bool(uint64_t addr, const LinearDisassemblyLine &line)> & matchCallback )

◆ Search()

bool BinaryView::Search ( const std::string & query,
const std::function< bool(uint64_t offset, const DataBuffer &buffer)> & otherCallback )

◆ Reanalyze()

void BinaryView::Reanalyze ( )

◆ GetWorkflow()

Ref< Workflow > BinaryView::GetWorkflow ( )

◆ ShowPlainTextReport()

void BinaryView::ShowPlainTextReport ( const std::string & title,
const std::string & contents )

Displays contents to the user in the UI or on the command-line.

Note
This API functions differently on the command-line vs the UI. In the UI, it will be rendered in a new tab. From the command line, a simple text prompt is used.
Parameters
titleTitle for the report
contentsContents of the report

◆ ShowMarkdownReport()

void BinaryView::ShowMarkdownReport ( const std::string & title,
const std::string & contents,
const std::string & plainText )

Displays markdown contents to the user in the UI or on the command-line.

Note
This API functions differently on the command-line vs the UI. In the UI, it will be rendered in a new tab. From the command line, a simple text prompt is used.
Parameters
titleTitle for the report
contentsMarkdown contents of the report
plainTextPlaintext contents of the report (used on the command line)

◆ ShowHTMLReport()

void BinaryView::ShowHTMLReport ( const std::string & title,
const std::string & contents,
const std::string & plainText )

Displays HTML contents to the user in the UI or on the command-line.

Note
This API functions differently on the command-line vs the UI. In the UI, it will be rendered in a new tab. From the command line, a simple text prompt is used.
Parameters
titleTitle for the report
contentsHTML contents of the report
plainTextPlaintext contents of the report (used on the command line)

◆ ShowGraphReport()

void BinaryView::ShowGraphReport ( const std::string & title,
FlowGraph * graph )

Displays a flow graph in UI applications and nothing in command-line applications.

Note
This API has no effect outside of the UI
Parameters
titleTitle for the report
graphFlowGraph object to be rendered.

◆ GetAddressInput() [1/2]

bool BinaryNinja::BinaryView::GetAddressInput ( uint64_t & result,
const std::string & prompt,
const std::string & title )

Prompts the user to input an unsigned integer with the given prompt and title.

Parameters
[out]resultReference to the uint64_t the result will be copied to
[in]promptPrompt for the input
[in]titleTitle for the input popup when used in UI
Returns
Whether an integer was successfully received

◆ GetAddressInput() [2/2]

bool BinaryNinja::BinaryView::GetAddressInput ( uint64_t & result,
const std::string & prompt,
const std::string & title,
uint64_t currentAddress )

Prompts the user to input an unsigned integer with the given prompt and title.

Parameters
[out]resultReference to the uint64_t the result will be copied to
[in]promptPrompt for the input
[in]titleTitle for the input popup when used in UI
[in]currentAddressAddress to use for relative inputs
Returns
Whether an integer was successfully received

◆ GetMemoryMap()

MemoryMap * BinaryNinja::BinaryView::GetMemoryMap ( )
inline

A mock object that is a placeholder during development of this feature.

Returns
MemoryMap object

◆ BeginBulkAddSegments()

void BinaryView::BeginBulkAddSegments ( )

Begin a bulk segment addition operation.

This function prepares the `BinaryView` for bulk addition of both auto and user-defined segments. During the bulk operation, segments can be added using `AddAutoSegment`, `AddAutoSegments`, `AddUserSegment`, or `AddUserSegments` without immediately triggering the MemoryMap update process. The queued segments will not take effect until `EndBulkAddSegments` is called.

See also
EndBulkAddSegments
CancelBulkAddSegments

◆ EndBulkAddSegments()

void BinaryView::EndBulkAddSegments ( )

Finalize and apply all queued segments (auto and user) added during a bulk segment addition operation.

This function commits all segments that were queued since the last call to `BeginBulkAddSegments`. The MemoryMap update process is executed at this point, applying all changes in one batch for improved performance.

Note
This function must be called after `BeginBulkAddSegments` to apply the queued segments.
See also
BeginBulkAddSegments
CancelBulkAddSegments

◆ CancelBulkAddSegments()

void BinaryView::CancelBulkAddSegments ( )

Cancel a bulk segment addition operation.

This function discards all auto and user segments that were queued since the last call to `BeginBulkAddSegments` without applying them. It allows you to abandon the changes in case they are no longer needed.

Note
If no bulk operation is in progress, calling this function has no effect.
See also
BeginBulkAddSegments
EndBulkAddSegments

◆ AddAutoSegment()

void BinaryView::AddAutoSegment ( uint64_t start,
uint64_t length,
uint64_t dataOffset,
uint64_t dataLength,
uint32_t flags )

Add an analysis segment that specifies how data from the raw file is mapped into a virtual address space.

Note that the segment added may have different size attributes than requested

Parameters
startStarting virtual address
lengthLength within the virtual address space
dataOffsetData offset in the raw file
dataLengthLength of the data to map from the raw file
flagsSegment r/w/x flags

◆ AddAutoSegments()

void BinaryView::AddAutoSegments ( const std::vector< BNSegmentInfo > & segments)

Add analysis segments that specify how data from the raw file is mapped into a virtual address space.

Parameters
segmentsSegments to add to the BinaryView

Note that the segments added may have different size attributes than requested

◆ RemoveAutoSegment()

void BinaryView::RemoveAutoSegment ( uint64_t start,
uint64_t length )

Removes an automatically generated segment from the current segment mapping.

Warning
This action is not persistent across saving of a BNDB and must be re-applied each time a BNDB is loaded.
Parameters
startVirtual address of the start of the segment
lengthLength of the segment

◆ AddUserSegment()

void BinaryView::AddUserSegment ( uint64_t start,
uint64_t length,
uint64_t dataOffset,
uint64_t dataLength,
uint32_t flags )

Creates a user-defined segment that specifies how data from the raw file is mapped into a virtual address space.

Parameters
startStarting virtual address
lengthLength within the virtual address space
dataOffsetData offset in the raw file
dataLengthLength of the data to map from the raw file
flagsSegment r/w/x flags

◆ AddUserSegments()

void BinaryView::AddUserSegments ( const std::vector< BNSegmentInfo > & segments)

Creates user-defined segments that specify how data from the raw file is mapped into a virtual address space.

Parameters
segmentsSegments to add to the BinaryView

◆ RemoveUserSegment()

void BinaryView::RemoveUserSegment ( uint64_t start,
uint64_t length )

Removes a user-defined segment from th current segment mapping.

Parameters
startVirtual address of the start of the segment
lengthLength of the segment

◆ GetSegments()

vector< Ref< Segment > > BinaryView::GetSegments ( )

Get the list of registered Segments.

Returns
The list of registered Segments

◆ GetSegmentAt()

Ref< Segment > BinaryView::GetSegmentAt ( uint64_t addr)

Gets the Segment a given virtual address is located in.

Parameters
addrA virtual address
Returns
The Segment that virtual address is located im

◆ GetAddressForDataOffset()

bool BinaryView::GetAddressForDataOffset ( uint64_t offset,
uint64_t & addr )

Retrieves the virtual addreses that maps to the given file offset, if possible.

Parameters
[in]offsetRaw file offset
[out]addrReference to a uint64_t the address will be written to
Returns
Whether an address was successfully mapped

◆ GetDataOffsetForAddress()

bool BinaryView::GetDataOffsetForAddress ( uint64_t addr,
uint64_t & offset )

◆ AddAutoSection()

void BinaryView::AddAutoSection ( const std::string & name,
uint64_t start,
uint64_t length,
BNSectionSemantics semantics = DefaultSectionSemantics,
const std::string & type = "",
uint64_t align = 1,
uint64_t entrySize = 0,
const std::string & linkedSection = "",
const std::string & infoSection = "",
uint64_t infoData = 0 )

Creates an analysis-defined section that can help inform analysis by clarifying what types of data exist in what ranges.

Note that all data specified must already be mapped by an existing segment.

Parameters
nameName of the section
startVirtual address of the start of the section
lengthLength of the section
semanticsSectionSemantics of the section
typeOptional type of the section
alignOptional byte alignment
entrySizeEntry Size of the section
linkedSectionOptional namee of a linked section
infoSectionOptional name of an associated informational section
infoDataOptional Info Data

◆ RemoveAutoSection()

void BinaryView::RemoveAutoSection ( const std::string & name)

Remove an automatically defined section by name.

Parameters
nameName of the section

◆ AddUserSection()

void BinaryView::AddUserSection ( const std::string & name,
uint64_t start,
uint64_t length,
BNSectionSemantics semantics = DefaultSectionSemantics,
const std::string & type = "",
uint64_t align = 1,
uint64_t entrySize = 0,
const std::string & linkedSection = "",
const std::string & infoSection = "",
uint64_t infoData = 0 )

Creates a user-defined section that can help inform analysis by clarifying what types of data exist in what ranges.

Note that all data specified must already be mapped by an existing segment.

Parameters
nameName of the section
startVirtual address of the start of the section
lengthLength of the section
semanticsSectionSemantics of the section
typeOptional type of the section
alignOptional byte alignment
entrySizeEntry Size of the section
linkedSectionOptional namee of a linked section
infoSectionOptional name of an associated informational section
infoDataOptional Info Data

◆ RemoveUserSection()

void BinaryView::RemoveUserSection ( const std::string & name)

Remove a user defined section by name.

Parameters
nameName of the section to remove

◆ GetSections()

vector< Ref< Section > > BinaryView::GetSections ( )

Get the list of defined sections.

Returns
The list of defined sections

◆ GetSectionsAt()

vector< Ref< Section > > BinaryView::GetSectionsAt ( uint64_t addr)

Get the list of sections containing addr.

Parameters
addrAddress to check
Returns
List of sections containing addr

◆ GetSectionByName()

Ref< Section > BinaryView::GetSectionByName ( const std::string & name)

Get a Section by name.

Parameters
nameName of the Section
Returns
The Section with that name

◆ GetUniqueSectionNames()

vector< string > BinaryView::GetUniqueSectionNames ( const std::vector< std::string > & names)

Create unique names for all items in the input list, modifying them if they are not unique.

std::vector<std::string> names = bv.GetUniqueSectionNames({"sect1", "sect1", "sect2"});
// names == {'sect1', 'sect1#1', 'sect2'}
Parameters
namesList of names
Returns
List of unique names

◆ GetAllocatedRanges()

vector< BNAddressRange > BinaryView::GetAllocatedRanges ( )

Get the list of allocated ranges.

Deprecated
This API has been deprecated in favor of GetMappedAddressRanges in 4.0.xxxx
Returns
The list of allocated ranges

◆ GetMappedAddressRanges()

vector< BNAddressRange > BinaryView::GetMappedAddressRanges ( )

Get the list of ranges mapped into the address space.

Returns
The list of mapped ranges

◆ GetBackedAddressRanges()

vector< BNAddressRange > BinaryView::GetBackedAddressRanges ( )

Get the list of ranges that are mapped into the address space and are backed by a target object.

Returns
The list of backed ranges

◆ GetCommentForAddress()

string BinaryView::GetCommentForAddress ( uint64_t addr) const

Get the comment placed at an address.

Parameters
addrAddress at which to check for a comment
Returns
Comment at that address

◆ GetCommentedAddresses()

vector< uint64_t > BinaryView::GetCommentedAddresses ( ) const

Get the list of commented addresses.

Returns
list of addresses with comments defined at them

◆ SetCommentForAddress()

void BinaryView::SetCommentForAddress ( uint64_t addr,
const std::string & comment )

Set the comment at an address.

Parameters
addrAddress at which to place a comment
commentComment to place

◆ StoreMetadata()

void BinaryView::StoreMetadata ( const std::string & key,
Ref< Metadata > value,
bool isAuto = false )

◆ QueryMetadata()

Ref< Metadata > BinaryView::QueryMetadata ( const std::string & key)

◆ RemoveMetadata()

void BinaryView::RemoveMetadata ( const std::string & key)

◆ GetMetadata()

Ref< Metadata > BinaryView::GetMetadata ( )

◆ GetAutoMetadata()

Ref< Metadata > BinaryView::GetAutoMetadata ( )

◆ GetStringMetadata()

string BinaryView::GetStringMetadata ( const std::string & key)

◆ GetRawMetadata()

vector< uint8_t > BinaryView::GetRawMetadata ( const std::string & key)

◆ GetUIntMetadata()

uint64_t BinaryView::GetUIntMetadata ( const std::string & key)

◆ GetLoadSettingsTypeNames()

vector< string > BinaryView::GetLoadSettingsTypeNames ( )

◆ GetLoadSettings()

Ref< Settings > BinaryView::GetLoadSettings ( const std::string & typeName)

◆ SetLoadSettings()

void BinaryView::SetLoadSettings ( const std::string & typeName,
Ref< Settings > settings )

◆ GetParametersForAnalysis()

BNAnalysisParameters BinaryView::GetParametersForAnalysis ( )

◆ SetParametersForAnalysis()

void BinaryView::SetParametersForAnalysis ( BNAnalysisParameters params)

◆ GetMaxFunctionSizeForAnalysis()

uint64_t BinaryView::GetMaxFunctionSizeForAnalysis ( )

◆ SetMaxFunctionSizeForAnalysis()

void BinaryView::SetMaxFunctionSizeForAnalysis ( uint64_t size)

◆ GetNewAutoFunctionAnalysisSuppressed()

bool BinaryView::GetNewAutoFunctionAnalysisSuppressed ( )

◆ SetNewAutoFunctionAnalysisSuppressed()

void BinaryView::SetNewAutoFunctionAnalysisSuppressed ( bool suppress)

◆ GetNameSpaces()

set< NameSpace > BinaryView::GetNameSpaces ( ) const

Returns a list of namespaces for the current BinaryView.

Returns
A list of namespaces for the current BinaryView

◆ GetInternalNameSpace()

NameSpace BinaryView::GetInternalNameSpace ( )
static

Internal namespace for the current BinaryView.

Returns
Internal namespace for the current BinaryView

◆ GetExternalNameSpace()

NameSpace BinaryView::GetExternalNameSpace ( )
static

External namespace for the current BinaryView.

Returns
External namespace for the current BinaryView

◆ ParseExpression()

bool BinaryView::ParseExpression ( Ref< BinaryView > view,
const std::string & expression,
uint64_t & offset,
uint64_t here,
std::string & errorString )
static

Evaluates a string expression to an integer value.

The parser uses the following rules:

  • Symbols are defined by the lexer as ``[A-Za-z0-9_:<>][A-Za-z0-9_:$-<>]+`` or anything enclosed in either single or double quotes
  • Symbols are everything in ``bv.GetSymbols()``, unnamed DataVariables (i.e. ``data_00005000``), unnamed functions (i.e. ``sub_00005000``), or section names (i.e. ``.text``)
  • Numbers are defaulted to hexadecimal thus `_printf + 10` is equivalent to `printf + 0x10` If decimal numbers required use the decimal prefix.
  • Since numbers and symbols can be ambiguous its recommended that you prefix your numbers with the following:
    • ``0x`` - Hexadecimal
    • ``0n`` - Decimal
    • ``0`` - Octal
  • In the case of an ambiguous number/symbol (one with no prefix) for instance ``12345`` we will first attempt to look up the string as a symbol, if a symbol is found its address is used, otherwise we attempt to convert it to a hexadecimal number.
  • The following operations are valid: ``+, -, \*, /, %, (), &, |, ^, ~``
  • In addition to the above operators there are dereference operators similar to BNIL style IL:
    • ``[<expression>]`` - read the `current address size` at ``<expression>``
    • ``[<expression>].b`` - read the byte at ``<expression>``
    • ``[<expression>].w`` - read the word (2 bytes) at ``<expression>``
    • ``[<expression>].d`` - read the dword (4 bytes) at ``<expression>``
    • ``[<expression>].q`` - read the quadword (8 bytes) at ``<expression>``
  • The ``$here`` (or more succinctly: ``$``) keyword can be used in calculations and is defined as the ``here`` parameter, or the currently selected address
  • The ``$start``/``$end`` keyword represents the address of the first/last bytes in the file respectively
Parameters
[in]viewView object for relative selections
[in]expressionExpression to parse
[out]offsetParsed expression
[in]hereThe location for $here
[out]errorStringAny errors that occurred during parsing
Returns
Whether the parsing was successful

◆ HasSymbols()

bool BinaryView::HasSymbols ( ) const

Check whether this BinaryView has any defined symbols.

Returns
Whether this BinaryView has any defined symbols

◆ HasDataVariables()

bool BinaryView::HasDataVariables ( ) const

Check whether this BinaryView has any defined DataVariables.

Returns
Whether this BinaryView has any defined DataVariables

◆ CreateStructureFromOffsetAccess()

Ref< Structure > BinaryView::CreateStructureFromOffsetAccess ( const QualifiedName & type,
bool * newMemberAdded ) const

◆ CreateStructureMemberFromAccess()

Confidence< Ref< Type > > BinaryView::CreateStructureMemberFromAccess ( const QualifiedName & name,
uint64_t offset ) const

◆ CreateLogger()

Ref< Logger > BinaryView::CreateLogger ( const std::string & name)

Create a logger with a session ID tied to this BinaryView.

Whenever this logger is used, if "Log Scope" is set to "Current Tab", it will only be shown for tabs Displaying this BinaryView

See also
Logger
LogRegistry
Parameters
nameName for the logger
Returns
The created Logger

◆ AddExpressionParserMagicValue()

void BinaryView::AddExpressionParserMagicValue ( const std::string & name,
uint64_t value )

Add a magic value to the expression parser.

If the magic value already exists, its value gets updated. The magic value can be used in the expression by a `$` followed by its name, e.g., `$foobar`. It is optional to include the `$` when calling this function, i.e., calling with `foobar` and `$foobar` has the same effect.

Parameters
nameName for the magic value to add or update
valueValue for the magic value

◆ RemoveExpressionParserMagicValue()

void BinaryView::RemoveExpressionParserMagicValue ( const std::string & name)

Remove a magic value from the expression parser.

If the magic value gets referenced after removal, an error will occur during the parsing.

Parameters
nameName for the magic value to remove
valueValue for the magic value

◆ AddExpressionParserMagicValues()

void BinaryView::AddExpressionParserMagicValues ( const std::vector< std::string > & names,
const std::vector< uint64_t > & values )

Add a list of magic value to the expression parser.

The vector `names` and `values` must have the same size. The ith name in the `names` will correspond to the ith value in the `values`.

If a magic value already exists, its value gets updated. The magic value can be used in the expression by a `$` followed by its name, e.g., `$foobar`. It is optional to include the `$` when calling this function, i.e., calling with `foobar` and `$foobar` has the same effect.

Parameters
nameNames for the magic values to add or update
valueValues for the magic value

◆ RemoveExpressionParserMagicValues()

void BinaryView::RemoveExpressionParserMagicValues ( const std::vector< std::string > & names)

Remove a list of magic value from the expression parser.

If any of the magic values gets referenced after removal, an error will occur during the parsing.

Parameters
nameNames for the magic value to remove

◆ GetExpressionParserMagicValue()

bool BinaryView::GetExpressionParserMagicValue ( const std::string & name,
uint64_t * value )

Get the value of an expression parser magic value.

If the queried magic value exists, the function returns true and the magic value is returned in `value`. If the queried magic value does not exist, the function returns false.

Parameters
[in]nameName for the magic value to query
[out]valueValue for the magic value
Returns
Whether the magic value exists

◆ AddExternalLibrary()

Ref< ExternalLibrary > BinaryView::AddExternalLibrary ( const std::string & name,
Ref< ProjectFile > backingFile,
bool isAuto = false )

◆ RemoveExternalLibrary()

void BinaryView::RemoveExternalLibrary ( const std::string & name)

◆ GetExternalLibrary()

Ref< ExternalLibrary > BinaryView::GetExternalLibrary ( const std::string & name)

◆ GetExternalLibraries()

std::vector< Ref< ExternalLibrary > > BinaryView::GetExternalLibraries ( )

◆ AddExternalLocation()

Ref< ExternalLocation > BinaryView::AddExternalLocation ( Ref< Symbol > sourceSymbol,
Ref< ExternalLibrary > library,
std::optional< std::string > targetSymbol,
std::optional< uint64_t > targetAddress,
bool isAuto = false )

◆ RemoveExternalLocation()

void BinaryView::RemoveExternalLocation ( Ref< Symbol > sourceSymbol)

◆ GetExternalLocation()

Ref< ExternalLocation > BinaryView::GetExternalLocation ( Ref< Symbol > sourceSymbol)

◆ GetExternalLocations()

std::vector< Ref< ExternalLocation > > BinaryView::GetExternalLocations ( )

◆ GetGlobalPointerValue()

Confidence< RegisterValue > BinaryView::GetGlobalPointerValue ( ) const

◆ UserGlobalPointerValueSet()

bool BinaryView::UserGlobalPointerValueSet ( ) const

◆ ClearUserGlobalPointerValue()

void BinaryView::ClearUserGlobalPointerValue ( )

◆ SetUserGlobalPointerValue()

void BinaryView::SetUserGlobalPointerValue ( const Confidence< RegisterValue > & value)

◆ StringifyUnicodeData()

optional< pair< string, BNStringType > > BinaryView::StringifyUnicodeData ( Architecture * arch,
const DataBuffer & buffer,
bool allowShortStrings = false )

Member Data Documentation

◆ m_file

Ref<FileMetadata> BinaryNinja::BinaryView::m_file
protected

The underlying file.

◆ BinaryNinja::Relocation

class BinaryNinja::Relocation

Public Member Functions

 Relocation (BNRelocation *reloc)
 
BNRelocationInfo GetInfo () const
 
ArchitectureGetArchitecture () const
 
uint64_t GetTarget () const
 
uint64_t GetAddress () const
 
Ref< SymbolGetSymbol () const
 
- Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNRelocation, BNNewRelocationReference, BNFreeRelocation >
 CoreRefCountObject ()
 
virtual ~CoreRefCountObject ()
 
BNRelocationGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void ReleaseForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Additional Inherited Members

- Static Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNRelocation, BNNewRelocationReference, BNFreeRelocation >
static BNRelocationGetObject (CoreRefCountObject *obj)
 
static BNRelocationGetObject (const CoreRefCountObject *obj)
 
- Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNRelocation, BNNewRelocationReference, BNFreeRelocation >
std::atomic< int > m_refs
 
bool m_registeredRef
 
BNRelocationm_object
 

Constructor & Destructor Documentation

◆ Relocation()

Relocation::Relocation ( BNRelocation * reloc)

Member Function Documentation

◆ GetInfo()

BNRelocationInfo Relocation::GetInfo ( ) const

◆ GetArchitecture()

Architecture * Relocation::GetArchitecture ( ) const

◆ GetTarget()

uint64_t Relocation::GetTarget ( ) const

◆ GetAddress()

uint64_t Relocation::GetAddress ( ) const

◆ GetSymbol()

Ref< Symbol > Relocation::GetSymbol ( ) const

◆ BinaryNinja::BinaryData

class BinaryNinja::BinaryData

Public Member Functions

 BinaryData (FileMetadata *file)
 
 BinaryData (FileMetadata *file, const DataBuffer &data)
 
 BinaryData (FileMetadata *file, const void *data, size_t len)
 
 BinaryData (FileMetadata *file, const std::string &path)
 
 BinaryData (FileMetadata *file, FileAccessor *accessor)
 
- Public Member Functions inherited from BinaryNinja::BinaryView
void NotifyDataWritten (uint64_t offset, size_t len)
 
void NotifyDataInserted (uint64_t offset, size_t len)
 
void NotifyDataRemoved (uint64_t offset, uint64_t len)
 
 BinaryView (BNBinaryView *view)
 
virtual bool Init ()
 
FileMetadataGetFile () const
 
Ref< BinaryViewGetParentView () const
 
std::string GetTypeName () const
 
bool IsModified () const
 
bool IsAnalysisChanged () const
 
bool CreateDatabase (const std::string &path, Ref< SaveSettings > settings=new SaveSettings())
 Writes the current database (.bndb) out to the specified file.
 
bool CreateDatabase (const std::string &path, const std::function< bool(size_t progress, size_t total)> &progressCallback, Ref< SaveSettings > settings=new SaveSettings())
 Writes the current database (.bndb) out to the specified file.
 
bool SaveAutoSnapshot (Ref< SaveSettings > settings=new SaveSettings())
 
bool SaveAutoSnapshot (const std::function< bool(size_t progress, size_t total)> &progressCallback, Ref< SaveSettings > settings=new SaveSettings())
 
bool RunUndoableTransaction (std::function< bool()> func)
 Run a function in a context in which any changes made to analysis will be added to an undo state.
 
std::string BeginUndoActions (bool anonymousAllowed=true)
 Start recording actions taken so they can be undone at some point.
 
void CommitUndoActions (const std::string &id)
 Commit the actions taken since a call to BeginUndoActions.
 
void RevertUndoActions (const std::string &id)
 Revert the actions taken since a call to BeginUndoActions.
 
void ForgetUndoActions (const std::string &id)
 Forget the actions taken since a call to BeginUndoActions.
 
bool CanUndo ()
 
bool Undo ()
 Undo the last committed action in the undo database.
 
bool CanRedo ()
 
bool Redo ()
 Redo the last committed action in the undo database.
 
std::string GetCurrentView ()
 Get the current View name, e.g.
 
uint64_t GetCurrentOffset ()
 Get the current offset in the current view.
 
bool Navigate (const std::string &view, uint64_t offset)
 Navigate to the specified virtual address in the specified view.
 
size_t Read (void *dest, uint64_t offset, size_t len)
 Read writes `len` bytes at virtual address `offset` to address `dest`.
 
DataBuffer ReadBuffer (uint64_t offset, size_t len)
 ReadBuffer reads len bytes from a virtual address into a DataBuffer.
 
size_t Write (uint64_t offset, const void *data, size_t len)
 Write writes `len` bytes data at address `dest` to virtual address `offset`.
 
size_t WriteBuffer (uint64_t offset, const DataBuffer &data)
 WriteBuffer writes the contents of a DataBuffer into a virtual address.
 
size_t Insert (uint64_t offset, const void *data, size_t len)
 Insert inserts `len` bytes data at address `dest` starting from virtual address `offset`.
 
size_t InsertBuffer (uint64_t offset, const DataBuffer &data)
 InsertBuffer inserts the contents of a DataBuffer starting from a virtual address.
 
size_t Remove (uint64_t offset, uint64_t len)
 PerformRemove removes `len` bytes from virtual address `offset`.
 
std::vector< float > GetEntropy (uint64_t offset, size_t len, size_t blockSize)
 
BNModificationStatus GetModification (uint64_t offset)
 GetModification checks whether the virtual address `offset` is modified.
 
std::vector< BNModificationStatusGetModification (uint64_t offset, size_t len)
 
bool IsValidOffset (uint64_t offset) const
 IsValidOffset checks whether a virtual address `offset` is valid.
 
bool IsOffsetReadable (uint64_t offset) const
 IsOffsetReadable checks whether a virtual address is readable.
 
bool IsOffsetWritable (uint64_t offset) const
 IsOffsetWritable checks whether a virtual address is writable.
 
bool IsOffsetExecutable (uint64_t offset) const
 IsOffsetExecutable checks whether a virtual address is executable.
 
bool IsOffsetBackedByFile (uint64_t offset) const
 IsOffsetBackedByFile checks whether a virtual address is backed by a file.
 
bool IsOffsetCodeSemantics (uint64_t offset) const
 
bool IsOffsetWritableSemantics (uint64_t offset) const
 
bool IsOffsetExternSemantics (uint64_t offset) const
 
uint64_t GetNextValidOffset (uint64_t offset) const
 GetNextValidOffset implements a query for the next valid readable, writable, or executable virtual memory address after `offset`.
 
uint64_t GetImageBase () const
 GetImageBase queries for the image base in the BinaryView.
 
uint64_t GetOriginalImageBase () const
 GetOriginalImageBase queries for the original image base in the BinaryView, unaffected by any rebasing operations.
 
void SetOriginalImageBase (uint64_t imageBase)
 SetOriginalBase sets the original image base in the BinaryView, unaffected by any rebasing operations.
 
uint64_t GetOriginalBase () const
 GetOriginalBase queries for the original image base in the BinaryView, unaffected by any rebasing operations.
 
void SetOriginalBase (uint64_t base)
 SetOriginalBase sets the original image base in the BinaryView, unaffected by any rebasing operations.
 
uint64_t GetStart () const
 GetStart queries for the first valid virtual address in the BinaryView.
 
uint64_t GetEnd () const
 GetEnd queries for the end virtual address of the BinaryView.
 
uint64_t GetLength () const
 GetLength queries for the total length of the BinaryView from start to end.
 
uint64_t GetEntryPoint () const
 GetEntryPoint returns the entry point of the executable in the BinaryView.
 
Ref< ArchitectureGetDefaultArchitecture () const
 GetDefaultArchitecture returns the current "default architecture" for the BinaryView.
 
void SetDefaultArchitecture (Architecture *arch)
 SetDefaultArchitecture allows setting the default architecture for the BinaryView.
 
Ref< PlatformGetDefaultPlatform () const
 GetDefaultPlatform returns the current default platform for the BinaryView.
 
void SetDefaultPlatform (Platform *platform)
 SetDefaultPlatform allows setting the default platform for the BinaryView.
 
BNEndianness GetDefaultEndianness () const
 GetDefaultEndianness returns the default endianness for the BinaryView.
 
bool IsRelocatable () const
 Whether the binary is relocatable.
 
size_t GetAddressSize () const
 Address size of the binary.
 
bool IsExecutable () const
 Whether the binary is an executable.
 
bool Save (FileAccessor *file)
 Save the original binary file to a FileAccessor.
 
bool Save (const std::string &path)
 Save the original binary file to the provided destination.
 
void DefineRelocation (Architecture *arch, BNRelocationInfo &info, uint64_t target, uint64_t reloc)
 
void DefineRelocation (Architecture *arch, BNRelocationInfo &info, Ref< Symbol > target, uint64_t reloc)
 
std::vector< std::pair< uint64_t, uint64_t > > GetRelocationRanges () const
 
std::vector< std::pair< uint64_t, uint64_t > > GetRelocationRangesAtAddress (uint64_t addr) const
 
std::vector< std::pair< uint64_t, uint64_t > > GetRelocationRangesInRange (uint64_t addr, size_t size) const
 
bool RangeContainsRelocation (uint64_t addr, size_t size) const
 
std::vector< Ref< Relocation > > GetRelocationsAt (uint64_t addr) const
 
void RegisterNotification (BinaryDataNotification *notify)
 Provides a mechanism for receiving callbacks for various analysis events.
 
void UnregisterNotification (BinaryDataNotification *notify)
 Unregister a notification passed to RegisterNotification.
 
void AddAnalysisOption (const std::string &name)
 Adds an analysis option.
 
Ref< FunctionAddFunctionForAnalysis (Platform *platform, uint64_t addr, bool autoDiscovered=false, Type *type=nullptr)
 Add a new function of the given platform at the virtual address.
 
void AddEntryPointForAnalysis (Platform *platform, uint64_t start)
 adds an virtual address to start analysis from for a given platform
 
void AddToEntryFunctions (Function *func)
 adds an function to all entry function list
 
void RemoveAnalysisFunction (Function *func, bool updateRefs=false)
 removes a function from the list of functions
 
Ref< FunctionCreateUserFunction (Platform *platform, uint64_t start)
 Add a new user function of the given platform at the virtual address.
 
void RemoveUserFunction (Function *func)
 removes a user function from the list of functions
 
bool HasInitialAnalysis ()
 check for the presence of an initial analysis in this BinaryView.
 
void SetAnalysisHold (bool enable)
 Controls the analysis hold for this BinaryView.
 
bool GetFunctionAnalysisUpdateDisabled ()
 
void SetFunctionAnalysisUpdateDisabled (bool disabled)
 
void UpdateAnalysisAndWait ()
 start the analysis running and dont return till it is complete
 
void UpdateAnalysis ()
 asynchronously starts the analysis running and returns immediately.
 
void AbortAnalysis ()
 Abort the currently running analysis.
 
void DefineDataVariable (uint64_t addr, const Confidence< Ref< Type > > &type)
 Define a DataVariable at a given address with a set type.
 
void DefineUserDataVariable (uint64_t addr, const Confidence< Ref< Type > > &type)
 Define a user DataVariable at a given address with a set type.
 
void UndefineDataVariable (uint64_t addr, bool blacklist=true)
 Undefine a DataVariable at a given address.
 
void UndefineUserDataVariable (uint64_t addr)
 Undefine a user DataVariable at a given address.
 
std::map< uint64_t, DataVariableGetDataVariables ()
 Get a map of DataVariables defined in the current BinaryView.
 
bool GetDataVariableAtAddress (uint64_t addr, DataVariable &var)
 Get a DataVariable at a given address.
 
std::vector< Ref< Function > > GetAnalysisFunctionList ()
 Get a list of functions within this BinaryView.
 
bool HasFunctions () const
 Check whether the BinaryView has any functions defined.
 
Ref< FunctionGetAnalysisFunction (Platform *platform, uint64_t addr)
 Gets a function object for the function starting at a virtual address.
 
Ref< FunctionGetRecentAnalysisFunctionForAddress (uint64_t addr)
 Get the most recently used Function starting at a virtual address.
 
std::vector< Ref< Function > > GetAnalysisFunctionsForAddress (uint64_t addr)
 Get a list of functions defined at an address.
 
std::vector< Ref< Function > > GetAnalysisFunctionsContainingAddress (uint64_t addr)
 Get a list of functions containing an address.
 
Ref< FunctionGetAnalysisEntryPoint ()
 Get the function defined as the Analysis entry point for the view.
 
std::vector< Ref< Function > > GetAllEntryFunctions ()
 Get all entry functions (including user-defined ones)
 
Ref< BasicBlockGetRecentBasicBlockForAddress (uint64_t addr)
 Get most recently used Basic Block containing a virtual address.
 
std::vector< Ref< BasicBlock > > GetBasicBlocksForAddress (uint64_t addr)
 Get a list of Basic Blocks containing a virtual address.
 
std::vector< Ref< BasicBlock > > GetBasicBlocksStartingAtAddress (uint64_t addr)
 Get a list of basic blocks starting at a virtual address.
 
std::vector< ReferenceSourceGetCodeReferences (uint64_t addr)
 Get a list of references made from code (instructions) to a virtual address.
 
std::vector< ReferenceSourceGetCodeReferences (uint64_t addr, uint64_t len)
 Get a list of references from code (instructions) to a range of addresses.
 
std::vector< uint64_t > GetCodeReferencesFrom (ReferenceSource src)
 Get code references made by a particular "ReferenceSource".
 
std::vector< uint64_t > GetCodeReferencesFrom (ReferenceSource src, uint64_t len)
 Get code references from a range of addresses.
 
std::vector< uint64_t > GetDataReferences (uint64_t addr)
 Get references made by data ('DataVariables') to a virtual address.
 
std::vector< uint64_t > GetDataReferences (uint64_t addr, uint64_t len)
 Get references made by data ('DataVariables') in a given range, to a virtual address.
 
std::vector< uint64_t > GetDataReferencesFrom (uint64_t addr)
 Get references made by data ('DataVariables') located at a virtual address.
 
std::vector< uint64_t > GetDataReferencesFrom (uint64_t addr, uint64_t len)
 Get references made by data ('DataVariables') located in a range of virtual addresses.
 
void AddUserDataReference (uint64_t fromAddr, uint64_t toAddr)
 Add a user Data Reference from a virtual address to another virtual address.
 
void RemoveUserDataReference (uint64_t fromAddr, uint64_t toAddr)
 Remove a user Data Reference from a virtual address to another virtual address.
 
std::vector< ReferenceSourceGetCodeReferencesForType (const QualifiedName &type)
 Get code references to a Type.
 
std::vector< uint64_t > GetDataReferencesForType (const QualifiedName &type)
 Get data references to a Type.
 
std::vector< TypeReferenceSourceGetTypeReferencesForType (const QualifiedName &type)
 Get Type references to a Type.
 
std::vector< TypeFieldReferenceGetCodeReferencesForTypeField (const QualifiedName &type, uint64_t offset)
 Returns a list of references to a specific type field.
 
std::vector< uint64_t > GetDataReferencesForTypeField (const QualifiedName &type, uint64_t offset)
 Returns a list of virtual addresses of data which references the type type .
 
std::vector< uint64_t > GetDataReferencesFromForTypeField (const QualifiedName &type, uint64_t offset)
 Returns a list of virtual addresses of data which are referenced from the type type .
 
std::vector< TypeReferenceSourceGetTypeReferencesForTypeField (const QualifiedName &type, uint64_t offset)
 Returns a list of type references to a specific type field.
 
std::vector< TypeReferenceSourceGetCodeReferencesForTypeFrom (ReferenceSource src)
 Returns a list of types referenced by code at ReferenceSource src.
 
std::vector< TypeReferenceSourceGetCodeReferencesForTypeFrom (ReferenceSource src, uint64_t len)
 Returns a list of types referenced by code at ReferenceSource src.
 
std::vector< TypeReferenceSourceGetCodeReferencesForTypeFieldFrom (ReferenceSource src)
 Returns a list of type fields referenced by code at ReferenceSource src.
 
std::vector< TypeReferenceSourceGetCodeReferencesForTypeFieldFrom (ReferenceSource src, uint64_t len)
 Returns a list of type fields referenced by code at ReferenceSource src.
 
std::vector< uint64_t > GetAllFieldsReferenced (const QualifiedName &type)
 Returns a list of offsets in the QualifiedName specified by name, which are referenced by code.
 
std::map< uint64_t, std::vector< size_t > > GetAllSizesReferenced (const QualifiedName &type)
 Returns a map from field offset to a list of sizes of the accesses to the specified type.
 
std::map< uint64_t, std::vector< Confidence< Ref< Type > > > > GetAllTypesReferenced (const QualifiedName &type)
 Returns a map from field offset to a list of incoming types written to the specified type.
 
std::vector< size_t > GetSizesReferenced (const QualifiedName &type, uint64_t offset)
 Returns a list of types related to the type field access.
 
std::vector< Confidence< Ref< Type > > > GetTypesReferenced (const QualifiedName &type, uint64_t offset)
 Returns a list of types referenced by a particular type field.
 
std::unordered_set< QualifiedNameGetOutgoingDirectTypeReferences (const QualifiedName &type)
 
std::unordered_set< QualifiedNameGetOutgoingRecursiveTypeReferences (const QualifiedName &type)
 
std::unordered_set< QualifiedNameGetOutgoingRecursiveTypeReferences (const std::unordered_set< QualifiedName > &types)
 
std::unordered_set< QualifiedNameGetIncomingDirectTypeReferences (const QualifiedName &type)
 
std::unordered_set< QualifiedNameGetIncomingRecursiveTypeReferences (const QualifiedName &type)
 
std::unordered_set< QualifiedNameGetIncomingRecursiveTypeReferences (const std::unordered_set< QualifiedName > &types)
 
Ref< StructureCreateStructureBasedOnFieldAccesses (const QualifiedName &type)
 
std::vector< uint64_t > GetCallees (ReferenceSource addr)
 Returns a list of virtual addresses called by the call site in the ReferenceSource.
 
std::vector< ReferenceSourceGetCallers (uint64_t addr)
 Returns a list of ReferenceSource objects (xrefs or cross-references) that call the provided virtual address.
 
Ref< SymbolGetSymbolByAddress (uint64_t addr, const NameSpace &nameSpace=NameSpace())
 Returns the Symbol at the provided virtual address.
 
Ref< SymbolGetSymbolByRawName (const std::string &name, const NameSpace &nameSpace=NameSpace())
 Retrieves a Symbol object for the given a raw (mangled) name.
 
std::vector< Ref< Symbol > > GetSymbolsByName (const std::string &name, const NameSpace &nameSpace=NameSpace())
 Retrieves a list of symbols with a given name.
 
std::vector< Ref< Symbol > > GetSymbolsByRawName (const std::string &name, const NameSpace &nameSpace=NameSpace())
 Retrieves the list of all Symbol objects with a given raw name.
 
std::vector< Ref< Symbol > > GetSymbols (const NameSpace &nameSpace=NameSpace())
 Retrieves the list of all Symbol objects.
 
std::vector< Ref< Symbol > > GetSymbols (uint64_t start, uint64_t len, const NameSpace &nameSpace=NameSpace())
 Retrieves a list of symbols in a given range.
 
std::vector< Ref< Symbol > > GetSymbolsOfType (BNSymbolType type, const NameSpace &nameSpace=NameSpace())
 Retrieves a list of all Symbol objects of the provided symbol type.
 
std::vector< Ref< Symbol > > GetSymbolsOfType (BNSymbolType type, uint64_t start, uint64_t len, const NameSpace &nameSpace=NameSpace())
 Retrieves a list of all Symbol objects of the provided symbol type in the given range.
 
std::vector< Ref< Symbol > > GetVisibleSymbols (const NameSpace &nameSpace=NameSpace())
 Get the list of visible symbols.
 
void DefineAutoSymbol (Ref< Symbol > sym)
 Adds a symbol to the internal list of automatically discovered Symbol objects in a given namespace.
 
Ref< SymbolDefineAutoSymbolAndVariableOrFunction (Ref< Platform > platform, Ref< Symbol > sym, Ref< Type > type)
 Defines an "Auto" symbol, and a Variable/Function alongside it.
 
void UndefineAutoSymbol (Ref< Symbol > sym)
 Undefine an automatically defined symbol.
 
void DefineUserSymbol (Ref< Symbol > sym)
 Define a user symbol.
 
void UndefineUserSymbol (Ref< Symbol > sym)
 Undefine a user symbol.
 
void DefineImportedFunction (Ref< Symbol > importAddressSym, Ref< Function > func, Ref< Type > type=nullptr)
 Defines an imported Function func with a ImportedFunctionSymbol type.
 
Ref< DebugInfoGetDebugInfo ()
 The current debug info object for this binary view.
 
void ApplyDebugInfo (Ref< DebugInfo > newDebugInfo)
 Sets the debug info and applies its contents to the current BinaryView.
 
void SetDebugInfo (Ref< DebugInfo > newDebugInfo)
 Sets the debug info for the current binary view.
 
bool IsApplyingDebugInfo () const
 Determine is a debug info object is currently being applied.
 
void BeginBulkModifySymbols ()
 
void EndBulkModifySymbols ()
 
void AddTagType (Ref< TagType > tagType)
 Add a new TagType to this binaryview.
 
void RemoveTagType (Ref< TagType > tagType)
 Remove a TagType from this binaryview.
 
Ref< TagTypeGetTagType (const std::string &name)
 Get a TagType by name.
 
Ref< TagTypeGetTagType (const std::string &name, TagType::Type type)
 Get a TagType by name and TagType::Type.
 
Ref< TagTypeGetTagTypeByName (const std::string &name)
 Get a TagType by name.
 
Ref< TagTypeGetTagTypeByName (const std::string &name, TagType::Type type)
 Get a TagType by name and TagType::Type.
 
Ref< TagTypeGetTagTypeById (const std::string &id)
 Get a TagType by its ID.
 
Ref< TagTypeGetTagTypeById (const std::string &id, TagType::Type type)
 Get a TagType by its ID and TagType::Type.
 
std::vector< Ref< TagType > > GetTagTypes ()
 Get the list of all defined TagTypes.
 
void AddTag (Ref< Tag > tag, bool user=false)
 Add a Tag.
 
void RemoveTag (Ref< Tag > tag, bool user=false)
 Remove a tag.
 
Ref< TagGetTag (const std::string &tagId)
 Get a tag by its ID.
 
std::vector< TagReferenceGetAllTagReferences ()
 
std::vector< TagReferenceGetAllAddressTagReferences ()
 
std::vector< TagReferenceGetAllFunctionTagReferences ()
 
std::vector< TagReferenceGetAllTagReferencesOfType (Ref< TagType > tagType)
 
std::vector< TagReferenceGetTagReferencesOfType (Ref< TagType > tagType)
 
size_t GetTagReferencesOfTypeCount (Ref< TagType > tagType)
 
size_t GetAllTagReferencesOfTypeCount (Ref< TagType > tagType)
 
std::map< Ref< TagType >, size_t > GetAllTagReferenceTypeCounts ()
 
std::vector< TagReferenceGetDataTagReferences ()
 
std::vector< TagReferenceGetAutoDataTagReferences ()
 
std::vector< TagReferenceGetUserDataTagReferences ()
 
std::vector< Ref< Tag > > GetDataTags (uint64_t addr)
 
std::vector< Ref< Tag > > GetAutoDataTags (uint64_t addr)
 
std::vector< Ref< Tag > > GetUserDataTags (uint64_t addr)
 
std::vector< Ref< Tag > > GetDataTagsOfType (uint64_t addr, Ref< TagType > tagType)
 
std::vector< Ref< Tag > > GetAutoDataTagsOfType (uint64_t addr, Ref< TagType > tagType)
 
std::vector< Ref< Tag > > GetUserDataTagsOfType (uint64_t addr, Ref< TagType > tagType)
 
std::vector< TagReferenceGetDataTagsInRange (uint64_t start, uint64_t end)
 
std::vector< TagReferenceGetAutoDataTagsInRange (uint64_t start, uint64_t end)
 
std::vector< TagReferenceGetUserDataTagsInRange (uint64_t start, uint64_t end)
 
void AddAutoDataTag (uint64_t addr, Ref< Tag > tag)
 
void RemoveAutoDataTag (uint64_t addr, Ref< Tag > tag)
 
void RemoveAutoDataTagsOfType (uint64_t addr, Ref< TagType > tagType)
 
void AddUserDataTag (uint64_t addr, Ref< Tag > tag)
 
void RemoveUserDataTag (uint64_t addr, Ref< Tag > tag)
 
void RemoveUserDataTagsOfType (uint64_t addr, Ref< TagType > tagType)
 
void RemoveTagReference (const TagReference &ref)
 
Ref< TagCreateAutoDataTag (uint64_t addr, const std::string &tagTypeName, const std::string &data, bool unique=false)
 
Ref< TagCreateUserDataTag (uint64_t addr, const std::string &tagTypeName, const std::string &data, bool unique=false)
 
Ref< TagCreateAutoDataTag (uint64_t addr, Ref< TagType > tagType, const std::string &data, bool unique=false)
 
Ref< TagCreateUserDataTag (uint64_t addr, Ref< TagType > tagType, const std::string &data, bool unique=false)
 
std::optional< Ref< Component > > GetComponentByGuid (std::string guid)
 Lookup a component by its GUID.
 
std::optional< Ref< Component > > GetComponentByPath (std::string path)
 Lookup a component by its pathname.
 
Ref< ComponentGetRootComponent ()
 Get the root component for the BinaryView (read-only)
 
Ref< ComponentCreateComponent ()
 Create a component.
 
Ref< ComponentCreateComponent (std::string parentGUID)
 Create a component as a subcomponent of the component with a given Guid.
 
Ref< ComponentCreateComponent (Ref< Component > parent)
 Create a component as a subcomponent of a given Component.
 
Ref< ComponentCreateComponentWithName (std::string name, std::string parentGUID={})
 Create a component with a given name and optional parent.
 
Ref< ComponentCreateComponentWithName (std::string name, Ref< Component > parent)
 Create a component with a given name and parent.
 
bool RemoveComponent (Ref< Component > component)
 Remove a component from the tree entirely.
 
bool RemoveComponent (std::string guid)
 Remove a component from the tree entirely.
 
std::vector< Ref< Component > > GetFunctionParentComponents (Ref< Function > function) const
 
std::vector< Ref< Component > > GetDataVariableParentComponents (DataVariable var) const
 
std::optional< BNStringTypeCheckForStringAnnotationType (uint64_t addr, std::string &value, bool allowShortStrings, bool allowLargeStrings, size_t childWidth)
 Heuristically determine if a string exists at the given address.
 
bool CanAssemble (Architecture *arch)
 Check whether the given architecture supports assembling instructions.
 
bool IsNeverBranchPatchAvailable (Architecture *arch, uint64_t addr)
 Check whether the "Never Branch" patch is available for a given architecture at a given address.
 
bool IsAlwaysBranchPatchAvailable (Architecture *arch, uint64_t addr)
 Check whether the "Always Branch" patch is available for a given architecture at a given address.
 
bool IsInvertBranchPatchAvailable (Architecture *arch, uint64_t addr)
 Check whether the "Invert Branch" patch is available for a given architecture at a given address.
 
bool IsSkipAndReturnZeroPatchAvailable (Architecture *arch, uint64_t addr)
 Check whether the "Skip and Return Zero" patch is available for a given architecture at a given address.
 
bool IsSkipAndReturnValuePatchAvailable (Architecture *arch, uint64_t addr)
 Check whether the "Skip and Return Value" patch is available for a given architecture at a given address.
 
bool ConvertToNop (Architecture *arch, uint64_t addr)
 Convert the instruction at the given address to a nop.
 
bool AlwaysBranch (Architecture *arch, uint64_t addr)
 Convert the conditional branch at the given address to always branch.
 
bool InvertBranch (Architecture *arch, uint64_t addr)
 Convert the conditional branch at the given address to branch under inverted conditions.
 
bool SkipAndReturnValue (Architecture *arch, uint64_t addr, uint64_t value)
 Convert the given instruction to skip the rest of the function and return 0.
 
size_t GetInstructionLength (Architecture *arch, uint64_t addr)
 Get the length of the instruction at a given address.
 
bool GetStringAtAddress (uint64_t addr, BNStringReference &strRef)
 Get the string at an address.
 
std::vector< BNStringReferenceGetStrings ()
 Get the list of strings located within the view.
 
std::vector< BNStringReferenceGetStrings (uint64_t start, uint64_t len)
 Get the list of strings located within a range.
 
Ref< AnalysisCompletionEventAddAnalysisCompletionEvent (const std::function< void()> &callback)
 Sets up a call back function to be called when analysis has been completed.
 
AnalysisInfo GetAnalysisInfo ()
 
BNAnalysisProgress GetAnalysisProgress ()
 
Ref< BackgroundTaskGetBackgroundAnalysisTask ()
 
uint64_t GetNextFunctionStartAfterAddress (uint64_t addr)
 Returns the virtual address of the Function that occurs after the virtual address `addr`.
 
uint64_t GetNextBasicBlockStartAfterAddress (uint64_t addr)
 Returns the virtual address of the BasicBlock that occurs after the virtual address `addr`.
 
uint64_t GetNextDataAfterAddress (uint64_t addr)
 Retrieves the virtual address of the next non-code byte.
 
uint64_t GetNextDataVariableStartAfterAddress (uint64_t addr)
 Retrieves the address of the next DataVariable.
 
uint64_t GetPreviousFunctionStartBeforeAddress (uint64_t addr)
 Returns the virtual address of the Function that occurs prior to the virtual address provided.
 
uint64_t GetPreviousBasicBlockStartBeforeAddress (uint64_t addr)
 Returns the virtual address of the Basic Block that occurs prior to the virtual address provided.
 
uint64_t GetPreviousBasicBlockEndBeforeAddress (uint64_t addr)
 Returns the ending virtual address of the Basic Block that occurs prior to the virtual address provided.
 
uint64_t GetPreviousDataBeforeAddress (uint64_t addr)
 Returns the virtual address of the previous data (non-code) byte.
 
uint64_t GetPreviousDataVariableStartBeforeAddress (uint64_t addr)
 Returns the virtual address of the previous DataVariable.
 
bool ParsePossibleValueSet (const std::string &value, BNRegisterValueType state, PossibleValueSet &result, uint64_t here, std::string &errors)
 
bool ParseTypeString (const std::string &text, QualifiedNameAndType &result, std::string &errors, const std::set< QualifiedName > &typesAllowRedefinition={}, bool importDependencies=true)
 Parse a single type and name from a string containing their definition.
 
bool ParseTypeString (const std::string &text, std::map< QualifiedName, Ref< Type > > &types, std::map< QualifiedName, Ref< Type > > &variables, std::map< QualifiedName, Ref< Type > > &functions, std::string &errors, const std::set< QualifiedName > &typesAllowRedefinition={}, bool importDependencies=true)
 Parse an entire block of source into types, variables, and functions.
 
bool ParseTypesFromSource (const std::string &text, const std::vector< std::string > &options, const std::vector< std::string > &includeDirs, TypeParserResult &result, std::string &errors, const std::set< QualifiedName > &typesAllowRedefinition={}, bool importDependencies=true)
 Parse an entire block of source into a structure containing types, variables, and functions.
 
class TypeContainer GetTypeContainer ()
 Type Container for all types (user and auto) in the BinaryView.
 
class TypeContainer GetAutoTypeContainer ()
 Type Container for ONLY auto types in the BinaryView.
 
class TypeContainer GetUserTypeContainer ()
 Type Container for ONLY user types in the BinaryView.
 
std::map< QualifiedName, Ref< Type > > GetTypes ()
 
std::vector< std::pair< QualifiedName, Ref< Type > > > GetDependencySortedTypes ()
 List of all types, sorted such that types are after all types on which they depend.
 
std::vector< QualifiedNameGetTypeNames (const std::string &matching="")
 
Ref< TypeGetTypeByName (const QualifiedName &name)
 
Ref< TypeGetTypeByRef (Ref< NamedTypeReference > name)
 
Ref< TypeGetTypeById (const std::string &id)
 
std::string GetTypeId (const QualifiedName &name)
 
QualifiedName GetTypeNameById (const std::string &id)
 
bool IsTypeAutoDefined (const QualifiedName &name)
 
QualifiedName DefineType (const std::string &id, const QualifiedName &defaultName, Ref< Type > type)
 
std::unordered_map< std::string, QualifiedNameDefineTypes (const std::vector< std::pair< std::string, QualifiedNameAndType > > &types, std::function< bool(size_t, size_t)> progress={})
 
void DefineUserType (const QualifiedName &name, Ref< Type > type)
 
void DefineUserTypes (const std::vector< QualifiedNameAndType > &types, std::function< bool(size_t, size_t)> progress={})
 
void DefineUserTypes (const std::vector< ParsedType > &types, std::function< bool(size_t, size_t)> progress={})
 
void UndefineType (const std::string &id)
 
void UndefineUserType (const QualifiedName &name)
 
void RenameType (const QualifiedName &oldName, const QualifiedName &newName)
 
void RegisterPlatformTypes (Platform *platform)
 
std::optional< std::pair< Ref< Platform >, QualifiedName > > LookupImportedTypePlatform (const QualifiedName &name)
 Gives you details of which platform and name was imported to result in the given type name.
 
void AddTypeLibrary (TypeLibrary *lib)
 Make the contents of a type library available for type/import resolution.
 
Ref< TypeLibraryGetTypeLibrary (const std::string &name)
 Get the type library with the given name.
 
std::vector< Ref< TypeLibrary > > GetTypeLibraries ()
 Get the list of imported type libraries.
 
Ref< TypeImportTypeLibraryType (Ref< TypeLibrary > &lib, const QualifiedName &name)
 Recursively imports a type from the specified type library, or, if no library was explicitly provided, the first type library associated with the current `BinaryView` that provides the name requested.
 
Ref< TypeImportTypeLibraryObject (Ref< TypeLibrary > &lib, const QualifiedName &name)
 Recursively imports an object from the specified type library, or, if no library was explicitly provided, the first type library associated with the current `BinaryView` that provides the name requested.
 
Ref< TypeImportTypeLibraryTypeByGuid (const std::string &guid)
 Recursively imports a type by guid from the current BinaryView's set of type libraries.
 
std::optional< QualifiedNameGetTypeNameByGuid (const std::string &guid)
 
void ExportTypeToTypeLibrary (TypeLibrary *lib, const QualifiedName &name, Type *type)
 Recursively exports ``type`` into ``lib`` as a type with name ``name``.
 
void ExportObjectToTypeLibrary (TypeLibrary *lib, const QualifiedName &name, Type *type)
 Recursively exports ``type`` into ``lib`` as an object with name ``name``.
 
void RecordImportedObjectLibrary (Platform *tgtPlatform, uint64_t tgtAddr, TypeLibrary *lib, const QualifiedName &name)
 Should be called by custom `BinaryView` implementations when they have successfully imported an object from a type library (eg a symbol's type).
 
std::optional< std::pair< Ref< TypeLibrary >, QualifiedName > > LookupImportedObjectLibrary (Platform *tgtPlatform, uint64_t tgtAddr)
 Gives you details of which type library and name was used to determine the type of a symbol at a given address.
 
std::optional< std::pair< Ref< TypeLibrary >, QualifiedName > > LookupImportedTypeLibrary (const QualifiedName &name)
 Gives you details of which type library and name was imported to result in the given type name.
 
Ref< TypeArchiveAttachTypeArchive (const std::string &id, const std::string &path)
 Attach a given type archive to the binary view.
 
void DetachTypeArchive (const std::string &id)
 Detach from a type archive, breaking all associations to types with the archive.
 
Ref< TypeArchiveGetTypeArchive (const std::string &id) const
 Look up a connected archive by its id.
 
std::unordered_map< std::string, std::string > GetTypeArchives () const
 Get all attached type archives.
 
std::optional< std::string > GetTypeArchivePath (const std::string &id) const
 Look up the path for an attached (but not necessarily connected) type archive by its id.
 
std::unordered_map< QualifiedName, std::map< std::string, std::string > > GetTypeArchiveTypeNames () const
 Get a list of all available type names in all connected archives, and their archive/type id pair.
 
std::unordered_map< std::string, std::pair< std::string, std::string > > GetAssociatedTypeArchiveTypes () const
 Get a list of all types in the analysis that are associated with a specific type archive.
 
std::unordered_map< std::string, std::string > GetAssociatedTypesFromArchive (const std::string &archive) const
 Get a list of all types in the analysis that are associated with a specific type archive.
 
std::optional< std::pair< std::string, std::string > > GetAssociatedTypeArchiveTypeTarget (const std::string &id) const
 Determine the target archive / type id of a given analysis type.
 
std::optional< std::string > GetAssociatedTypeArchiveTypeSource (const std::string &archiveId, const std::string &archiveTypeId) const
 Determine the local source type for a given archive type.
 
BNSyncStatus GetTypeArchiveSyncStatus (const std::string &typeId) const
 Get the current status of any changes pending in a given type.
 
bool DisassociateTypeArchiveType (const std::string &typeId)
 Disassociate an associated type, so that it will no longer receive updates from its connected type archive.
 
bool PullTypeArchiveTypes (const std::string &archiveId, const std::unordered_set< std::string > &archiveTypeIds, std::unordered_map< std::string, std::string > &updatedTypes)
 Pull a collection of types from a type archive, associating with them and any dependencies.
 
bool PushTypeArchiveTypes (const std::string &archiveId, const std::unordered_set< std::string > &typeIds, std::unordered_map< std::string, std::string > &updatedTypes)
 Push a collection of types, and all their dependencies, into a type archive.
 
bool FindNextData (uint64_t start, const DataBuffer &data, uint64_t &result, BNFindFlag flags=FindCaseSensitive)
 
bool FindNextText (uint64_t start, const std::string &data, uint64_t &result, Ref< DisassemblySettings > settings, BNFindFlag flags=FindCaseSensitive, const FunctionViewType &viewType=NormalFunctionGraph)
 
bool FindNextConstant (uint64_t start, uint64_t constant, uint64_t &result, Ref< DisassemblySettings > settings, const FunctionViewType &viewType=NormalFunctionGraph)
 
bool FindNextData (uint64_t start, uint64_t end, const DataBuffer &data, uint64_t &addr, BNFindFlag flags, const std::function< bool(size_t current, size_t total)> &progress)
 
bool FindNextText (uint64_t start, uint64_t end, const std::string &data, uint64_t &addr, Ref< DisassemblySettings > settings, BNFindFlag flags, const FunctionViewType &viewType, const std::function< bool(size_t current, size_t total)> &progress)
 
bool FindNextConstant (uint64_t start, uint64_t end, uint64_t constant, uint64_t &addr, Ref< DisassemblySettings > settings, const FunctionViewType &viewType, const std::function< bool(size_t current, size_t total)> &progress)
 
bool FindAllData (uint64_t start, uint64_t end, const DataBuffer &data, BNFindFlag flags, const std::function< bool(size_t current, size_t total)> &progress, const std::function< bool(uint64_t addr, const DataBuffer &match)> &matchCallback)
 
bool FindAllText (uint64_t start, uint64_t end, const std::string &data, Ref< DisassemblySettings > settings, BNFindFlag flags, const FunctionViewType &viewType, const std::function< bool(size_t current, size_t total)> &progress, const std::function< bool(uint64_t addr, const std::string &match, const LinearDisassemblyLine &line)> &matchCallback)
 
bool FindAllConstant (uint64_t start, uint64_t end, uint64_t constant, Ref< DisassemblySettings > settings, const FunctionViewType &viewType, const std::function< bool(size_t current, size_t total)> &progress, const std::function< bool(uint64_t addr, const LinearDisassemblyLine &line)> &matchCallback)
 
bool Search (const std::string &query, const std::function< bool(uint64_t offset, const DataBuffer &buffer)> &otherCallback)
 
void Reanalyze ()
 
Ref< WorkflowGetWorkflow ()
 
void ShowPlainTextReport (const std::string &title, const std::string &contents)
 Displays contents to the user in the UI or on the command-line.
 
void ShowMarkdownReport (const std::string &title, const std::string &contents, const std::string &plainText)
 Displays markdown contents to the user in the UI or on the command-line.
 
void ShowHTMLReport (const std::string &title, const std::string &contents, const std::string &plainText)
 Displays HTML contents to the user in the UI or on the command-line.
 
void ShowGraphReport (const std::string &title, FlowGraph *graph)
 Displays a flow graph in UI applications and nothing in command-line applications.
 
bool GetAddressInput (uint64_t &result, const std::string &prompt, const std::string &title)
 Prompts the user to input an unsigned integer with the given prompt and title.
 
bool GetAddressInput (uint64_t &result, const std::string &prompt, const std::string &title, uint64_t currentAddress)
 Prompts the user to input an unsigned integer with the given prompt and title.
 
MemoryMapGetMemoryMap ()
 A mock object that is a placeholder during development of this feature.
 
void BeginBulkAddSegments ()
 Begin a bulk segment addition operation.
 
void EndBulkAddSegments ()
 Finalize and apply all queued segments (auto and user) added during a bulk segment addition operation.
 
void CancelBulkAddSegments ()
 Cancel a bulk segment addition operation.
 
void AddAutoSegment (uint64_t start, uint64_t length, uint64_t dataOffset, uint64_t dataLength, uint32_t flags)
 Add an analysis segment that specifies how data from the raw file is mapped into a virtual address space.
 
void AddAutoSegments (const std::vector< BNSegmentInfo > &segments)
 Add analysis segments that specify how data from the raw file is mapped into a virtual address space.
 
void RemoveAutoSegment (uint64_t start, uint64_t length)
 Removes an automatically generated segment from the current segment mapping.
 
void AddUserSegment (uint64_t start, uint64_t length, uint64_t dataOffset, uint64_t dataLength, uint32_t flags)
 Creates a user-defined segment that specifies how data from the raw file is mapped into a virtual address space.
 
void AddUserSegments (const std::vector< BNSegmentInfo > &segments)
 Creates user-defined segments that specify how data from the raw file is mapped into a virtual address space.
 
void RemoveUserSegment (uint64_t start, uint64_t length)
 Removes a user-defined segment from th current segment mapping.
 
std::vector< Ref< Segment > > GetSegments ()
 Get the list of registered Segments.
 
Ref< SegmentGetSegmentAt (uint64_t addr)
 Gets the Segment a given virtual address is located in.
 
bool GetAddressForDataOffset (uint64_t offset, uint64_t &addr)
 Retrieves the virtual addreses that maps to the given file offset, if possible.
 
bool GetDataOffsetForAddress (uint64_t addr, uint64_t &offset)
 
void AddAutoSection (const std::string &name, uint64_t start, uint64_t length, BNSectionSemantics semantics=DefaultSectionSemantics, const std::string &type="", uint64_t align=1, uint64_t entrySize=0, const std::string &linkedSection="", const std::string &infoSection="", uint64_t infoData=0)
 Creates an analysis-defined section that can help inform analysis by clarifying what types of data exist in what ranges.
 
void RemoveAutoSection (const std::string &name)
 Remove an automatically defined section by name.
 
void AddUserSection (const std::string &name, uint64_t start, uint64_t length, BNSectionSemantics semantics=DefaultSectionSemantics, const std::string &type="", uint64_t align=1, uint64_t entrySize=0, const std::string &linkedSection="", const std::string &infoSection="", uint64_t infoData=0)
 Creates a user-defined section that can help inform analysis by clarifying what types of data exist in what ranges.
 
void RemoveUserSection (const std::string &name)
 Remove a user defined section by name.
 
std::vector< Ref< Section > > GetSections ()
 Get the list of defined sections.
 
std::vector< Ref< Section > > GetSectionsAt (uint64_t addr)
 Get the list of sections containing addr.
 
Ref< SectionGetSectionByName (const std::string &name)
 Get a Section by name.
 
std::vector< std::string > GetUniqueSectionNames (const std::vector< std::string > &names)
 Create unique names for all items in the input list, modifying them if they are not unique.
 
std::vector< BNAddressRangeGetAllocatedRanges ()
 Get the list of allocated ranges.
 
std::vector< BNAddressRangeGetMappedAddressRanges ()
 Get the list of ranges mapped into the address space.
 
std::vector< BNAddressRangeGetBackedAddressRanges ()
 Get the list of ranges that are mapped into the address space and are backed by a target object.
 
std::string GetCommentForAddress (uint64_t addr) const
 Get the comment placed at an address.
 
std::vector< uint64_t > GetCommentedAddresses () const
 Get the list of commented addresses.
 
void SetCommentForAddress (uint64_t addr, const std::string &comment)
 Set the comment at an address.
 
void StoreMetadata (const std::string &key, Ref< Metadata > value, bool isAuto=false)
 
Ref< MetadataQueryMetadata (const std::string &key)
 
void RemoveMetadata (const std::string &key)
 
Ref< MetadataGetMetadata ()
 
Ref< MetadataGetAutoMetadata ()
 
std::string GetStringMetadata (const std::string &key)
 
std::vector< uint8_t > GetRawMetadata (const std::string &key)
 
uint64_t GetUIntMetadata (const std::string &key)
 
std::vector< std::string > GetLoadSettingsTypeNames ()
 
Ref< SettingsGetLoadSettings (const std::string &typeName)
 
void SetLoadSettings (const std::string &typeName, Ref< Settings > settings)
 
BNAnalysisParameters GetParametersForAnalysis ()
 
void SetParametersForAnalysis (BNAnalysisParameters params)
 
uint64_t GetMaxFunctionSizeForAnalysis ()
 
void SetMaxFunctionSizeForAnalysis (uint64_t size)
 
bool GetNewAutoFunctionAnalysisSuppressed ()
 
void SetNewAutoFunctionAnalysisSuppressed (bool suppress)
 
std::set< NameSpaceGetNameSpaces () const
 Returns a list of namespaces for the current BinaryView.
 
bool HasSymbols () const
 Check whether this BinaryView has any defined symbols.
 
bool HasDataVariables () const
 Check whether this BinaryView has any defined DataVariables.
 
Ref< StructureCreateStructureFromOffsetAccess (const QualifiedName &type, bool *newMemberAdded) const
 
Confidence< Ref< Type > > CreateStructureMemberFromAccess (const QualifiedName &name, uint64_t offset) const
 
Ref< LoggerCreateLogger (const std::string &name)
 Create a logger with a session ID tied to this BinaryView.
 
void AddExpressionParserMagicValue (const std::string &name, uint64_t value)
 Add a magic value to the expression parser.
 
void RemoveExpressionParserMagicValue (const std::string &name)
 Remove a magic value from the expression parser.
 
void AddExpressionParserMagicValues (const std::vector< std::string > &names, const std::vector< uint64_t > &values)
 Add a list of magic value to the expression parser.
 
void RemoveExpressionParserMagicValues (const std::vector< std::string > &names)
 Remove a list of magic value from the expression parser.
 
bool GetExpressionParserMagicValue (const std::string &name, uint64_t *value)
 Get the value of an expression parser magic value.
 
Ref< ExternalLibraryAddExternalLibrary (const std::string &name, Ref< ProjectFile > backingFile, bool isAuto=false)
 
void RemoveExternalLibrary (const std::string &name)
 
Ref< ExternalLibraryGetExternalLibrary (const std::string &name)
 
std::vector< Ref< ExternalLibrary > > GetExternalLibraries ()
 
Ref< ExternalLocationAddExternalLocation (Ref< Symbol > sourceSymbol, Ref< ExternalLibrary > library, std::optional< std::string > targetSymbol, std::optional< uint64_t > targetAddress, bool isAuto=false)
 
void RemoveExternalLocation (Ref< Symbol > sourceSymbol)
 
Ref< ExternalLocationGetExternalLocation (Ref< Symbol > sourceSymbol)
 
std::vector< Ref< ExternalLocation > > GetExternalLocations ()
 
Confidence< RegisterValueGetGlobalPointerValue () const
 
bool UserGlobalPointerValueSet () const
 
void ClearUserGlobalPointerValue ()
 
void SetUserGlobalPointerValue (const Confidence< RegisterValue > &value)
 
std::optional< std::pair< std::string, BNStringType > > StringifyUnicodeData (Architecture *arch, const DataBuffer &buffer, bool allowShortStrings=false)
 
- Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNBinaryView, BNNewViewReference, BNFreeBinaryView >
 CoreRefCountObject ()
 
virtual ~CoreRefCountObject ()
 
BNBinaryViewGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void ReleaseForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Static Public Member Functions

static Ref< BinaryDataCreateFromFilename (FileMetadata *file, const std::string &path)
 Open a raw file from a given path.
 
static Ref< BinaryDataCreateFromFile (FileMetadata *file, FileAccessor *accessor)
 Open a raw file from a given path.
 
- Static Public Member Functions inherited from BinaryNinja::BinaryView
static NameSpace GetInternalNameSpace ()
 Internal namespace for the current BinaryView.
 
static NameSpace GetExternalNameSpace ()
 External namespace for the current BinaryView.
 
static bool ParseExpression (Ref< BinaryView > view, const std::string &expression, uint64_t &offset, uint64_t here, std::string &errorString)
 Evaluates a string expression to an integer value.
 
- Static Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNBinaryView, BNNewViewReference, BNFreeBinaryView >
static BNBinaryViewGetObject (CoreRefCountObject *obj)
 
static BNBinaryViewGetObject (const CoreRefCountObject *obj)
 

Additional Inherited Members

- Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNBinaryView, BNNewViewReference, BNFreeBinaryView >
std::atomic< int > m_refs
 
bool m_registeredRef
 
BNBinaryViewm_object
 
- Protected Member Functions inherited from BinaryNinja::BinaryView
 BinaryView (const std::string &typeName, FileMetadata *file, BinaryView *parentView=nullptr)
 BinaryView constructor.
 
virtual size_t PerformRead (void *dest, uint64_t offset, size_t len)
 PerformRead provides a mapping between the flat file and virtual offsets in the file.
 
virtual size_t PerformWrite (uint64_t offset, const void *data, size_t len)
 PerformWrite provides a mapping between the flat file and virtual offsets in the file.
 
virtual size_t PerformInsert (uint64_t offset, const void *data, size_t len)
 PerformInsert provides a mapping between the flat file and virtual offsets in the file, inserting `len` bytes from `data` to virtual address `offset`.
 
virtual size_t PerformRemove (uint64_t offset, uint64_t len)
 PerformRemove provides a mapping between the flat file and virtual offsets in the file, removing `len` bytes from virtual address `offset`.
 
virtual BNModificationStatus PerformGetModification (uint64_t offset)
 PerformGetModification implements a query as to whether the virtual address `offset` is modified.
 
virtual bool PerformIsValidOffset (uint64_t offset)
 PerformIsValidOffset implements a check as to whether a virtual address `offset` is valid.
 
virtual bool PerformIsOffsetReadable (uint64_t offset)
 PerformIsOffsetReadable implements a check as to whether a virtual address is readable.
 
virtual bool PerformIsOffsetWritable (uint64_t offset)
 PerformIsOffsetWritable implements a check as to whether a virtual address is writable.
 
virtual bool PerformIsOffsetExecutable (uint64_t offset)
 PerformIsOffsetExecutable implements a check as to whether a virtual address is executable.
 
virtual bool PerformIsOffsetBackedByFile (uint64_t offset)
 PerformIsOffsetBackedByFile implements a check as to whether a virtual address is backed by a file.
 
virtual uint64_t PerformGetNextValidOffset (uint64_t offset)
 PerformGetNextValidOffset implements a query for the next valid readable, writable, or executable virtual memory address after `offset`.
 
virtual uint64_t PerformGetStart () const
 PerformGetStart implements a query for the first readable, writable, or executable virtual address in the BinaryView.
 
virtual uint64_t PerformGetLength () const
 
virtual uint64_t PerformGetEntryPoint () const
 
virtual bool PerformIsExecutable () const
 PerformIsExecutable implements a check which returns true if the BinaryView is executable.
 
virtual BNEndianness PerformGetDefaultEndianness () const
 PerformGetDefaultEndianness implements a check which returns the Endianness of the BinaryView.
 
virtual bool PerformIsRelocatable () const
 PerformIsRelocatable implements a check which returns true if the BinaryView is relocatable.
 
virtual size_t PerformGetAddressSize () const
 PerformGetAddressSize implements a query for the address size for this BinaryView.
 
virtual bool PerformSave (FileAccessor *file)
 
void PerformDefineRelocation (Architecture *arch, BNRelocationInfo &info, uint64_t target, uint64_t reloc)
 
void PerformDefineRelocation (Architecture *arch, BNRelocationInfo &info, Ref< Symbol > sym, uint64_t reloc)
 
- Protected Attributes inherited from BinaryNinja::BinaryView
Ref< FileMetadatam_file
 The underlying file.
 

Constructor & Destructor Documentation

◆ BinaryData() [1/5]

BinaryData::BinaryData ( FileMetadata * file)

◆ BinaryData() [2/5]

BinaryData::BinaryData ( FileMetadata * file,
const DataBuffer & data )

◆ BinaryData() [3/5]

BinaryData::BinaryData ( FileMetadata * file,
const void * data,
size_t len )

◆ BinaryData() [4/5]

BinaryNinja::BinaryData::BinaryData ( FileMetadata * file,
const std::string & path )

◆ BinaryData() [5/5]

BinaryData::BinaryData ( FileMetadata * file,
FileAccessor * accessor )

Member Function Documentation

◆ CreateFromFilename()

Ref< BinaryData > BinaryData::CreateFromFilename ( FileMetadata * file,
const std::string & path )
static

Open a raw file from a given path.

This is lifted out into a method because this operation can fail.

Parameters
fileMetadata structure
pathPath to file to open
Returns
Reference to binary data if successful, nullptr reference otherwise

◆ CreateFromFile()

Ref< BinaryData > BinaryData::CreateFromFile ( FileMetadata * file,
FileAccessor * accessor )
static

Open a raw file from a given path.

This is lifted out into a method because this operation can fail.

Parameters
fileMetadata structure
accessorFile accessor object for reading file contents
Returns
Reference to binary data if successful, nullptr reference otherwise

◆ BinaryNinja::BinaryViewType

class BinaryNinja::BinaryViewType

The BinaryViewType object is used internally and should not be directly instantiated.

Public Member Functions

 BinaryViewType (const std::string &name, const std::string &longName)
 
virtual ~BinaryViewType ()
 
void RegisterArchitecture (uint32_t id, BNEndianness endian, Architecture *arch)
 Register an Architecture for this view type.
 
Ref< ArchitectureGetArchitecture (uint32_t id, BNEndianness endian)
 Get an Architecture for this BinaryViewType by id and endianness.
 
void RegisterPlatform (uint32_t id, Architecture *arch, Platform *platform)
 Register a Platform for this view type.
 
void RegisterDefaultPlatform (Architecture *arch, Platform *platform)
 Register a Platform as a default for this view type.
 
Ref< PlatformGetPlatform (uint32_t id, Architecture *arch)
 Get a platform by ID and architecture.
 
void RegisterPlatformRecognizer (uint64_t id, BNEndianness endian, const std::function< Ref< Platform >(BinaryView *view, Metadata *)> &callback)
 
Ref< PlatformRecognizePlatform (uint64_t id, BNEndianness endian, BinaryView *view, Metadata *metadata)
 
std::string GetName ()
 Get the name this platform was registered with.
 
std::string GetLongName ()
 Get the "Long Name" this platform was registered with.
 
virtual bool IsDeprecated ()
 
virtual Ref< BinaryViewCreate (BinaryView *data)=0
 Create a BinaryView for this BinaryViewType given the data from an existing BinaryView.
 
virtual Ref< BinaryViewParse (BinaryView *data)
 Create ephemeral BinaryView to generate information for preview.
 
virtual bool IsTypeValidForData (BinaryView *data)=0
 Check whether this BinaryViewType is valid for given data.
 
virtual bool IsForceLoadable ()
 Check whether this BinaryViewType can be forced to load a binary, even if IsTypeValidForData returns false.
 
virtual Ref< SettingsGetLoadSettingsForData (BinaryView *data)
 
Ref< SettingsGetDefaultLoadSettingsForData (BinaryView *data)
 
- Public Member Functions inherited from BinaryNinja::StaticCoreRefCountObject< BNBinaryViewType >
 StaticCoreRefCountObject ()
 
virtual ~StaticCoreRefCountObject ()
 
BNBinaryViewTypeGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Static Public Member Functions

static void Register (BinaryViewType *type)
 Register a BinaryViewType.
 
static Ref< BinaryViewTypeGetByName (const std::string &name)
 Get a BinaryViewType by name.
 
static std::vector< Ref< BinaryViewType > > GetViewTypes ()
 Get the list of registered View Types.
 
static std::vector< Ref< BinaryViewType > > GetViewTypesForData (BinaryView *data)
 Get the list of valid view types for a BinaryView.
 
static void RegisterArchitecture (const std::string &name, uint32_t id, BNEndianness endian, Architecture *arch)
 Register an Architecture for a specific view type.
 
static void RegisterPlatform (const std::string &name, uint32_t id, Architecture *arch, Platform *platform)
 Register a Platform for a specific view type.
 
static void RegisterDefaultPlatform (const std::string &name, Architecture *arch, Platform *platform)
 Register a Platform as a default for a specific view type.
 
static void RegisterBinaryViewFinalizationEvent (const std::function< void(BinaryView *view)> &callback)
 
static void RegisterBinaryViewInitialAnalysisCompletionEvent (const std::function< void(BinaryView *view)> &callback)
 
static void BinaryViewEventCallback (void *ctxt, BNBinaryView *view)
 
static BNPlatformPlatformRecognizerCallback (void *ctxt, BNBinaryView *view, BNMetadata *metadata)
 
- Static Public Member Functions inherited from BinaryNinja::StaticCoreRefCountObject< BNBinaryViewType >
static BNBinaryViewTypeGetObject (StaticCoreRefCountObject *obj)
 

Protected Member Functions

 BinaryViewType (BNBinaryViewType *type)
 

Static Protected Member Functions

static BNBinaryViewCreateCallback (void *ctxt, BNBinaryView *data)
 
static BNBinaryViewParseCallback (void *ctxt, BNBinaryView *data)
 
static bool IsValidCallback (void *ctxt, BNBinaryView *data)
 
static bool IsDeprecatedCallback (void *ctxt)
 
static bool IsForceLoadableCallback (void *ctxt)
 
static BNSettingsGetSettingsCallback (void *ctxt, BNBinaryView *data)
 

Protected Attributes

std::string m_nameForRegister
 
std::string m_longNameForRegister
 

Additional Inherited Members

- Public Attributes inherited from BinaryNinja::StaticCoreRefCountObject< BNBinaryViewType >
std::atomic< int > m_refs
 
BNBinaryViewTypem_object
 

Constructor & Destructor Documentation

◆ BinaryViewType() [1/2]

BinaryViewType::BinaryViewType ( BNBinaryViewType * type)
protected

◆ BinaryViewType() [2/2]

BinaryNinja::BinaryViewType::BinaryViewType ( const std::string & name,
const std::string & longName )

◆ ~BinaryViewType()

virtual BinaryNinja::BinaryViewType::~BinaryViewType ( )
inlinevirtual

Member Function Documentation

◆ CreateCallback()

BNBinaryView * BinaryViewType::CreateCallback ( void * ctxt,
BNBinaryView * data )
staticprotected

◆ ParseCallback()

BNBinaryView * BinaryViewType::ParseCallback ( void * ctxt,
BNBinaryView * data )
staticprotected

◆ IsValidCallback()

bool BinaryViewType::IsValidCallback ( void * ctxt,
BNBinaryView * data )
staticprotected

◆ IsDeprecatedCallback()

bool BinaryViewType::IsDeprecatedCallback ( void * ctxt)
staticprotected

◆ IsForceLoadableCallback()

bool BinaryViewType::IsForceLoadableCallback ( void * ctxt)
staticprotected

◆ GetSettingsCallback()

BNSettings * BinaryViewType::GetSettingsCallback ( void * ctxt,
BNBinaryView * data )
staticprotected

◆ Register()

void BinaryViewType::Register ( BinaryViewType * type)
static

Register a BinaryViewType.

Parameters
typeBinaryViewType to register

◆ GetByName()

Ref< BinaryViewType > BinaryViewType::GetByName ( const std::string & name)
static

Get a BinaryViewType by name.

Parameters
nameName of the registered BinaryViewType
Returns
The BinaryViewType, if one was registered

◆ GetViewTypes()

vector< Ref< BinaryViewType > > BinaryViewType::GetViewTypes ( )
static

Get the list of registered View Types.

Returns
Get the list of registered View Types

◆ GetViewTypesForData()

vector< Ref< BinaryViewType > > BinaryViewType::GetViewTypesForData ( BinaryView * data)
static

Get the list of valid view types for a BinaryView.

Parameters
dataBinaryView for a binary
Returns
List of valid view types

◆ RegisterArchitecture() [1/2]

static void BinaryNinja::BinaryViewType::RegisterArchitecture ( const std::string & name,
uint32_t id,
BNEndianness endian,
Architecture * arch )
static

Register an Architecture for a specific view type.

Parameters
nameName of the view type
idID of the architecture
endianEndianness of the architecture
archArchitecture

◆ RegisterArchitecture() [2/2]

void BinaryViewType::RegisterArchitecture ( uint32_t id,
BNEndianness endian,
Architecture * arch )

Register an Architecture for this view type.

Parameters
idID of the architecture
endianEndianness of the architecture
archArchitecture

◆ GetArchitecture()

Ref< Architecture > BinaryViewType::GetArchitecture ( uint32_t id,
BNEndianness endian )

Get an Architecture for this BinaryViewType by id and endianness.

Parameters
idID of the architecture
endianEndianness of the architecture
Returns
The architecture, if it was found

◆ RegisterPlatform() [1/2]

static void BinaryNinja::BinaryViewType::RegisterPlatform ( const std::string & name,
uint32_t id,
Architecture * arch,
Platform * platform )
static

Register a Platform for a specific view type.

Parameters
nameName of the BinaryViewType
idID of the platform
archArchitecture to register this platform with
platformThe Platform to register

◆ RegisterDefaultPlatform() [1/2]

static void BinaryNinja::BinaryViewType::RegisterDefaultPlatform ( const std::string & name,
Architecture * arch,
Platform * platform )
static

Register a Platform as a default for a specific view type.

Parameters
nameName of the BinaryViewType
archArchitecture to register this platform with
platformThe Platform to register

◆ RegisterPlatform() [2/2]

void BinaryViewType::RegisterPlatform ( uint32_t id,
Architecture * arch,
Platform * platform )

Register a Platform for this view type.

Parameters
idID of the platform
archArchitecture to register this platform with
platformThe Platform to register

◆ RegisterDefaultPlatform() [2/2]

void BinaryViewType::RegisterDefaultPlatform ( Architecture * arch,
Platform * platform )

Register a Platform as a default for this view type.

Parameters
archArchitecture to register this platform with
platformThe Platform to register

◆ GetPlatform()

Ref< Platform > BinaryViewType::GetPlatform ( uint32_t id,
Architecture * arch )

Get a platform by ID and architecture.

Parameters
idID of the platform
archArchitecture of the Platform
Returns
The Platform, if it was found.

◆ RegisterPlatformRecognizer()

void BinaryViewType::RegisterPlatformRecognizer ( uint64_t id,
BNEndianness endian,
const std::function< Ref< Platform >(BinaryView *view, Metadata *)> & callback )

◆ RecognizePlatform()

Ref< Platform > BinaryViewType::RecognizePlatform ( uint64_t id,
BNEndianness endian,
BinaryView * view,
Metadata * metadata )

◆ GetName()

string BinaryViewType::GetName ( )

Get the name this platform was registered with.

Returns
The name of the platform

◆ GetLongName()

string BinaryViewType::GetLongName ( )

Get the "Long Name" this platform was registered with.

Returns
The "Long Name" this platform was registered with

◆ IsDeprecated()

bool BinaryViewType::IsDeprecated ( )
virtual

◆ Create()

virtual Ref< BinaryView > BinaryNinja::BinaryViewType::Create ( BinaryView * data)
pure virtual

Create a BinaryView for this BinaryViewType given the data from an existing BinaryView.

Parameters
dataAn existing BinaryView, typically with the Raw type
Returns
The BinaryView created by this BinaryViewType

Implemented in BinaryNinja::CoreBinaryViewType.

◆ Parse()

Ref< BinaryView > BinaryViewType::Parse ( BinaryView * data)
virtual

Create ephemeral BinaryView to generate information for preview.

Parameters
dataAn existing BinaryView, typically with the Raw type
Returns
The BinaryView created by this BinaryViewType

Reimplemented in BinaryNinja::CoreBinaryViewType.

◆ IsTypeValidForData()

virtual bool BinaryNinja::BinaryViewType::IsTypeValidForData ( BinaryView * data)
pure virtual

Check whether this BinaryViewType is valid for given data.

Parameters
dataAn existing BinaryView, typically with the Raw type
Returns
Whether this BinaryViewType is valid for given data

Implemented in BinaryNinja::CoreBinaryViewType.

◆ IsForceLoadable()

bool BinaryViewType::IsForceLoadable ( )
virtual

Check whether this BinaryViewType can be forced to load a binary, even if IsTypeValidForData returns false.

Returns
Whether this BinaryViewType can be forced to load a binary

Reimplemented in BinaryNinja::CoreBinaryViewType.

◆ GetLoadSettingsForData()

Ref< Settings > BinaryViewType::GetLoadSettingsForData ( BinaryView * data)
virtual

◆ GetDefaultLoadSettingsForData()

Ref< Settings > BinaryViewType::GetDefaultLoadSettingsForData ( BinaryView * data)

◆ RegisterBinaryViewFinalizationEvent()

void BinaryViewType::RegisterBinaryViewFinalizationEvent ( const std::function< void(BinaryView *view)> & callback)
static

◆ RegisterBinaryViewInitialAnalysisCompletionEvent()

void BinaryViewType::RegisterBinaryViewInitialAnalysisCompletionEvent ( const std::function< void(BinaryView *view)> & callback)
static

◆ BinaryViewEventCallback()

void BinaryViewType::BinaryViewEventCallback ( void * ctxt,
BNBinaryView * view )
static

◆ PlatformRecognizerCallback()

BNPlatform * BinaryViewType::PlatformRecognizerCallback ( void * ctxt,
BNBinaryView * view,
BNMetadata * metadata )
static

Member Data Documentation

◆ m_nameForRegister

std::string BinaryNinja::BinaryViewType::m_nameForRegister
protected

◆ m_longNameForRegister

std::string BinaryNinja::BinaryViewType::m_longNameForRegister
protected

◆ BinaryNinja::CoreBinaryViewType

class BinaryNinja::CoreBinaryViewType

Public Member Functions

 CoreBinaryViewType (BNBinaryViewType *type)
 
virtual Ref< BinaryViewCreate (BinaryView *data) override
 Create a BinaryView for this BinaryViewType given the data from an existing BinaryView.
 
virtual Ref< BinaryViewParse (BinaryView *data) override
 Create ephemeral BinaryView to generate information for preview.
 
virtual bool IsTypeValidForData (BinaryView *data) override
 Check whether this BinaryViewType is valid for given data.
 
virtual bool IsDeprecated () override
 
virtual bool IsForceLoadable () override
 Check whether this BinaryViewType can be forced to load a binary, even if IsTypeValidForData returns false.
 
virtual Ref< SettingsGetLoadSettingsForData (BinaryView *data) override
 
- Public Member Functions inherited from BinaryNinja::BinaryViewType
 BinaryViewType (const std::string &name, const std::string &longName)
 
virtual ~BinaryViewType ()
 
void RegisterArchitecture (uint32_t id, BNEndianness endian, Architecture *arch)
 Register an Architecture for this view type.
 
Ref< ArchitectureGetArchitecture (uint32_t id, BNEndianness endian)
 Get an Architecture for this BinaryViewType by id and endianness.
 
void RegisterPlatform (uint32_t id, Architecture *arch, Platform *platform)
 Register a Platform for this view type.
 
void RegisterDefaultPlatform (Architecture *arch, Platform *platform)
 Register a Platform as a default for this view type.
 
Ref< PlatformGetPlatform (uint32_t id, Architecture *arch)
 Get a platform by ID and architecture.
 
void RegisterPlatformRecognizer (uint64_t id, BNEndianness endian, const std::function< Ref< Platform >(BinaryView *view, Metadata *)> &callback)
 
Ref< PlatformRecognizePlatform (uint64_t id, BNEndianness endian, BinaryView *view, Metadata *metadata)
 
std::string GetName ()
 Get the name this platform was registered with.
 
std::string GetLongName ()
 Get the "Long Name" this platform was registered with.
 
Ref< SettingsGetDefaultLoadSettingsForData (BinaryView *data)
 
- Public Member Functions inherited from BinaryNinja::StaticCoreRefCountObject< BNBinaryViewType >
 StaticCoreRefCountObject ()
 
virtual ~StaticCoreRefCountObject ()
 
BNBinaryViewTypeGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Additional Inherited Members

- Static Public Member Functions inherited from BinaryNinja::BinaryViewType
static void Register (BinaryViewType *type)
 Register a BinaryViewType.
 
static Ref< BinaryViewTypeGetByName (const std::string &name)
 Get a BinaryViewType by name.
 
static std::vector< Ref< BinaryViewType > > GetViewTypes ()
 Get the list of registered View Types.
 
static std::vector< Ref< BinaryViewType > > GetViewTypesForData (BinaryView *data)
 Get the list of valid view types for a BinaryView.
 
static void RegisterArchitecture (const std::string &name, uint32_t id, BNEndianness endian, Architecture *arch)
 Register an Architecture for a specific view type.
 
static void RegisterPlatform (const std::string &name, uint32_t id, Architecture *arch, Platform *platform)
 Register a Platform for a specific view type.
 
static void RegisterDefaultPlatform (const std::string &name, Architecture *arch, Platform *platform)
 Register a Platform as a default for a specific view type.
 
static void RegisterBinaryViewFinalizationEvent (const std::function< void(BinaryView *view)> &callback)
 
static void RegisterBinaryViewInitialAnalysisCompletionEvent (const std::function< void(BinaryView *view)> &callback)
 
static void BinaryViewEventCallback (void *ctxt, BNBinaryView *view)
 
static BNPlatformPlatformRecognizerCallback (void *ctxt, BNBinaryView *view, BNMetadata *metadata)
 
- Static Public Member Functions inherited from BinaryNinja::StaticCoreRefCountObject< BNBinaryViewType >
static BNBinaryViewTypeGetObject (StaticCoreRefCountObject *obj)
 
- Public Attributes inherited from BinaryNinja::StaticCoreRefCountObject< BNBinaryViewType >
std::atomic< int > m_refs
 
BNBinaryViewTypem_object
 
- Protected Member Functions inherited from BinaryNinja::BinaryViewType
 BinaryViewType (BNBinaryViewType *type)
 
- Static Protected Member Functions inherited from BinaryNinja::BinaryViewType
static BNBinaryViewCreateCallback (void *ctxt, BNBinaryView *data)
 
static BNBinaryViewParseCallback (void *ctxt, BNBinaryView *data)
 
static bool IsValidCallback (void *ctxt, BNBinaryView *data)
 
static bool IsDeprecatedCallback (void *ctxt)
 
static bool IsForceLoadableCallback (void *ctxt)
 
static BNSettingsGetSettingsCallback (void *ctxt, BNBinaryView *data)
 
- Protected Attributes inherited from BinaryNinja::BinaryViewType
std::string m_nameForRegister
 
std::string m_longNameForRegister
 

Constructor & Destructor Documentation

◆ CoreBinaryViewType()

CoreBinaryViewType::CoreBinaryViewType ( BNBinaryViewType * type)

Member Function Documentation

◆ Create()

Ref< BinaryView > CoreBinaryViewType::Create ( BinaryView * data)
overridevirtual

Create a BinaryView for this BinaryViewType given the data from an existing BinaryView.

Parameters
dataAn existing BinaryView, typically with the Raw type
Returns
The BinaryView created by this BinaryViewType

Implements BinaryNinja::BinaryViewType.

◆ Parse()

Ref< BinaryView > CoreBinaryViewType::Parse ( BinaryView * data)
overridevirtual

Create ephemeral BinaryView to generate information for preview.

Parameters
dataAn existing BinaryView, typically with the Raw type
Returns
The BinaryView created by this BinaryViewType

Reimplemented from BinaryNinja::BinaryViewType.

◆ IsTypeValidForData()

bool CoreBinaryViewType::IsTypeValidForData ( BinaryView * data)
overridevirtual

Check whether this BinaryViewType is valid for given data.

Parameters
dataAn existing BinaryView, typically with the Raw type
Returns
Whether this BinaryViewType is valid for given data

Implements BinaryNinja::BinaryViewType.

◆ IsDeprecated()

bool CoreBinaryViewType::IsDeprecated ( )
overridevirtual

Reimplemented from BinaryNinja::BinaryViewType.

◆ IsForceLoadable()

bool CoreBinaryViewType::IsForceLoadable ( )
overridevirtual

Check whether this BinaryViewType can be forced to load a binary, even if IsTypeValidForData returns false.

Returns
Whether this BinaryViewType can be forced to load a binary

Reimplemented from BinaryNinja::BinaryViewType.

◆ GetLoadSettingsForData()

Ref< Settings > CoreBinaryViewType::GetLoadSettingsForData ( BinaryView * data)
overridevirtual

Reimplemented from BinaryNinja::BinaryViewType.

◆ BinaryNinja::ReadException

class BinaryNinja::ReadException

Thrown whenever a read is performed out of bounds.

Public Member Functions

 ReadException ()
 
- Public Member Functions inherited from BinaryNinja::ExceptionWithStackTrace
 ExceptionWithStackTrace (const std::string &message)
 
 ExceptionWithStackTrace (std::exception_ptr exc1, std::exception_ptr exc2)
 
const char * what () const noexcept override
 

Additional Inherited Members

- Public Attributes inherited from BinaryNinja::ExceptionWithStackTrace
std::string m_originalMessage
 
std::string m_message
 
std::string m_stackTrace
 

Constructor & Destructor Documentation

◆ ReadException()

BinaryNinja::ReadException::ReadException ( )
inline

◆ BinaryNinja::BinaryReader

class BinaryNinja::BinaryReader

BinaryReader is a convenience class for reading binary data.

Public Member Functions

 BinaryReader (BinaryView *data, BNEndianness endian=LittleEndian)
 Create a BinaryReader instance given a BinaryView and endianness.
 
 ~BinaryReader ()
 
BNEndianness GetEndianness () const
 Get the endianness set for this reader.
 
void SetEndianness (BNEndianness endian)
 Set the endianness for this reader.
 
void Read (void *dest, size_t len)
 Read from the current cursor position into buffer `dest`.
 
DataBuffer Read (size_t len)
 Read from the current cursor position into a DataBuffer.
 
template<typename T >
Read ()
 
template<typename T >
std::vector< T > ReadVector (size_t count)
 
std::string ReadString (size_t len)
 Read a string of fixed length from the current cursor position.
 
std::string ReadCString (size_t maxLength=-1)
 Read a null-terminated string from the current cursor position.
 
uint8_t Read8 ()
 Read a uint8_t from the current cursor position and advance the cursor by 1 byte.
 
uint16_t Read16 ()
 Read a uint16_t from the current cursor position and advance the cursor by 2 bytes.
 
uint32_t Read32 ()
 Read a uint32_t from the current cursor position and advance the cursor by 4 bytes.
 
uint64_t Read64 ()
 Read a uint64_t from the current cursor position and advance the cursor by 8 bytes.
 
uint64_t ReadPointer ()
 Read a pointer (size of BinaryView::GetAddressSize()) from the current cursor position and advance and advance it that many bytes.
 
uint16_t ReadLE16 ()
 Read a uint16_t from the current cursor position, explicitly as a little endian value, and advance the cursor by 4 bytes.
 
uint32_t ReadLE32 ()
 Read a uint16_t from the current cursor position, explicitly as a little endian value, and advance the cursor by 4 bytes.
 
uint64_t ReadLE64 ()
 Read a uint16_t from the current cursor position, explicitly as a little endian value, and advance the cursor by 4 bytes.
 
uint64_t ReadLEPointer ()
 Read a pointer (size of BinaryView::GetAddressSize()) as little-endian from the current cursor position and advance and advance it that many bytes.
 
uint16_t ReadBE16 ()
 Read a uint16_t from the current cursor position, explicitly as a big endian value, and advance the cursor by 4 bytes.
 
uint32_t ReadBE32 ()
 Read a uint16_t from the current cursor position, explicitly as a big endian value, and advance the cursor by 4 bytes.
 
uint64_t ReadBE64 ()
 Read a uint16_t from the current cursor position, explicitly as a big endian value, and advance the cursor by 4 bytes.
 
uint64_t ReadBEPointer ()
 Read a pointer (size of BinaryView::GetAddressSize()) as big-endian from the current cursor position and advance and advance it that many bytes.
 
bool TryRead (void *dest, size_t len)
 Try reading a value, returning false whenever that read fails.
 
bool TryRead (DataBuffer &dest, size_t len)
 Try reading a value into a databuffer.
 
bool TryReadString (std::string &dest, size_t len)
 Try reading a string.
 
bool TryRead8 (uint8_t &result)
 Try reading a uint8_t.
 
bool TryRead16 (uint16_t &result)
 Try reading a uint16_t.
 
bool TryRead32 (uint32_t &result)
 Try reading a uint32_t.
 
bool TryRead64 (uint64_t &result)
 Try reading a uint64_t.
 
bool TryReadPointer (uint64_t &result)
 Try reading a pointer (size of BinaryView::GetAddressSize())
 
bool TryReadLE16 (uint16_t &result)
 Try reading a uint16_t, explicitly as little endian.
 
bool TryReadLE32 (uint32_t &result)
 Try reading a uint32_t, explicitly as little endian.
 
bool TryReadLE64 (uint64_t &result)
 Try reading a uint64_t, explicitly as little endian.
 
bool TryReadLEPointer (uint64_t &result)
 Try reading a pointer (size of BinaryView::GetAddressSize()) as little-endian.
 
bool TryReadBE16 (uint16_t &result)
 Try reading a uint16_t, explicitly as big endian.
 
bool TryReadBE32 (uint32_t &result)
 Try reading a uint32_t, explicitly as big endian.
 
bool TryReadBE64 (uint64_t &result)
 Try reading a uint64_t, explicitly as big endian.
 
bool TryReadBEPointer (uint64_t &result)
 Try reading a pointer (size of BinaryView::GetAddressSize()) as big-endian.
 
uint64_t GetOffset () const
 Get the current cursor position.
 
void Seek (uint64_t offset)
 Set the cursor position.
 
void SeekRelative (int64_t offset)
 Set the cursor position, relative to the current position.
 
uint64_t GetVirtualBase ()
 Gets the virtual base offset for the stream.
 
void SetVirtualBase (uint64_t base)
 Sets a virtual base offset for the stream.
 
bool IsEndOfFile () const
 Whether the current cursor position is at the end of the file.
 
template<typename T >
vector< T > ReadVector (size_t count)
 

Constructor & Destructor Documentation

◆ BinaryReader()

BinaryReader::BinaryReader ( BinaryView * data,
BNEndianness endian = LittleEndian )

Create a BinaryReader instance given a BinaryView and endianness.

Parameters
dataBinaryView to read from
endianByte order to read with. One of LittleEndian, BigEndian

◆ ~BinaryReader()

BinaryReader::~BinaryReader ( )

Member Function Documentation

◆ GetEndianness()

BNEndianness BinaryReader::GetEndianness ( ) const

Get the endianness set for this reader.

Returns
The endianness set for this reader.

◆ SetEndianness()

void BinaryReader::SetEndianness ( BNEndianness endian)

Set the endianness for this reader.

Parameters
endianByte order to read with. One of LittleEndian, BigEndian

◆ Read() [1/3]

void BinaryReader::Read ( void * dest,
size_t len )

Read from the current cursor position into buffer `dest`.

Exceptions
ReadException
Parameters
destAddress to write the read bytes to
lenNumber of bytes to write

◆ Read() [2/3]

DataBuffer BinaryReader::Read ( size_t len)

Read from the current cursor position into a DataBuffer.

Exceptions
ReadException
Parameters
lenNumber of bytes to read
Returns
DataBuffer containing the bytes read

◆ Read() [3/3]

template<typename T >
T BinaryReader::Read ( )

◆ ReadVector() [1/2]

template<typename T >
std::vector< T > BinaryNinja::BinaryReader::ReadVector ( size_t count)

◆ ReadString()

string BinaryReader::ReadString ( size_t len)

Read a string of fixed length from the current cursor position.

Exceptions
ReadException
Parameters
lenLength of the string
Returns
the string

◆ ReadCString()

string BinaryReader::ReadCString ( size_t maxLength = -1)

Read a null-terminated string from the current cursor position.

Exceptions
ReadException
Parameters
maxLengthMaximum length of the string, default is no limit (-1)
Returns
the string

◆ Read8()

uint8_t BinaryReader::Read8 ( )

Read a uint8_t from the current cursor position and advance the cursor by 1 byte.

Exceptions
ReadException
Returns
The read value

◆ Read16()

uint16_t BinaryReader::Read16 ( )

Read a uint16_t from the current cursor position and advance the cursor by 2 bytes.

Exceptions
ReadException
Returns
The read value

◆ Read32()

uint32_t BinaryReader::Read32 ( )

Read a uint32_t from the current cursor position and advance the cursor by 4 bytes.

Exceptions
ReadException
Returns
The read value

◆ Read64()

uint64_t BinaryReader::Read64 ( )

Read a uint64_t from the current cursor position and advance the cursor by 8 bytes.

Exceptions
ReadException
Returns
The read value

◆ ReadPointer()

uint64_t BinaryReader::ReadPointer ( )

Read a pointer (size of BinaryView::GetAddressSize()) from the current cursor position and advance and advance it that many bytes.

Exceptions
ReadException
Returns
The value that was read

◆ ReadLE16()

uint16_t BinaryReader::ReadLE16 ( )

Read a uint16_t from the current cursor position, explicitly as a little endian value, and advance the cursor by 4 bytes.

Exceptions
ReadException
Returns
The read value

◆ ReadLE32()

uint32_t BinaryReader::ReadLE32 ( )

Read a uint16_t from the current cursor position, explicitly as a little endian value, and advance the cursor by 4 bytes.

Exceptions
ReadException
Returns
The read value

◆ ReadLE64()

uint64_t BinaryReader::ReadLE64 ( )

Read a uint16_t from the current cursor position, explicitly as a little endian value, and advance the cursor by 4 bytes.

Exceptions
ReadException
Returns
The read value

◆ ReadLEPointer()

uint64_t BinaryReader::ReadLEPointer ( )

Read a pointer (size of BinaryView::GetAddressSize()) as little-endian from the current cursor position and advance and advance it that many bytes.

Exceptions
ReadException
Returns
The value that was read

◆ ReadBE16()

uint16_t BinaryReader::ReadBE16 ( )

Read a uint16_t from the current cursor position, explicitly as a big endian value, and advance the cursor by 4 bytes.

Exceptions
ReadException
Returns
The read value

◆ ReadBE32()

uint32_t BinaryReader::ReadBE32 ( )

Read a uint16_t from the current cursor position, explicitly as a big endian value, and advance the cursor by 4 bytes.

Exceptions
ReadException
Returns
The read value

◆ ReadBE64()

uint64_t BinaryReader::ReadBE64 ( )

Read a uint16_t from the current cursor position, explicitly as a big endian value, and advance the cursor by 4 bytes.

Exceptions
ReadException
Returns
The read value

◆ ReadBEPointer()

uint64_t BinaryReader::ReadBEPointer ( )

Read a pointer (size of BinaryView::GetAddressSize()) as big-endian from the current cursor position and advance and advance it that many bytes.

Exceptions
ReadException
Returns
The value that was read

◆ TryRead() [1/2]

bool BinaryReader::TryRead ( void * dest,
size_t len )

Try reading a value, returning false whenever that read fails.

Parameters
destAddress to write the bytes to
lenNumber of bytes to read
Returns
Whether the read succeeded

◆ TryRead() [2/2]

bool BinaryReader::TryRead ( DataBuffer & dest,
size_t len )

Try reading a value into a databuffer.

Parameters
destReference to a DataBuffer to write to
lenAmount of bytes to read
Returns
Whether the read succeeded

◆ TryReadString()

bool BinaryReader::TryReadString ( std::string & dest,
size_t len )

Try reading a string.

Parameters
destReference to a string to write to
lenLength of the string to be read
Returns
Whether the read succeeded

◆ TryRead8()

bool BinaryReader::TryRead8 ( uint8_t & result)

Try reading a uint8_t.

Parameters
resultReference to a uint8_t to write to
Returns
Whether the read succeeded.

◆ TryRead16()

bool BinaryReader::TryRead16 ( uint16_t & result)

Try reading a uint16_t.

Parameters
resultReference to a uint16_t to write to
Returns
Whether the read succeeded.

◆ TryRead32()

bool BinaryReader::TryRead32 ( uint32_t & result)

Try reading a uint32_t.

Parameters
resultReference to a uint32_t to write to
Returns
Whether the read succeeded.

◆ TryRead64()

bool BinaryReader::TryRead64 ( uint64_t & result)

Try reading a uint64_t.

Parameters
resultReference to a uint64_t to write to
Returns
Whether the read succeeded.

◆ TryReadPointer()

bool BinaryReader::TryReadPointer ( uint64_t & result)

Try reading a pointer (size of BinaryView::GetAddressSize())

Parameters
resultReference to a uint64_t to write to
Returns
Whether the read succeeded.

◆ TryReadLE16()

bool BinaryReader::TryReadLE16 ( uint16_t & result)

Try reading a uint16_t, explicitly as little endian.

Parameters
resultReference to a uint16_t to write to
Returns
Whether the read succeeded.

◆ TryReadLE32()

bool BinaryReader::TryReadLE32 ( uint32_t & result)

Try reading a uint32_t, explicitly as little endian.

Parameters
resultReference to a uint32_t to write to
Returns
Whether the read succeeded.

◆ TryReadLE64()

bool BinaryReader::TryReadLE64 ( uint64_t & result)

Try reading a uint64_t, explicitly as little endian.

Parameters
resultReference to a uint64_t to write to
Returns
Whether the read succeeded.

◆ TryReadLEPointer()

bool BinaryReader::TryReadLEPointer ( uint64_t & result)

Try reading a pointer (size of BinaryView::GetAddressSize()) as little-endian.

Parameters
resultReference to a uint64_t to write to
Returns
Whether the read succeeded.

◆ TryReadBE16()

bool BinaryReader::TryReadBE16 ( uint16_t & result)

Try reading a uint16_t, explicitly as big endian.

Parameters
resultReference to a uint16_t to write to
Returns
Whether the read succeeded.

◆ TryReadBE32()

bool BinaryReader::TryReadBE32 ( uint32_t & result)

Try reading a uint32_t, explicitly as big endian.

Parameters
resultReference to a uint32_t to write to
Returns
Whether the read succeeded.

◆ TryReadBE64()

bool BinaryReader::TryReadBE64 ( uint64_t & result)

Try reading a uint64_t, explicitly as big endian.

Parameters
resultReference to a uint64_t to write to
Returns
Whether the read succeeded.

◆ TryReadBEPointer()

bool BinaryReader::TryReadBEPointer ( uint64_t & result)

Try reading a pointer (size of BinaryView::GetAddressSize()) as big-endian.

Parameters
resultReference to a uint64_t to write to
Returns
Whether the read succeeded.

◆ GetOffset()

uint64_t BinaryReader::GetOffset ( ) const

Get the current cursor position.

Returns
The current cursor position

◆ Seek()

void BinaryReader::Seek ( uint64_t offset)

Set the cursor position.

Parameters
offsetThe new cursor position

◆ SeekRelative()

void BinaryReader::SeekRelative ( int64_t offset)

Set the cursor position, relative to the current position.

Parameters
offsetOffset to the current cursor position

◆ GetVirtualBase()

uint64_t BinaryReader::GetVirtualBase ( )

Gets the virtual base offset for the stream.

Returns
The current virtual base

◆ SetVirtualBase()

void BinaryReader::SetVirtualBase ( uint64_t base)

Sets a virtual base offset for the stream.

Parameters
baseThe new virtual base

◆ IsEndOfFile()

bool BinaryReader::IsEndOfFile ( ) const

Whether the current cursor position is at the end of the file.

◆ ReadVector() [2/2]

template<typename T >
vector< T > BinaryNinja::BinaryReader::ReadVector ( size_t count)

◆ BinaryNinja::WriteException

class BinaryNinja::WriteException

Raised whenever a write is performed out of bounds.

Public Member Functions

 WriteException ()
 
- Public Member Functions inherited from BinaryNinja::ExceptionWithStackTrace
 ExceptionWithStackTrace (const std::string &message)
 
 ExceptionWithStackTrace (std::exception_ptr exc1, std::exception_ptr exc2)
 
const char * what () const noexcept override
 

Additional Inherited Members

- Public Attributes inherited from BinaryNinja::ExceptionWithStackTrace
std::string m_originalMessage
 
std::string m_message
 
std::string m_stackTrace
 

Constructor & Destructor Documentation

◆ WriteException()

BinaryNinja::WriteException::WriteException ( )
inline

◆ BinaryNinja::BinaryWriter

class BinaryNinja::BinaryWriter

BinaryWriter is a convenience class for writing binary data.

Public Member Functions

 BinaryWriter (BinaryView *data, BNEndianness endian=LittleEndian)
 Create a BinaryWriter instance given a BinaryView and endianness.
 
 ~BinaryWriter ()
 
BNEndianness GetEndianness () const
 Get the endianness set for this writer.
 
void SetEndianness (BNEndianness endian)
 Set the endianness for this writer.
 
void Write (const void *src, size_t len)
 Write bytes from an address to the current cursor position.
 
void Write (const DataBuffer &buf)
 Write the contents of a DataBuffer to the current cursor position.
 
void Write (const std::string &str)
 Write the contents of a string to the current cursor position.
 
void Write8 (uint8_t val)
 Write a uint8_t to the current cursor position.
 
void Write16 (uint16_t val)
 Write a uint16_t to the current cursor position.
 
void Write32 (uint32_t val)
 Write a uint32_t to the current cursor position.
 
void Write64 (uint64_t val)
 Write a uint64_t to the current cursor position.
 
void WriteLE16 (uint16_t val)
 Write a uint16_t to the current cursor position, explicitly as little endian.
 
void WriteLE32 (uint32_t val)
 Write a uint32_t to the current cursor position, explicitly as little endian.
 
void WriteLE64 (uint64_t val)
 Write a uint64_t to the current cursor position, explicitly as little endian.
 
void WriteBE16 (uint16_t val)
 Write a uint16_t to the current cursor position, explicitly as big endian.
 
void WriteBE32 (uint32_t val)
 Write a uint32_t to the current cursor position, explicitly as big endian.
 
void WriteBE64 (uint64_t val)
 Write a uint64_t to the current cursor position, explicitly as big endian.
 
bool TryWrite (const void *src, size_t len)
 Write bytes from an address to the current cursor position.
 
bool TryWrite (const DataBuffer &buf)
 Write from a DataBuffer to the current cursor position.
 
bool TryWrite (const std::string &str)
 Write a string to the current cursor position.
 
bool TryWrite8 (uint8_t val)
 Write a uint8_t to the current cursor position.
 
bool TryWrite16 (uint16_t val)
 Write a uint16_t to the current cursor position.
 
bool TryWrite32 (uint32_t val)
 Write a uint32_t to the current cursor position.
 
bool TryWrite64 (uint64_t val)
 Write a uint64_t to the current cursor position.
 
bool TryWriteLE16 (uint16_t val)
 
bool TryWriteLE32 (uint32_t val)
 
bool TryWriteLE64 (uint64_t val)
 
bool TryWriteBE16 (uint16_t val)
 
bool TryWriteBE32 (uint32_t val)
 
bool TryWriteBE64 (uint64_t val)
 
uint64_t GetOffset () const
 Get the current cursor position.
 
void Seek (uint64_t offset)
 Set the current cursor position.
 
void SeekRelative (int64_t offset)
 Set the cursor position relative to the current cursor position.
 

Constructor & Destructor Documentation

◆ BinaryWriter()

BinaryWriter::BinaryWriter ( BinaryView * data,
BNEndianness endian = LittleEndian )

Create a BinaryWriter instance given a BinaryView and endianness.

Parameters
dataBinaryView to write to
endianByte order to write with. One of LittleEndian, BigEndian

◆ ~BinaryWriter()

BinaryWriter::~BinaryWriter ( )

Member Function Documentation

◆ GetEndianness()

BNEndianness BinaryWriter::GetEndianness ( ) const

Get the endianness set for this writer.

Returns
The endianness set for this writer.

◆ SetEndianness()

void BinaryWriter::SetEndianness ( BNEndianness endian)

Set the endianness for this writer.

Parameters
endianByte order to write with. One of LittleEndian, BigEndian

◆ Write() [1/3]

void BinaryWriter::Write ( const void * src,
size_t len )

Write bytes from an address to the current cursor position.

Exceptions
WriteExceptionon out of bounds write
Parameters
srcAddress to read the bytes from
lenAmount of bytes to write

◆ Write() [2/3]

void BinaryWriter::Write ( const DataBuffer & buf)

Write the contents of a DataBuffer to the current cursor position.

Exceptions
WriteExceptionon out of bounds write
Parameters
bufDataBuffer to write from

◆ Write() [3/3]

void BinaryNinja::BinaryWriter::Write ( const std::string & str)

Write the contents of a string to the current cursor position.

Exceptions
WriteExceptionon out of bounds write
Parameters
strString to write

◆ Write8()

void BinaryWriter::Write8 ( uint8_t val)

Write a uint8_t to the current cursor position.

Exceptions
WriteExceptionon out of bounds write
Parameters
valuint8_t to write

◆ Write16()

void BinaryWriter::Write16 ( uint16_t val)

Write a uint16_t to the current cursor position.

Exceptions
WriteExceptionon out of bounds write
Parameters
valuint16_t to write

◆ Write32()

void BinaryWriter::Write32 ( uint32_t val)

Write a uint32_t to the current cursor position.

Exceptions
WriteExceptionon out of bounds write
Parameters
valuint32_t to write

◆ Write64()

void BinaryWriter::Write64 ( uint64_t val)

Write a uint64_t to the current cursor position.

Exceptions
WriteExceptionon out of bounds write
Parameters
valuint64_t to write

◆ WriteLE16()

void BinaryWriter::WriteLE16 ( uint16_t val)

Write a uint16_t to the current cursor position, explicitly as little endian.

Exceptions
WriteExceptionon out of bounds write
Parameters
valuint16_t to write

◆ WriteLE32()

void BinaryWriter::WriteLE32 ( uint32_t val)

Write a uint32_t to the current cursor position, explicitly as little endian.

Exceptions
WriteExceptionon out of bounds write
Parameters
valuint32_t to write

◆ WriteLE64()

void BinaryWriter::WriteLE64 ( uint64_t val)

Write a uint64_t to the current cursor position, explicitly as little endian.

Exceptions
WriteExceptionon out of bounds write
Parameters
valuint64_t to write

◆ WriteBE16()

void BinaryWriter::WriteBE16 ( uint16_t val)

Write a uint16_t to the current cursor position, explicitly as big endian.

Exceptions
WriteExceptionon out of bounds write
Parameters
valuint16_t to write

◆ WriteBE32()

void BinaryWriter::WriteBE32 ( uint32_t val)

Write a uint32_t to the current cursor position, explicitly as big endian.

Exceptions
WriteExceptionon out of bounds write
Parameters
valuint32_t to write

◆ WriteBE64()

void BinaryWriter::WriteBE64 ( uint64_t val)

Write a uint64_t to the current cursor position, explicitly as big endian.

Exceptions
WriteExceptionon out of bounds write
Parameters
valuint64_t to write

◆ TryWrite() [1/3]

bool BinaryWriter::TryWrite ( const void * src,
size_t len )

Write bytes from an address to the current cursor position.

Parameters
srcAddress to read the bytes from
lenAmount of bytes to write
Returns
Whether the write succeeded

◆ TryWrite() [2/3]

bool BinaryWriter::TryWrite ( const DataBuffer & buf)

Write from a DataBuffer to the current cursor position.

Parameters
bufDataBuffer to write from
Returns
Whether the write succeeded

◆ TryWrite() [3/3]

bool BinaryNinja::BinaryWriter::TryWrite ( const std::string & str)

Write a string to the current cursor position.

Parameters
strString to write
Returns
Whether the write succeeded

◆ TryWrite8()

bool BinaryWriter::TryWrite8 ( uint8_t val)

Write a uint8_t to the current cursor position.

Parameters
valuint8_t to write
Returns
Whether the write succeeded

◆ TryWrite16()

bool BinaryWriter::TryWrite16 ( uint16_t val)

Write a uint16_t to the current cursor position.

Parameters
valuint16_t to write
Returns
Whether the write succeeded

◆ TryWrite32()

bool BinaryWriter::TryWrite32 ( uint32_t val)

Write a uint32_t to the current cursor position.

Parameters
valuint32_t to write
Returns
Whether the write succeeded

◆ TryWrite64()

bool BinaryWriter::TryWrite64 ( uint64_t val)

Write a uint64_t to the current cursor position.

Parameters
valuint64_t to write
Returns
Whether the write succeeded

◆ TryWriteLE16()

bool BinaryWriter::TryWriteLE16 ( uint16_t val)

◆ TryWriteLE32()

bool BinaryWriter::TryWriteLE32 ( uint32_t val)

◆ TryWriteLE64()

bool BinaryWriter::TryWriteLE64 ( uint64_t val)

◆ TryWriteBE16()

bool BinaryWriter::TryWriteBE16 ( uint16_t val)

◆ TryWriteBE32()

bool BinaryWriter::TryWriteBE32 ( uint32_t val)

◆ TryWriteBE64()

bool BinaryWriter::TryWriteBE64 ( uint64_t val)

◆ GetOffset()

uint64_t BinaryWriter::GetOffset ( ) const

Get the current cursor position.

Returns
The current cursor position

◆ Seek()

void BinaryWriter::Seek ( uint64_t offset)

Set the current cursor position.

Parameters
offsetThe new cursor position

◆ SeekRelative()

void BinaryWriter::SeekRelative ( int64_t offset)

Set the cursor position relative to the current cursor position.

Parameters
offsetOffset to the current cursor position

◆ BinaryNinja::TypeArchive

class BinaryNinja::TypeArchive

Type Archives are a collection of types which can be shared between different analysis sessions and are backed by a database file on disk.

Their types can be modified, and a history of previous versions of types is stored in snapshots in the archive.

Public Member Functions

 TypeArchive (BNTypeArchive *archive)
 
std::string GetId () const
 Get the unique id associated with this type archive.
 
std::string GetPath () const
 Get the path to the type archive.
 
Ref< PlatformGetPlatform () const
 Get the associated Platform for a Type Archive.
 
std::string GetCurrentSnapshotId () const
 Get the id of the current snapshot in the type archive.
 
void SetCurrentSnapshot (const std::string &id)
 Revert the type archive's current snapshot to the given snapshot.
 
std::vector< std::string > GetAllSnapshotIds () const
 Get a list of every snapshot's id.
 
std::vector< std::string > GetSnapshotParentIds (const std::string &id) const
 Get the ids of the parents to the given snapshot.
 
std::vector< std::string > GetSnapshotChildIds (const std::string &id) const
 Get the ids of the children to the given snapshot.
 
class TypeContainer GetTypeContainer () const
 Get the TypeContainer interface for this Type Archive, presenting types at the current snapshot in the archive.
 
bool AddTypes (const std::vector< QualifiedNameAndType > &types)
 Add named types to the type archive.
 
bool RenameType (const std::string &id, const QualifiedName &newName)
 Change the name of an existing type in the type archive.
 
bool DeleteType (const std::string &id)
 Delete an existing type in the type archive.
 
Ref< TypeGetTypeById (const std::string &id, std::string snapshot="") const
 Retrieve a stored type in the archive by id.
 
Ref< TypeGetTypeByName (const QualifiedName &name, std::string snapshot="") const
 Retrieve a stored type in the archive.
 
std::string GetTypeId (const QualifiedName &name, std::string snapshot="") const
 Retrieve a type's id by its name.
 
QualifiedName GetTypeName (const std::string &id, std::string snapshot="") const
 Retrieve a type's name by its id.
 
std::unordered_map< std::string, QualifiedNameAndTypeGetTypes (std::string snapshot="") const
 Retrieve all stored types in the archive.
 
std::vector< std::string > GetTypeIds (std::string snapshot="") const
 Get a list of all types' ids currently in the archive.
 
std::vector< QualifiedNameGetTypeNames (std::string snapshot="") const
 Get a list of all types' names currently in the archive.
 
std::unordered_map< std::string, QualifiedNameGetTypeNamesAndIds (std::string snapshot="") const
 Get a list of all types' names and ids currently in the archive.
 
std::unordered_set< std::string > GetOutgoingDirectTypeReferences (const std::string &id, std::string snapshot="") const
 Get all types a given type references directly.
 
std::unordered_set< std::string > GetOutgoingRecursiveTypeReferences (const std::string &id, std::string snapshot="") const
 Get all types a given type references, and any types that the referenced types reference.
 
std::unordered_set< std::string > GetIncomingDirectTypeReferences (const std::string &id, std::string snapshot="") const
 Get all types that reference a given type.
 
std::unordered_set< std::string > GetIncomingRecursiveTypeReferences (const std::string &id, std::string snapshot="") const
 Get all types that reference a given type, and all types that reference them, recursively.
 
std::string NewSnapshotTransaction (std::function< void(const std::string &id)> func, const std::vector< std::string > &parents)
 Do some function in a transaction making a new snapshot whose id is passed to func.
 
void RegisterNotification (TypeArchiveNotification *notification)
 Register a notification listener.
 
void UnregisterNotification (TypeArchiveNotification *notification)
 Unregister a notification listener.
 
void StoreMetadata (const std::string &key, Ref< Metadata > value)
 Store a key/value pair in the archive's metadata storage.
 
Ref< MetadataQueryMetadata (const std::string &key) const
 Look up a metadata entry in the archive.
 
void RemoveMetadata (const std::string &key)
 Delete a given metadata entry in the archive.
 
DataBuffer SerializeSnapshot (const std::string &snapshot) const
 Turn a given snapshot into a data stream.
 
std::string DeserializeSnapshot (const DataBuffer &data)
 Take a serialized snapshot data stream and create a new snapshot from it.
 
std::optional< std::string > MergeSnapshots (const std::string &baseSnapshot, const std::string &firstSnapshot, const std::string &secondSnapshot, const std::unordered_map< std::string, std::string > &mergeConflictsIn, std::unordered_set< std::string > &mergeConflictsOut, std::function< bool(size_t, size_t)> progress)
 Merge two snapshots in the archive to produce a new snapshot.
 
- Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNTypeArchive, BNNewTypeArchiveReference, BNFreeTypeArchiveReference >
 CoreRefCountObject ()
 
virtual ~CoreRefCountObject ()
 
BNTypeArchiveGetObject () const
 
void AddRef ()
 
void Release ()
 
void AddRefForRegistration ()
 
void ReleaseForRegistration ()
 
void AddRefForCallback ()
 
void ReleaseForCallback ()
 

Static Public Member Functions

static Ref< TypeArchiveOpen (const std::string &path)
 Open the type archive at the given path, if it exists.
 
static Ref< TypeArchiveCreate (const std::string &path, Ref< Platform > platform)
 Create a type archive at the given path.
 
static Ref< TypeArchiveCreateWithId (const std::string &path, Ref< Platform > platform, const std::string &id)
 Create a type archive at the given path with a manually-specified id.
 
static Ref< TypeArchiveLookupById (const std::string &id)
 Get a reference to the type archive with the known id, if one exists.
 
static void Close (Ref< TypeArchive > archive)
 Close a type archive, disconnecting it from any active views and closing any open file handles.
 
static bool IsTypeArchive (const std::string &path)
 Determine if a file is a Type Archive.
 
- Static Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNTypeArchive, BNNewTypeArchiveReference, BNFreeTypeArchiveReference >
static BNTypeArchiveGetObject (CoreRefCountObject *obj)
 
static BNTypeArchiveGetObject (const CoreRefCountObject *obj)
 

Additional Inherited Members

- Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNTypeArchive, BNNewTypeArchiveReference, BNFreeTypeArchiveReference >
std::atomic< int > m_refs
 
bool m_registeredRef
 
BNTypeArchivem_object
 

Constructor & Destructor Documentation

◆ TypeArchive()

TypeArchive::TypeArchive ( BNTypeArchive * archive)

Member Function Documentation

◆ Open()

Ref< TypeArchive > TypeArchive::Open ( const std::string & path)
static

Open the type archive at the given path, if it exists.

Parameters
pathPath to type archive file
Returns
Type archive, or nullptr if it could not be loaded.

◆ Create()

Ref< TypeArchive > TypeArchive::Create ( const std::string & path,
Ref< Platform > platform )
static

Create a type archive at the given path.

Parameters
pathPath to type archive file
platformRelevant platform for types in the archive
Returns
Type archive, or nullptr if it could not be loaded.

◆ CreateWithId()

Ref< TypeArchive > TypeArchive::CreateWithId ( const std::string & path,
Ref< Platform > platform,
const std::string & id )
static

Create a type archive at the given path with a manually-specified id.

Note
You probably want to use Create() and let BN handle picking an id for you.
Parameters
pathPath to type archive file
platformRelevant platform for types in the archive
idAssigned id for the type archive
Returns
Type archive, or nullptr if it could not be created.

◆ LookupById()

Ref< TypeArchive > TypeArchive::LookupById ( const std::string & id)
static

Get a reference to the type archive with the known id, if one exists.

Parameters
idType archive id
Returns
Type archive, or nullptr if it could not be found.

◆ Close()

void TypeArchive::Close ( Ref< TypeArchive > archive)
static

Close a type archive, disconnecting it from any active views and closing any open file handles.

Parameters
archiveType Archive to close

◆ IsTypeArchive()

bool TypeArchive::IsTypeArchive ( const std::string & path)
static

Determine if a file is a Type Archive.

Parameters
pathFile path
Returns
True if it's a type archive

◆ GetId()

std::string TypeArchive::GetId ( ) const

Get the unique id associated with this type archive.

Returns
The id

◆ GetPath()

std::string TypeArchive::GetPath ( ) const

Get the path to the type archive.

Returns
The path

◆ GetPlatform()

Ref< Platform > TypeArchive::GetPlatform ( ) const

Get the associated Platform for a Type Archive.

Returns
Platform

◆ GetCurrentSnapshotId()

std::string TypeArchive::GetCurrentSnapshotId ( ) const

Get the id of the current snapshot in the type archive.

Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
Snapshot id

◆ SetCurrentSnapshot()

void TypeArchive::SetCurrentSnapshot ( const std::string & id)

Revert the type archive's current snapshot to the given snapshot.

Parameters
idSnapshot id

◆ GetAllSnapshotIds()

std::vector< std::string > TypeArchive::GetAllSnapshotIds ( ) const

Get a list of every snapshot's id.

Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
All ids (including the empty first snapshot)

◆ GetSnapshotParentIds()

std::vector< std::string > TypeArchive::GetSnapshotParentIds ( const std::string & id) const

Get the ids of the parents to the given snapshot.

Parameters
idChild snapshot id
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
Parent snapshot ids, or empty vector if the snapshot is a root

◆ GetSnapshotChildIds()

std::vector< std::string > TypeArchive::GetSnapshotChildIds ( const std::string & id) const

Get the ids of the children to the given snapshot.

Parameters
idParent snapshot id
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
Child snapshot ids, or empty vector if the snapshot is a leaf

◆ GetTypeContainer()

TypeContainer TypeArchive::GetTypeContainer ( ) const

Get the TypeContainer interface for this Type Archive, presenting types at the current snapshot in the archive.

Returns
TypeContainer interface

◆ AddTypes()

bool TypeArchive::AddTypes ( const std::vector< QualifiedNameAndType > & types)

Add named types to the type archive.

Types must have all dependant named types prior to being added, or this function will fail. Types already existing with any added names will be overwritten.

Parameters
nameName of new type
typesType definitions
Returns
True if the types were added

◆ RenameType()

bool TypeArchive::RenameType ( const std::string & id,
const QualifiedName & newName )

Change the name of an existing type in the type archive.

Parameters
idType id
newNameNew type name
Returns
True if successful

◆ DeleteType()

bool TypeArchive::DeleteType ( const std::string & id)

Delete an existing type in the type archive.

Parameters
idType id
Returns
True if successful

◆ GetTypeById()

Ref< Type > TypeArchive::GetTypeById ( const std::string & id,
std::string snapshot = "" ) const

Retrieve a stored type in the archive by id.

Parameters
idType id
snapshotSnapshot id to search for types, or empty string to search the latest snapshot
Returns
Type, if it exists. Otherwise nullptr

◆ GetTypeByName()

Ref< Type > TypeArchive::GetTypeByName ( const QualifiedName & name,
std::string snapshot = "" ) const

Retrieve a stored type in the archive.

Parameters
nameType name
snapshotSnapshot id to search for types, or empty string to search the latest snapshot
Returns
Type, if it exists. Otherwise nullptr

◆ GetTypeId()

std::string TypeArchive::GetTypeId ( const QualifiedName & name,
std::string snapshot = "" ) const

Retrieve a type's id by its name.

Parameters
nameType name
snapshotSnapshot id to search for types, or empty string to search the latest snapshot
Returns
Type id, if it exists. Otherwise empty string

◆ GetTypeName()

QualifiedName TypeArchive::GetTypeName ( const std::string & id,
std::string snapshot = "" ) const

Retrieve a type's name by its id.

Parameters
idType id
snapshotSnapshot id to search for types, or empty string to search the latest snapshot
Returns
Type name, if it exists. Otherwise empty string

◆ GetTypes()

std::unordered_map< std::string, QualifiedNameAndType > TypeArchive::GetTypes ( std::string snapshot = "") const

Retrieve all stored types in the archive.

Parameters
snapshotSnapshot id to search for types, or empty string to search the latest snapshot
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
All types

◆ GetTypeIds()

std::vector< std::string > TypeArchive::GetTypeIds ( std::string snapshot = "") const

Get a list of all types' ids currently in the archive.

Parameters
snapshotSnapshot id to search for types, or empty string to search the latest snapshot
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
All type ids

◆ GetTypeNames()

std::vector< QualifiedName > TypeArchive::GetTypeNames ( std::string snapshot = "") const

Get a list of all types' names currently in the archive.

Parameters
snapshotSnapshot id to search for types, or empty string to search the latest snapshot
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
All type names

◆ GetTypeNamesAndIds()

std::unordered_map< std::string, QualifiedName > TypeArchive::GetTypeNamesAndIds ( std::string snapshot = "") const

Get a list of all types' names and ids currently in the archive.

Parameters
snapshotSnapshot id to search for types, or empty string to search the latest snapshot
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
All type names and ids

◆ GetOutgoingDirectTypeReferences()

std::unordered_set< std::string > TypeArchive::GetOutgoingDirectTypeReferences ( const std::string & id,
std::string snapshot = "" ) const

Get all types a given type references directly.

Parameters
idSource type id
snapshotSnapshot id to search for types, or empty string to search the latest snapshot
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
Target type ids

◆ GetOutgoingRecursiveTypeReferences()

std::unordered_set< std::string > TypeArchive::GetOutgoingRecursiveTypeReferences ( const std::string & id,
std::string snapshot = "" ) const

Get all types a given type references, and any types that the referenced types reference.

Parameters
idSource type id
snapshotSnapshot id to search for types, or empty string to search the latest snapshot
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
Target type ids

◆ GetIncomingDirectTypeReferences()

std::unordered_set< std::string > TypeArchive::GetIncomingDirectTypeReferences ( const std::string & id,
std::string snapshot = "" ) const

Get all types that reference a given type.

Parameters
idTarget type id
snapshotSnapshot id to search for types, or empty string to search the latest snapshot
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
Source type ids

◆ GetIncomingRecursiveTypeReferences()

std::unordered_set< std::string > TypeArchive::GetIncomingRecursiveTypeReferences ( const std::string & id,
std::string snapshot = "" ) const

Get all types that reference a given type, and all types that reference them, recursively.

Parameters
idTarget type id
snapshotSnapshot id to search for types, or empty string to search the latest snapshot
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
Source type ids

◆ NewSnapshotTransaction()

std::string TypeArchive::NewSnapshotTransaction ( std::function< void(const std::string &id)> func,
const std::vector< std::string > & parents )

Do some function in a transaction making a new snapshot whose id is passed to func.

If func throws, the transaction will be rolled back and the snapshot will not be created.

Parameters
funcFunction to call
parentsParent snapshot ids
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
Created snapshot id

◆ RegisterNotification()

void TypeArchive::RegisterNotification ( TypeArchiveNotification * notification)

Register a notification listener.

Parameters
notificationObject to receive notifications

◆ UnregisterNotification()

void TypeArchive::UnregisterNotification ( TypeArchiveNotification * notification)

Unregister a notification listener.

Parameters
notificationObject to no longer receive notifications

◆ StoreMetadata()

void TypeArchive::StoreMetadata ( const std::string & key,
Ref< Metadata > value )

Store a key/value pair in the archive's metadata storage.

Parameters
keyMetadata key
valueMetadata value
Exceptions
ExceptionWithStackTraceif an exception occurs

◆ QueryMetadata()

Ref< Metadata > TypeArchive::QueryMetadata ( const std::string & key) const

Look up a metadata entry in the archive.

Parameters
keyMetadata key
Returns
Metadata value, if it exists. Otherwise, nullptr

◆ RemoveMetadata()

void TypeArchive::RemoveMetadata ( const std::string & key)

Delete a given metadata entry in the archive.

Parameters
keyMetadata key
Exceptions
ExceptionWithStackTraceif an exception occurs

◆ SerializeSnapshot()

DataBuffer TypeArchive::SerializeSnapshot ( const std::string & snapshot) const

Turn a given snapshot into a data stream.

Parameters
snapshotSnapshot id
Returns
Buffer containing serialized snapshot data

◆ DeserializeSnapshot()

std::string TypeArchive::DeserializeSnapshot ( const DataBuffer & data)

Take a serialized snapshot data stream and create a new snapshot from it.

Parameters
dataSnapshot data
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
String of created snapshot id

◆ MergeSnapshots()

std::optional< std::string > TypeArchive::MergeSnapshots ( const std::string & baseSnapshot,
const std::string & firstSnapshot,
const std::string & secondSnapshot,
const std::unordered_map< std::string, std::string > & mergeConflictsIn,
std::unordered_set< std::string > & mergeConflictsOut,
std::function< bool(size_t, size_t)> progress )

Merge two snapshots in the archive to produce a new snapshot.

Parameters
[in]baseSnapshotCommon ancestor of snapshots
[in]firstSnapshotFirst snapshot to merge
[in]secondSnapshotSecond snapshot to merge
[in]mergeConflictsInMap of resolutions for all conflicting types, id <-> target snapshot
[out]mergeConflictsOutList of conflicting type ids
[in]progressFunction to call for progress updates
Exceptions
ExceptionWithStackTraceif an exception occurs
Returns
Snapshot id, if merge was successful. std::nullopt, otherwise

◆ BinaryNinja::SymbolQueue

class BinaryNinja::SymbolQueue

Public Member Functions

 SymbolQueue ()
 
 ~SymbolQueue ()
 
void Append (const std::function< std::pair< Ref< Symbol >, Ref< Type > >()> &resolve, const std::function< void(Symbol *, Type *)> &add)
 
void Process ()
 

Constructor & Destructor Documentation

◆ SymbolQueue()

SymbolQueue::SymbolQueue ( )

◆ ~SymbolQueue()

SymbolQueue::~SymbolQueue ( )

Member Function Documentation

◆ Append()

void SymbolQueue::Append ( const std::function< std::pair< Ref< Symbol >, Ref< Type > >()> & resolve,
const std::function< void(Symbol *, Type *)> & add )

◆ Process()

void SymbolQueue::Process ( )