binaryninja::custom_binary_view

Trait BinaryViewTypeExt

source
pub trait BinaryViewTypeExt: BinaryViewTypeBase {
    // Provided methods
    fn name(&self) -> BnString { ... }
    fn long_name(&self) -> BnString { ... }
    fn register_arch<A: Architecture>(
        &self,
        id: u32,
        endianness: Endianness,
        arch: &A,
    ) { ... }
    fn register_platform(&self, id: u32, plat: &Platform) { ... }
    fn register_platform_recognizer<R>(
        &self,
        id: u32,
        endian: Endianness,
        recognizer: R,
    )
       where R: 'static + Fn(&BinaryView, &Metadata) -> Option<Ref<Platform>> + Send + Sync { ... }
    fn open(&self, data: &BinaryView) -> Result<Ref<BinaryView>> { ... }
    fn parse(&self, data: &BinaryView) -> Result<Ref<BinaryView>> { ... }
}

Provided Methods§

source

fn name(&self) -> BnString

source

fn long_name(&self) -> BnString

source

fn register_arch<A: Architecture>( &self, id: u32, endianness: Endianness, arch: &A, )

source

fn register_platform(&self, id: u32, plat: &Platform)

source

fn register_platform_recognizer<R>( &self, id: u32, endian: Endianness, recognizer: R, )
where R: 'static + Fn(&BinaryView, &Metadata) -> Option<Ref<Platform>> + Send + Sync,

Expanded identification of Platform for BinaryViewType’s. Supersedes BinaryViewTypeExt::register_arch and BinaryViewTypeExt::register_platform, as these have certain edge cases (overloaded elf families, for example) that can’t be represented.

The callback returns a Platform object or None (failure), and most recently added callbacks are called first to allow plugins to override any default behaviors. When a callback returns a platform, architecture will be derived from the identified platform.

The BinaryView is the parent view (usually ‘Raw’) that the BinaryView is being created for. This means that generally speaking the callbacks need to be aware of the underlying file format, however the BinaryView implementation may have created datavars in the ‘Raw’ view by the time the callback is invoked. Behavior regarding when this callback is invoked and what has been made available in the BinaryView passed as an argument to the callback is up to the discretion of the BinaryView implementation.

The id ind endian arguments are used as a filter to determine which registered Platform recognizer callbacks are invoked.

Support for this API tentatively requires explicit support in the BinaryView implementation.

source

fn open(&self, data: &BinaryView) -> Result<Ref<BinaryView>>

source

fn parse(&self, data: &BinaryView) -> Result<Ref<BinaryView>>

Object Safety§

This trait is not object safe.

Implementors§