Binary Ninja API C++: Transform

Loading...

Searching...

No Matches

Classes

struct  BinaryNinja::TransformParameter
class  BinaryNinja::Transform
 Allows users to implement custom transformations. More...
class  BinaryNinja::CoreTransform

◆ BinaryNinja::TransformParameter

struct BinaryNinja::TransformParameter

Class Members
string name
string longName
size_t fixedLength

◆ BinaryNinja::Transform

class BinaryNinja::Transform

Allows users to implement custom transformations.

New transformations may be added at runtime, so an instance of a transform is created like

DataBuffer inputData = binaryView->ReadBuffer(0, 32);

Transform::GetByName("SHA512")->Encode(inputData, outputDataHash);

Getting a list of registered transforms:

From the interactive python console:

At Runtime:

std::vector<Ref<Transform>> registeredTypes = Transform::GetTransformTypes();

Public Member Functions

 Transform (BNTransformType type, const std::string &name, const std::string &longName, const std::string &group)
 Transform (BNTransformType type, BNTransformCapabilities capabilities, const std::string &name, const std::string &longName, const std::string &group)
BNTransformType GetType () const
BNTransformCapabilities GetCapabilities () const
bool SupportsDetection () const
bool SupportsContext () const
std::string GetName () const
std::string GetLongName () const
std::string GetGroup () const
virtual std::vector< TransformParameterGetParameters () const
virtual bool Decode (const DataBuffer &input, DataBuffer &output, const std::map< std::string, DataBuffer > &params=std::map< std::string, DataBuffer >())
virtual bool Encode (const DataBuffer &input, DataBuffer &output, const std::map< std::string, DataBuffer > &params=std::map< std::string, DataBuffer >())
virtual bool DecodeWithContext (Ref< TransformContext > context, const std::map< std::string, DataBuffer > &params=std::map< std::string, DataBuffer >())
virtual bool CanDecode (Ref< BinaryView > input) const
Public Member Functions inherited from BinaryNinja::StaticCoreRefCountObject< BNTransform >
 StaticCoreRefCountObject ()
virtual ~StaticCoreRefCountObject ()
BNTransformGetObject () const
void AddRef ()
void Release ()
void AddRefForRegistration ()
void AddRefForCallback ()
void ReleaseForCallback ()

Static Public Member Functions

static void Register (Transform *xform)
static Ref< TransformGetByName (const std::string &name)
static std::vector< Ref< Transform > > GetTransformTypes ()

Protected Member Functions

 Transform (BNTransform *xform)

Static Protected Member Functions

static BNTransformParameterInfoGetParametersCallback (void *ctxt, size_t *count)
static void FreeParametersCallback (BNTransformParameterInfo *params, size_t count)
static bool DecodeCallback (void *ctxt, BNDataBuffer *input, BNDataBuffer *output, BNTransformParameter *params, size_t paramCount)
static bool EncodeCallback (void *ctxt, BNDataBuffer *input, BNDataBuffer *output, BNTransformParameter *params, size_t paramCount)
static bool DecodeWithContextCallback (void *ctxt, BNTransformContext *context, BNTransformParameter *params, size_t paramCount)
static bool CanDecodeCallback (void *ctxt, BNBinaryView *input)
static std::vector< TransformParameterEncryptionKeyParameters (size_t fixedKeyLength=0)
static std::vector< TransformParameterEncryptionKeyAndIVParameters (size_t fixedKeyLength=0, size_t fixedIVLength=0)

Protected Attributes

BNTransformType m_typeForRegister
BNTransformCapabilities m_capabilitiesForRegister
std::string m_nameForRegister
std::string m_longNameForRegister
std::string m_groupForRegister

◆ Transform() [2/3]

BinaryNinja::Transform::Transform ( BNTransformType type,
const std::string & name,
const std::string & longName,
const std::string & group )

◆ Transform() [3/3]

◆ GetParametersCallback()

◆ FreeParametersCallback()

◆ DecodeCallback()

◆ EncodeCallback()

◆ DecodeWithContextCallback()

◆ CanDecodeCallback()

bool Transform::CanDecodeCallback ( void * ctxt,
BNBinaryView * input )
staticprotected

◆ EncryptionKeyParameters()

vector< TransformParameter > Transform::EncryptionKeyParameters ( size_t fixedKeyLength = 0)
staticprotected

◆ EncryptionKeyAndIVParameters()

vector< TransformParameter > Transform::EncryptionKeyAndIVParameters ( size_t fixedKeyLength = 0,
size_t fixedIVLength = 0 )
staticprotected

◆ Register()

void Transform::Register ( Transform * xform)
static

◆ GetByName()

Ref< Transform > Transform::GetByName ( const std::string & name)
static

◆ GetTransformTypes()

vector< Ref< Transform > > Transform::GetTransformTypes ( )
static

◆ GetType()

◆ GetCapabilities()

◆ SupportsDetection()

bool Transform::SupportsDetection ( ) const

◆ SupportsContext()

bool Transform::SupportsContext ( ) const

◆ GetName()

string Transform::GetName ( ) const

◆ GetLongName()

string Transform::GetLongName ( ) const

◆ GetGroup()

string Transform::GetGroup ( ) const

◆ GetParameters()

vector< TransformParameter > Transform::GetParameters ( ) const
virtual

Reimplemented in BinaryNinja::CoreTransform.

◆ Decode()

Reimplemented in BinaryNinja::CoreTransform.

◆ Encode()

Reimplemented in BinaryNinja::CoreTransform.

◆ DecodeWithContext()

Reimplemented in BinaryNinja::CoreTransform.

◆ CanDecode()

bool Transform::CanDecode ( Ref< BinaryView > input) const
virtual

Reimplemented in BinaryNinja::CoreTransform.

◆ m_typeForRegister

◆ m_capabilitiesForRegister

◆ m_nameForRegister

std::string BinaryNinja::Transform::m_nameForRegister

protected

◆ m_longNameForRegister

std::string BinaryNinja::Transform::m_longNameForRegister

protected

◆ m_groupForRegister

std::string BinaryNinja::Transform::m_groupForRegister

protected

◆ BinaryNinja::CoreTransform

class BinaryNinja::CoreTransform

Public Member Functions

 CoreTransform (BNTransform *xform)
virtual std::vector< TransformParameterGetParameters () const override
virtual bool Decode (const DataBuffer &input, DataBuffer &output, const std::map< std::string, DataBuffer > &params=std::map< std::string, DataBuffer >()) override
virtual bool Encode (const DataBuffer &input, DataBuffer &output, const std::map< std::string, DataBuffer > &params=std::map< std::string, DataBuffer >()) override
virtual bool DecodeWithContext (Ref< TransformContext > context, const std::map< std::string, DataBuffer > &params=std::map< std::string, DataBuffer >()) override
virtual bool CanDecode (Ref< BinaryView > input) const override
Public Member Functions inherited from BinaryNinja::Transform
 Transform (BNTransformType type, const std::string &name, const std::string &longName, const std::string &group)
 Transform (BNTransformType type, BNTransformCapabilities capabilities, const std::string &name, const std::string &longName, const std::string &group)
BNTransformType GetType () const
BNTransformCapabilities GetCapabilities () const
bool SupportsDetection () const
bool SupportsContext () const
std::string GetName () const
std::string GetLongName () const
std::string GetGroup () const
Public Member Functions inherited from BinaryNinja::StaticCoreRefCountObject< BNTransform >
 StaticCoreRefCountObject ()
virtual ~StaticCoreRefCountObject ()
BNTransformGetObject () const
void AddRef ()
void Release ()
void AddRefForRegistration ()
void AddRefForCallback ()
void ReleaseForCallback ()

Additional Inherited Members

Static Public Member Functions inherited from BinaryNinja::Transform
static void Register (Transform *xform)
static Ref< TransformGetByName (const std::string &name)
static std::vector< Ref< Transform > > GetTransformTypes ()
Public Attributes inherited from BinaryNinja::StaticCoreRefCountObject< BNTransform >
std::atomic< int > m_refs
BNTransformm_object
Protected Member Functions inherited from BinaryNinja::Transform
 Transform (BNTransform *xform)
Static Protected Member Functions inherited from BinaryNinja::Transform
static BNTransformParameterInfoGetParametersCallback (void *ctxt, size_t *count)
static void FreeParametersCallback (BNTransformParameterInfo *params, size_t count)
static bool DecodeCallback (void *ctxt, BNDataBuffer *input, BNDataBuffer *output, BNTransformParameter *params, size_t paramCount)
static bool EncodeCallback (void *ctxt, BNDataBuffer *input, BNDataBuffer *output, BNTransformParameter *params, size_t paramCount)
static bool DecodeWithContextCallback (void *ctxt, BNTransformContext *context, BNTransformParameter *params, size_t paramCount)
static bool CanDecodeCallback (void *ctxt, BNBinaryView *input)
static std::vector< TransformParameterEncryptionKeyParameters (size_t fixedKeyLength=0)
static std::vector< TransformParameterEncryptionKeyAndIVParameters (size_t fixedKeyLength=0, size_t fixedIVLength=0)
Protected Attributes inherited from BinaryNinja::Transform
BNTransformType m_typeForRegister
BNTransformCapabilities m_capabilitiesForRegister
std::string m_nameForRegister
std::string m_longNameForRegister
std::string m_groupForRegister

◆ CoreTransform()

◆ GetParameters()

vector< TransformParameter > CoreTransform::GetParameters ( ) const
overridevirtual

Reimplemented from BinaryNinja::Transform.

◆ Decode()

Reimplemented from BinaryNinja::Transform.

◆ Encode()

Reimplemented from BinaryNinja::Transform.

◆ DecodeWithContext()

Reimplemented from BinaryNinja::Transform.

◆ CanDecode()

bool CoreTransform::CanDecode ( Ref< BinaryView > input) const
overridevirtual

Reimplemented from BinaryNinja::Transform.