Struct cwe_checker_lib::utils::binary::BareMetalConfig
source · pub struct BareMetalConfig {
pub processor_id: String,
pub flash_base_address: String,
pub ram_base_address: String,
pub ram_size: String,
}
Expand description
Contains all information parsed out of the bare metal configuration JSON file.
The content is information that is necessary for handling bare metal binaries and that the cwe_checker cannot automatically deduce from the binary itself.
When handling bare metal binaries we assume that the corresponding MCU uses a very simple memory layout consisting of exactly one region of non-volatile (flash) memory and exactly one region of volatile memory (RAM). Furthermore, we assume that the binary itself is just a dump of the non-volatile memory region.
Fields§
§processor_id: String
The CPU type.
The string has to match the processor_id
that Ghidra uses for the specific CPU type,
as it is forwarded to Ghidra to identify the CPU.
flash_base_address: String
The base address of the non-volatile memory (usually flash memory) used by the chip. The string is parsed as a hexadecimal number.
We assume that the size of the non-volatile memory equals the size of the input binary. In other words, we assume that the input binary is a complete dump of the contents of the non-volatile memory of the chip.
ram_base_address: String
The base address of the volatile memory (RAM) used by the chip. The string is parsed as a hexadecimal number.
ram_size: String
The size of the volatile memory (RAM) used by the chip. The string is parsed as a hexadecimal number.
If the exact size is unknown, then one can try to use an upper approximation instead.
Implementations§
source§impl BareMetalConfig
impl BareMetalConfig
sourcepub fn parse_binary_base_address(&self) -> u64
pub fn parse_binary_base_address(&self) -> u64
Return the base address of the binary as an integer.
Trait Implementations§
source§impl Clone for BareMetalConfig
impl Clone for BareMetalConfig
source§fn clone(&self) -> BareMetalConfig
fn clone(&self) -> BareMetalConfig
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for BareMetalConfig
impl Debug for BareMetalConfig
source§impl<'de> Deserialize<'de> for BareMetalConfig
impl<'de> Deserialize<'de> for BareMetalConfig
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl Hash for BareMetalConfig
impl Hash for BareMetalConfig
source§impl PartialEq for BareMetalConfig
impl PartialEq for BareMetalConfig
source§fn eq(&self, other: &BareMetalConfig) -> bool
fn eq(&self, other: &BareMetalConfig) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for BareMetalConfig
impl Serialize for BareMetalConfig
impl Eq for BareMetalConfig
impl StructuralEq for BareMetalConfig
impl StructuralPartialEq for BareMetalConfig
Auto Trait Implementations§
impl RefUnwindSafe for BareMetalConfig
impl Send for BareMetalConfig
impl Sync for BareMetalConfig
impl Unpin for BareMetalConfig
impl UnwindSafe for BareMetalConfig
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.