pub struct Pattern<const N: usize>(/* private fields */);
Expand description
Represents a staticly built sequence of bytes to match against.
let data = b"\x11\x22\x33";
let ida = ida_pat!("11 ? 33");
let peid = peid_pat!("11 ?? 33");
let code = code_pat!(b"\x11\x00\x33", "x?x");
assert!(ida.matches(data) && peid.matches(data) && code.matches(data));
Implementations§
source§impl<const N: usize> Pattern<N>
impl<const N: usize> Pattern<N>
sourcepub fn to_ida_style(&self) -> String
pub fn to_ida_style(&self) -> String
Converts pattern to IDA style string.
sourcepub fn to_peid_style(&self) -> String
pub fn to_peid_style(&self) -> String
Converts pattern to PEID style string.
sourcepub fn to_code_style(&self) -> (String, String)
pub fn to_code_style(&self) -> (String, String)
Converts pattern to code style string, returing pattern and mask.
sourcepub const fn matches(&self, data: &[u8]) -> bool
pub const fn matches(&self, data: &[u8]) -> bool
Checks if pattern matches byte slice.
let data = b"\x11\x22\x33";
let pat = ida_pat!("11 ? 33");
assert!(pat.matches(data));
sourcepub const fn from_ida_style(pat: &'static str) -> Pattern<N>
pub const fn from_ida_style(pat: &'static str) -> Pattern<N>
Creates pattern from IDA style string.
// Pattern parsing is a contant call and happens at compile time.
let ida = ida_pat!("13 ? D1");
let data = b"\x13\x01\xD1";
assert!(ida.matches(data));
sourcepub const fn from_peid_style(pat: &'static str) -> Pattern<N>
pub const fn from_peid_style(pat: &'static str) -> Pattern<N>
Creates pattern from PEID style string.
// Pattern parsing is a contant call and happens at compile time.
let peid = peid_pat!("13 ?? D1");
let data = b"\x13\x01\xD1";
assert!(peid.matches(data));
sourcepub const fn from_code_style(
pat: &'static [u8],
mask: &'static str
) -> Pattern<N>
pub const fn from_code_style( pat: &'static [u8], mask: &'static str ) -> Pattern<N>
Creates pattern from code style strings.
let pat = code_pat!(b"\x11\x55\xE2", "x?x");
let data = b"\x11\x01\xE2";
assert!(pat.matches(data));
Trait Implementations§
source§impl<const N: usize> PartialEq<Pattern<N>> for Pattern<N>
impl<const N: usize> PartialEq<Pattern<N>> for Pattern<N>
impl<const N: usize> Copy for Pattern<N>
impl<const N: usize> Eq for Pattern<N>
impl<const N: usize> StructuralEq for Pattern<N>
impl<const N: usize> StructuralPartialEq for Pattern<N>
Auto Trait Implementations§
impl<const N: usize> RefUnwindSafe for Pattern<N>
impl<const N: usize> Send for Pattern<N>
impl<const N: usize> Sync for Pattern<N>
impl<const N: usize> Unpin for Pattern<N>
impl<const N: usize> UnwindSafe for Pattern<N>
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
Mutably borrows from an owned value. Read more