Searches for a contiguous array of bytes determined by a given pattern. The pattern can include supported wildcard characters, as seen below.
?match any byte
fe 00 68 98- matches only
fe 00 68 98
8d 11 ? ? 8f- could match
8d 11 9e ef 8for
8d 11 0 0 8ffor example
use patternscan::scan; use std::io::Cursor; let bytes = [0x10, 0x20, 0x30, 0x40, 0x50]; let pattern = "20 30 40"; let locs = scan(Cursor::new(bytes), &pattern).unwrap(); // Will equal vec!, the index of // the pattern
Any struct implementing
Read can be passed as the reader which should be scanned for
ocurrences of a pattern, so one could scan for a byte sequence within an executable as follows:
use patternscan::scan; use std::fs::File; let reader = File::open("somebinary.exe").unwrap(); let instruction = "A3 ? ? ? ?"; let locs = scan(reader, &instruction).unwrap();
For more example uses of this module, see the tests
Represents an error which occurred while scanning for a pattern.
Iterator over locations of matches for a pattern found within a byte string.
Represents a pattern to search for in a byte string.
Represents a single byte in a search pattern.
Size of chunks to be read from
Determine whether a byte slice matches a pattern.
Scan for any instances of
Scan for the first instance of