7 #ifndef RETDEC_COMMON_PATTERN_H
8 #define RETDEC_COMMON_PATTERN_H
33 std::optional<unsigned> size = std::nullopt,
34 std::optional<unsigned> entrySize = std::nullopt);
40 std::optional<unsigned> size = std::nullopt,
41 std::optional<unsigned> entrySize = std::nullopt);
47 std::optional<unsigned> size = std::nullopt,
48 std::optional<unsigned> entrySize = std::nullopt);
68 void setSize(
const unsigned size);
79 std::optional<unsigned>
getSize()
const;
94 std::optional<unsigned> size,
95 std::optional<unsigned> entrySize,
109 const std::string& name =
"",
110 const std::string& description =
"",
111 const std::string& yaraRuleName =
"");
113 const std::string& name =
"",
114 const std::string& description =
"",
115 const std::string& yaraRuleName =
"");
117 const std::string& name =
"",
118 const std::string& description =
"",
119 const std::string& yaraRuleName =
"");
121 const std::string& name =
"",
122 const std::string& description =
"",
123 const std::string& yaraRuleName =
"");
125 const std::string& name =
"",
126 const std::string& description =
"",
127 const std::string& yaraRuleName =
"");
129 const std::string& name =
"",
130 const std::string& description =
"",
131 const std::string& yaraRuleName =
"");
133 const std::string& name =
"",
134 const std::string& description =
"",
135 const std::string& yaraRuleName =
"");
137 const std::string& name =
"",
138 const std::string& description =
"",
139 const std::string& yaraRuleName =
"");
141 const std::string& name =
"",
142 const std::string& description =
"",
143 const std::string& yaraRuleName =
"");
160 void setName(
const std::string& name);
194 Pattern(
const std::string& name,
195 const std::string& description,
196 const std::string& yaraRuleName,
static const uint64_t Undefined
Definition: address.h:47
bool isTypeIntegral() const
Definition: pattern.cpp:92
eType _type
Definition: pattern.h:103
void setEntrySize(const unsigned entrySize)
Definition: pattern.cpp:117
bool isOffsetDefined() const
Definition: pattern.cpp:67
std::optional< unsigned > getEntrySize() const
Definition: pattern.cpp:152
bool isTypeUnknown() const
Definition: pattern.cpp:87
std::optional< unsigned > _entrySize
Definition: pattern.h:102
void setIsTypeFloatingPoint()
Definition: pattern.cpp:132
retdec::common::Address _offset
Definition: pattern.h:99
void setIsTypeUnknown()
Definition: pattern.cpp:122
retdec::common::Address _address
Definition: pattern.h:100
bool isSizeDefined() const
Definition: pattern.cpp:77
bool isAddressDefined() const
Definition: pattern.cpp:72
bool isEntrySizeDefined() const
Definition: pattern.cpp:82
void setIsTypeIntegral()
Definition: pattern.cpp:127
bool isTypeFloatingPoint() const
Definition: pattern.cpp:97
Match()
Definition: pattern.cpp:19
std::optional< unsigned > getSize() const
Definition: pattern.cpp:147
void setSize(const unsigned size)
Definition: pattern.cpp:112
std::optional< unsigned > _size
Definition: pattern.h:101
eType
Definition: pattern.h:85
void setAddress(const retdec::common::Address &address)
Definition: pattern.cpp:107
retdec::common::Address getOffset() const
Definition: pattern.cpp:137
bool operator!=(const Match &val) const
Definition: pattern.cpp:170
static Match unknown(const retdec::common::Address &offset=retdec::common::Address::Undefined, const retdec::common::Address &address=retdec::common::Address::Undefined, std::optional< unsigned > size=std::nullopt, std::optional< unsigned > entrySize=std::nullopt)
Definition: pattern.cpp:40
bool operator==(const Match &val) const
Definition: pattern.cpp:161
void setOffset(const retdec::common::Address &offset)
Definition: pattern.cpp:102
static Match integral(const retdec::common::Address &offset=retdec::common::Address::Undefined, const retdec::common::Address &address=retdec::common::Address::Undefined, std::optional< unsigned > size=std::nullopt, std::optional< unsigned > entrySize=std::nullopt)
Definition: pattern.cpp:49
static Match floatingPoint(const retdec::common::Address &offset=retdec::common::Address::Undefined, const retdec::common::Address &address=retdec::common::Address::Undefined, std::optional< unsigned > size=std::nullopt, std::optional< unsigned > entrySize=std::nullopt)
Definition: pattern.cpp:58
retdec::common::Address getAddress() const
Definition: pattern.cpp:142
static Pattern malwareLittle(const std::string &name="", const std::string &description="", const std::string &yaraRuleName="")
Definition: pattern.cpp:237
static Pattern malwareBig(const std::string &name="", const std::string &description="", const std::string &yaraRuleName="")
Definition: pattern.cpp:242
Pattern()
Definition: pattern.cpp:181
eType
Definition: pattern.h:180
bool isEndianBig() const
Definition: pattern.cpp:272
std::string _name
Definition: pattern.h:204
std::string getName() const
Definition: pattern.cpp:322
static Pattern other(const std::string &name="", const std::string &description="", const std::string &yaraRuleName="")
Definition: pattern.cpp:202
bool isEndianUnknown() const
Definition: pattern.cpp:262
static Pattern otherBig(const std::string &name="", const std::string &description="", const std::string &yaraRuleName="")
Definition: pattern.cpp:212
void setIsTypeMalware()
Definition: pattern.cpp:302
std::string _description
Definition: pattern.h:205
std::string getYaraRuleName() const
Definition: pattern.cpp:332
static Pattern cryptoBig(const std::string &name="", const std::string &description="", const std::string &yaraRuleName="")
Definition: pattern.cpp:227
void setIsTypeCrypto()
Definition: pattern.cpp:297
void setName(const std::string &name)
Definition: pattern.cpp:277
bool isEndianLittle() const
Definition: pattern.cpp:267
static Pattern cryptoLittle(const std::string &name="", const std::string &description="", const std::string &yaraRuleName="")
Definition: pattern.cpp:222
static Pattern malware(const std::string &name="", const std::string &description="", const std::string &yaraRuleName="")
Definition: pattern.cpp:232
void setIsEndianBig()
Definition: pattern.cpp:317
bool isTypeCrypto() const
Definition: pattern.cpp:252
bool operator==(const Pattern &val) const
Definition: pattern.cpp:341
static Pattern crypto(const std::string &name="", const std::string &description="", const std::string &yaraRuleName="")
Definition: pattern.cpp:217
void setYaraRuleName(const std::string &yaraRuleName)
Definition: pattern.cpp:287
eEndian
Definition: pattern.h:187
std::string _yaraRuleName
Definition: pattern.h:206
eEndian _endian
Definition: pattern.h:208
void setIsEndianUnknown()
Definition: pattern.cpp:307
bool isTypeMalware() const
Definition: pattern.cpp:257
void setIsEndianLittle()
Definition: pattern.cpp:312
bool isTypeOther() const
Definition: pattern.cpp:247
std::string getDescription() const
Definition: pattern.cpp:327
eType _type
Definition: pattern.h:207
void setIsTypeOther()
Definition: pattern.cpp:292
std::vector< Match > matches
Definition: pattern.h:201
void setDescription(const std::string &description)
Definition: pattern.cpp:282
static Pattern otherLittle(const std::string &name="", const std::string &description="", const std::string &yaraRuleName="")
Definition: pattern.cpp:207
bool operator!=(const Pattern &val) const
Definition: pattern.cpp:351
Address, address pair and other derived class representation.
std::vector< Pattern > PatternContainer
Definition: pattern.h:211
Definition: archive_wrapper.h:19