Loading...
Searching...
No Matches
BinaryNinja::SimilaritySession Class Reference

Runs providers and resolvers over binaries arranged in a session graph. More...

Detailed Description

Runs providers and resolvers over binaries arranged in a session graph.

Public Member Functions

 SimilaritySession (BNSimilaritySession *session)
 SimilaritySession ()
SimilaritySessionId GetId () const
void AddProvider (Ref< SimilarityProvider > provider)
 Adds a provider and schedules entities processed by earlier runs for the next run.
void RemoveProvider (SimilarityProvider &provider)
 Removes a provider, clears its results, and marks affected entities for resolution.
bool UpdateProviderSettings (SimilarityProvider &provider, Settings &settings)
 Updates a provider already in the session and schedules previously processed entities again.
Ref< SimilarityProvider > GetProvider (SimilarityProviderId id)
 Returns a provider, or `nullptr` if `id` is absent.
std::vector< Ref< SimilarityProvider > > GetProviders ()
bool AddResolver (Ref< SimilaritySessionResolver > resolver)
 Adds a resolver created for this session and marks entities processed by earlier runs for resolution.
bool RemoveResolver (SimilaritySessionResolver &resolver)
 Removes a resolver.
bool UpdateResolverSettings (SimilaritySessionResolver &resolver, Settings &settings)
 Updates a resolver already in the session and marks previously processed entities for resolution.
Ref< SimilaritySessionResolver > GetResolver (SimilaritySessionResolverId id)
 Returns a resolver, or `nullptr` if `id` is absent.
std::vector< Ref< SimilaritySessionResolver > > GetResolvers ()
void AddReceiver (Ref< SimilaritySessionReceiver > receiver)
 Adds a receiver.
void RemoveReceiver (SimilaritySessionReceiver &receiver)
 Removes a receiver.
std::vector< Ref< SimilaritySessionReceiver > > GetReceivers ()
Ref< SimilaritySessionGraph > GetGraph ()
Ref< SimilaritySessionCompletion > Run ()
 Starts a background run with the current graph, providers, and resolvers.
Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNSimilaritySession, BNNewSimilaritySessionReference, BNFreeSimilaritySession >
 CoreRefCountObject ()
virtual ~CoreRefCountObject ()
BNSimilaritySession * GetObject () const
void AddRef ()
void Release ()
void AddRefForRegistration ()
void ReleaseForRegistration ()
void AddRefForCallback ()
void ReleaseForCallback ()

Additional Inherited Members

Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNSimilaritySession, BNNewSimilaritySessionReference, BNFreeSimilaritySession >
std::atomic< int > m_refs
bool m_registeredRef
BNSimilaritySession * m_object

Constructor & Destructor Documentation

◆ SimilaritySession() [1/2]

SimilaritySession::SimilaritySession ( BNSimilaritySession * session)

◆ SimilaritySession() [2/2]

SimilaritySession::SimilaritySession ( )

Member Function Documentation

◆ GetId()

SimilaritySessionId SimilaritySession::GetId ( ) const

◆ AddProvider()

void SimilaritySession::AddProvider ( Ref< SimilarityProvider > provider)

Adds a provider and schedules entities processed by earlier runs for the next run.

Note
Ignored while a run is active.

◆ RemoveProvider()

void SimilaritySession::RemoveProvider ( SimilarityProvider & provider)

Removes a provider, clears its results, and marks affected entities for resolution.

Note
Ignored while a run is active.

◆ UpdateProviderSettings()

bool SimilaritySession::UpdateProviderSettings ( SimilarityProvider & provider,
Settings & settings )

Updates a provider already in the session and schedules previously processed entities again.

Returns false during a run, when the provider is absent, or when it rejects the settings.

◆ GetProvider()

Ref< SimilarityProvider > SimilaritySession::GetProvider ( SimilarityProviderId id)

Returns a provider, or `nullptr` if `id` is absent.

◆ GetProviders()

std::vector< Ref< SimilarityProvider > > SimilaritySession::GetProviders ( )

◆ AddResolver()

bool SimilaritySession::AddResolver ( Ref< SimilaritySessionResolver > resolver)

Adds a resolver created for this session and marks entities processed by earlier runs for resolution.

Note
Returns false during a run, for a duplicate, or for a resolver from another session.

◆ RemoveResolver()

bool SimilaritySession::RemoveResolver ( SimilaritySessionResolver & resolver)

Removes a resolver.

Note
Returns false during a run, or if it is absent or belongs to another session.

◆ UpdateResolverSettings()

bool SimilaritySession::UpdateResolverSettings ( SimilaritySessionResolver & resolver,
Settings & settings )

Updates a resolver already in the session and marks previously processed entities for resolution.

Returns false during a run, when the resolver is absent or belongs to another session, or when it rejects the settings.

◆ GetResolver()

Ref< SimilaritySessionResolver > SimilaritySession::GetResolver ( SimilaritySessionResolverId id)

Returns a resolver, or `nullptr` if `id` is absent.

◆ GetResolvers()

std::vector< Ref< SimilaritySessionResolver > > SimilaritySession::GetResolvers ( )

◆ AddReceiver()

void SimilaritySession::AddReceiver ( Ref< SimilaritySessionReceiver > receiver)

Adds a receiver.

A running session keeps using the receiver list it started with.

◆ RemoveReceiver()

void SimilaritySession::RemoveReceiver ( SimilaritySessionReceiver & receiver)

Removes a receiver.

A running session keeps using the receiver list it started with.

◆ GetReceivers()

std::vector< Ref< SimilaritySessionReceiver > > SimilaritySession::GetReceivers ( )

◆ GetGraph()

Ref< SimilaritySessionGraph > SimilaritySession::GetGraph ( )

◆ Run()

Ref< SimilaritySessionCompletion > SimilaritySession::Run ( )

Starts a background run with the current graph, providers, and resolvers.

Changes are ignored until it finishes.

Note
Returns the active run's completion handle when already running.