7 #ifndef RETDEC_UNPACKER_SIGNATURE_H
8 #define RETDEC_UNPACKER_SIGNATURE_H
11 #include <initializer_list>
23 #define ANY Signature::Byte(Signature::Byte::Type::WILDCARD, 0x0, 0xFF)
28 #define CAP Signature::Byte(Signature::Byte::Type::CAPTURE, 0x0, 0xFF)
33 #define ANYB(exp, mask) Signature::Byte(Signature::Byte::Type::WILDCARD, exp, mask)
38 #define CAPB(exp, mask) Signature::Byte(Signature::Byte::Type::CAPTURE, exp, mask)
66 MatchSettings(uint64_t offset = 0, uint64_t searchDistance = 0);
122 Byte(
Type type, uint8_t expectedValue, uint8_t wildcardMask);
144 Signature(
const std::initializer_list<Signature::Byte>& initList);
Definition: signature.h:108
uint8_t _wildcardMask
Wildcard mask specifying the bits that are wildcard and that are exact.
Definition: signature.h:140
uint8_t getWildcardMask() const
Definition: signature.cpp:341
Byte & operator=(uint8_t rhs)
Definition: signature.cpp:353
uint8_t _expectedValue
Expected value of the byte.
Definition: signature.h:139
Type _type
Type of the byte.
Definition: signature.h:138
Type
Definition: signature.h:114
@ CAPTURE
Wildcard with capture.
Type getType() const
Definition: signature.cpp:321
bool operator==(uint8_t rhs) const
Definition: signature.cpp:383
bool operator!=(uint8_t rhs) const
Definition: signature.cpp:411
Byte()
Definition: signature.cpp:282
uint8_t getExpectedValue() const
Definition: signature.cpp:331
Definition: signature.h:64
MatchSettings(const MatchSettings &settings)
uint64_t getSearchDistance() const
Definition: signature.cpp:262
MatchSettings(uint64_t offset=0, uint64_t searchDistance=0)
Definition: signature.cpp:223
void setSectionOrSegmentIndex(uint32_t secSegIndex)
MatchSettings & operator=(const MatchSettings &)
uint64_t getOffset() const
Definition: signature.cpp:232
void setOffset(uint64_t offset)
Definition: signature.cpp:242
uint32_t getSectionOrSegmentIndex() const
uint64_t _searchDistance
Maximum searching distance. No searching if this is set 0.
Definition: signature.h:83
bool isSearch() const
Definition: signature.cpp:252
void setSearchDistance(uint64_t distance)
Definition: signature.cpp:272
uint64_t _offset
Offset where to start matching.
Definition: signature.h:82
Definition: signature.h:57
Signature & operator=(const std::initializer_list< Signature::Byte > &initList)
Definition: signature.cpp:43
int64_t matchImpl(const std::vector< uint8_t > &bytesToMatch, uint64_t offset, retdec::utils::DynamicBuffer *captureBuffer) const
Definition: signature.cpp:187
virtual ~Signature()=default
uint64_t getSize() const
Definition: signature.cpp:54
uint64_t getCaptureSize() const
Definition: signature.cpp:64
bool searchMatchImpl(const std::vector< uint8_t > &bytesToMatch, uint64_t offset, uint64_t maxSearchDist, retdec::utils::DynamicBuffer *captureBuffer) const
Definition: signature.cpp:157
std::vector< Signature::Byte > _buffer
Signature bytes buffer.
Definition: signature.h:166
bool match(const MatchSettings &settings, retdec::loader::Image *file) const
Definition: signature.cpp:84
The class for dynamic buffered data manipulation taking the endianness of the data in account.
Definition: dynamic_buffer.h:36
Declaration of class for buffered data mainpulation.
Interface to loader library.
Definition: archive_wrapper.h:19
Supportive functionality for the generic unpacker.