7 #ifndef RETDEC_PATTERNGEN_PATTERN_EXTRACTOR_TYPES_SYMBOL_PATTERN_H
8 #define RETDEC_PATTERNGEN_PATTERN_EXTRACTOR_TYPES_SYMBOL_PATTERN_H
14 #include "yaramod/builder/yara_hex_string_builder.h"
18 class YaraFileBuilder;
22 namespace patterngen {
24 using Meta = std::pair<std::string, std::string>;
39 std::vector<std::uint8_t>
mask;
45 std::vector<Reference>
refs;
46 std::vector<std::uint8_t>
data;
58 yaramod::YaraHexStringBuilder &builder)
const;
77 void loadData(std::vector<unsigned char> &&symbolData);
78 void loadData(
const std::vector<unsigned char> &symbolData);
79 void addReference(
const std::string &refName,
const std::size_t &offset,
80 const std::vector<std::uint8_t> &mask);
86 const std::string &withNote =
"")
const;
88 const std::string &withNote =
"")
const;
Definition: symbol_pattern.h:30
void loadData(std::vector< unsigned char > &&symbolData)
Loading methods.
Definition: symbol_pattern.cpp:181
void setSourcePath(const std::string &filePath)
Definition: symbol_pattern.cpp:157
void setName(const std::string &symbolName)
Setters.
Definition: symbol_pattern.cpp:130
std::string getReferenceString() const
Data formatting methods.
Definition: symbol_pattern.cpp:28
std::vector< std::uint8_t > data
Symbol data.
Definition: symbol_pattern.h:46
std::size_t bitWidth
Word length.
Definition: symbol_pattern.h:44
std::vector< Meta > metas
Other optional metas.
Definition: symbol_pattern.h:51
std::string symbolName
Symbol name.
Definition: symbol_pattern.h:49
void createBytePattern(std::uint8_t mask, std::uint8_t byte, yaramod::YaraHexStringBuilder &builder) const
Definition: symbol_pattern.cpp:83
void setRuleName(const std::string &ruleName)
Definition: symbol_pattern.cpp:144
void addRuleToBuilder(yaramod::YaraFileBuilder &yaraBuilder, const std::string &withNote="") const
Definition: symbol_pattern.cpp:239
void printYaraRule(std::ostream &outputStream, const std::string &withNote="") const
Output methods.
Definition: symbol_pattern.cpp:219
std::string ruleName
Rule name.
Definition: symbol_pattern.h:50
bool isLittle
Endianness.
Definition: symbol_pattern.h:43
void addReference(const std::string &refName, const std::size_t &offset, const std::vector< std::uint8_t > &mask)
Definition: symbol_pattern.cpp:205
SymbolPattern(bool isLittleEndian, std::size_t wordBitWidth)
Constructors and destructor.
Definition: symbol_pattern.cpp:116
void setArchitectureName(const std::string &archName)
Definition: symbol_pattern.cpp:170
std::shared_ptr< yaramod::HexString > getHexPattern() const
Definition: symbol_pattern.cpp:55
std::vector< Reference > refs
References.
Definition: symbol_pattern.h:45
std::pair< std::string, std::string > Meta
Definition: symbol_pattern.h:24
bool isLittleEndian()
Finds out if the runtime architecture is little endian.
Definition: system.cpp:16
Definition: archive_wrapper.h:19
Definition: symbol_pattern.h:17
Definition: symbol_pattern.h:36
std::string name
Name of referenced symbol.
Definition: symbol_pattern.h:37
std::size_t offset
Offset to symbol data.
Definition: symbol_pattern.h:38
std::vector< std::uint8_t > mask
Relocation mask.
Definition: symbol_pattern.h:39