FirmwareNinja is a class containing features specific to firmware analysis. More...
FirmwareNinja is a class containing features specific to firmware analysis.
This class is only available in the Ultimate Edition of Binary Ninja.
Public Member Functions | |
FirmwareNinja (Ref< BinaryView > view) | |
~FirmwareNinja () | |
bool | StoreCustomDevice (FirmwareNinjaDevice &device) |
Store a user-defined Firmware Ninja device to the binary view metadata. | |
bool | RemoveCustomDevice (const std::string &name) |
Remove a user-defined Firmware Ninja device from the binary view metadata. | |
std::vector< FirmwareNinjaDevice > | QueryCustomDevices () |
Query all user-defined Firmware Ninja devices from the binary view metadata. | |
std::vector< std::string > | QueryBoardNames () |
Query names of all boards that are compatable with the current binary view and contain bundled device definitions. | |
std::vector< FirmwareNinjaDevice > | QueryDevicesForBoard (const std::string &board) |
Query Firmware Ninja device definitions for the specified board. | |
std::vector< BNFirmwareNinjaSection > | FindSections (float highCodeEntropyThreshold, float lowCodeEntropyThreshold, size_t blockSize, BNFirmwareNinjaSectionAnalysisMode mode) |
Find sections in the binary with Firmware Ninja heuristics and entropy analysis. | |
std::vector< FirmwareNinjaFunctionMemoryAccesses > | GetFunctionMemoryAccesses (BNProgressFunction progress, void *progressContext) |
Find functions that access memory-mapped I/O and other non-file backed memory regions. | |
void | StoreFunctionMemoryAccesses (const std::vector< FirmwareNinjaFunctionMemoryAccesses > &fma) |
Store Firmware Ninja function memory accesses information in the binary view metadata. | |
std::vector< FirmwareNinjaFunctionMemoryAccesses > | QueryFunctionMemoryAccesses () |
Query Firmware Ninja function memory accesses that are stored in the binary view metadata. | |
std::vector< FirmwareNinjaDeviceAccesses > | GetBoardDeviceAccesses (const std::vector< FirmwareNinjaFunctionMemoryAccesses > &fma) |
Compute number of accesses made to memory-mapped hardware devices for each bundled board that is compatible with the current architecture. | |
Ref< FirmwareNinjaReferenceNode > | GetReferenceTree (FirmwareNinjaDevice &device, const std::vector< FirmwareNinjaFunctionMemoryAccesses > &fma, uint64_t *value=nullptr) |
Returns a tree of reference nodes that reference the memory region represented by the given Firmware Ninja device. | |
Ref< FirmwareNinjaReferenceNode > | GetReferenceTree (Section §ion, const std::vector< FirmwareNinjaFunctionMemoryAccesses > &fma, uint64_t *value=nullptr) |
Returns a tree of reference nodes that reference the memory region represented by the given section. | |
Ref< FirmwareNinjaReferenceNode > | GetReferenceTree (uint64_t address, const std::vector< FirmwareNinjaFunctionMemoryAccesses > &fma, uint64_t *value=nullptr) |
Returns a tree of reference nodes that reference the given address. | |
std::vector< Ref< FirmwareNinjaRelationship > > | QueryRelationships () |
Query Firmware Ninja relationships from the binary view metadata. | |
void | AddRelationship (Ref< FirmwareNinjaRelationship > relationship) |
Store a Firmware Ninja relationship in the binary view metadata. | |
Ref< FirmwareNinjaRelationship > | GetRelationshipByGuid (const std::string &guid) |
void | RemoveRelationshipByGuid (const std::string &guid) |
Remove a Firmware Ninja relationship from the binary view metadata. | |
FirmwareNinja::FirmwareNinja | ( | Ref< BinaryView > | view | ) |
FirmwareNinja::~FirmwareNinja | ( | ) |
bool FirmwareNinja::StoreCustomDevice | ( | FirmwareNinjaDevice & | device | ) |
Store a user-defined Firmware Ninja device to the binary view metadata.
device | Hardware device information |
bool FirmwareNinja::RemoveCustomDevice | ( | const std::string & | name | ) |
Remove a user-defined Firmware Ninja device from the binary view metadata.
name | Name of the device to remove |
std::vector< FirmwareNinjaDevice > FirmwareNinja::QueryCustomDevices | ( | ) |
Query all user-defined Firmware Ninja devices from the binary view metadata.
std::vector< std::string > FirmwareNinja::QueryBoardNames | ( | ) |
Query names of all boards that are compatable with the current binary view and contain bundled device definitions.
std::vector< FirmwareNinjaDevice > FirmwareNinja::QueryDevicesForBoard | ( | const std::string & | board | ) |
Query Firmware Ninja device definitions for the specified board.
board | Name of the board to query devices for |
std::vector< BNFirmwareNinjaSection > FirmwareNinja::FindSections | ( | float | highCodeEntropyThreshold, |
float | lowCodeEntropyThreshold, | ||
size_t | blockSize, | ||
BNFirmwareNinjaSectionAnalysisMode | mode ) |
Find sections in the binary with Firmware Ninja heuristics and entropy analysis.
board | highCodeEntropyThreshold High threshold for code entropy value range |
board | lowCodeEntropyThreshold Low threshold for code entropy value range |
blockSize | Size of blocks to analyze |
mode | Analysis mode of operation |
std::vector< FirmwareNinjaFunctionMemoryAccesses > FirmwareNinja::GetFunctionMemoryAccesses | ( | BNProgressFunction | progress, |
void * | progressContext ) |
Find functions that access memory-mapped I/O and other non-file backed memory regions.
progress | Progress callback function |
progressContext | Progress context |
void FirmwareNinja::StoreFunctionMemoryAccesses | ( | const std::vector< FirmwareNinjaFunctionMemoryAccesses > & | fma | ) |
Store Firmware Ninja function memory accesses information in the binary view metadata.
fma | Vector containin Firmware Ninja function memory accesses |
std::vector< FirmwareNinjaFunctionMemoryAccesses > FirmwareNinja::QueryFunctionMemoryAccesses | ( | ) |
Query Firmware Ninja function memory accesses that are stored in the binary view metadata.
std::vector< FirmwareNinjaDeviceAccesses > FirmwareNinja::GetBoardDeviceAccesses | ( | const std::vector< FirmwareNinjaFunctionMemoryAccesses > & | fma | ) |
Compute number of accesses made to memory-mapped hardware devices for each bundled board that is compatible with the current architecture.
fma | Vector containing Firmware Ninja function memory accesses |
Ref< FirmwareNinjaReferenceNode > FirmwareNinja::GetReferenceTree | ( | FirmwareNinjaDevice & | device, |
const std::vector< FirmwareNinjaFunctionMemoryAccesses > & | fma, | ||
uint64_t * | value = nullptr ) |
Returns a tree of reference nodes that reference the memory region represented by the given Firmware Ninja device.
device | Firmware Ninja device |
fma | Vector containing Firmware Ninja function memory accesses |
value | (Optional) only build reference trees that originate with a write of the specified value |
Ref< FirmwareNinjaReferenceNode > FirmwareNinja::GetReferenceTree | ( | Section & | section, |
const std::vector< FirmwareNinjaFunctionMemoryAccesses > & | fma, | ||
uint64_t * | value = nullptr ) |
Returns a tree of reference nodes that reference the memory region represented by the given section.
device | Firmware Ninja device |
fma | Vector containing Firmware Ninja function memory accesses |
value | (Optional) only build reference trees that originate with a write of the specified value |
Ref< FirmwareNinjaReferenceNode > FirmwareNinja::GetReferenceTree | ( | uint64_t | address, |
const std::vector< FirmwareNinjaFunctionMemoryAccesses > & | fma, | ||
uint64_t * | value = nullptr ) |
Returns a tree of reference nodes that reference the given address.
device | Firmware Ninja device |
fma | Vector containing Firmware Ninja function memory accesses |
value | (Optional) only build reference trees that originate with a write of the specified value |
std::vector< Ref< FirmwareNinjaRelationship > > FirmwareNinja::QueryRelationships | ( | ) |
Query Firmware Ninja relationships from the binary view metadata.
void FirmwareNinja::AddRelationship | ( | Ref< FirmwareNinjaRelationship > | relationship | ) |
Store a Firmware Ninja relationship in the binary view metadata.
relationship | Firmware Ninja relationship |
Ref< FirmwareNinjaRelationship > FirmwareNinja::GetRelationshipByGuid | ( | const std::string & | guid | ) |
void FirmwareNinja::RemoveRelationshipByGuid | ( | const std::string & | guid | ) |
Remove a Firmware Ninja relationship from the binary view metadata.
guid | GUID of the relationship to remove |