retdec
Classes | Private Attributes | List of all members
retdec::patterngen::SymbolPattern Class Reference

#include <symbol_pattern.h>

Collaboration diagram for retdec::patterngen::SymbolPattern:
Collaboration graph
[legend]

Classes

struct  Reference
 

Public Member Functions

 SymbolPattern (bool isLittleEndian, std::size_t wordBitWidth)
 Constructors and destructor. More...
 
void setName (const std::string &symbolName)
 Setters. More...
 
void setRuleName (const std::string &ruleName)
 
void setSourcePath (const std::string &filePath)
 
void setArchitectureName (const std::string &archName)
 
void loadData (std::vector< unsigned char > &&symbolData)
 Loading methods. More...
 
void loadData (const std::vector< unsigned char > &symbolData)
 
void addReference (const std::string &refName, const std::size_t &offset, const std::vector< std::uint8_t > &mask)
 
void printYaraRule (std::ostream &outputStream, const std::string &withNote="") const
 Output methods. More...
 
void addRuleToBuilder (yaramod::YaraFileBuilder &yaraBuilder, const std::string &withNote="") const
 

Private Member Functions

std::string getReferenceString () const
 Data formatting methods. More...
 
std::shared_ptr< yaramod::HexString > getHexPattern () const
 
void createBytePattern (std::uint8_t mask, std::uint8_t byte, yaramod::YaraHexStringBuilder &builder) const
 

Private Attributes

bool isLittle
 Endianness. More...
 
std::size_t bitWidth
 Word length. More...
 
std::vector< Referencerefs
 References. More...
 
std::vector< std::uint8_t > data
 Symbol data. More...
 
std::string symbolName
 Symbol name. More...
 
std::string ruleName
 Rule name. More...
 
std::vector< Metametas
 Other optional metas. More...
 

Detailed Description

Pattern for one symbol.

Constructor & Destructor Documentation

◆ SymbolPattern()

retdec::patterngen::SymbolPattern::SymbolPattern ( bool  isLittleEndian,
std::size_t  wordBitWidth 
)

Constructors and destructor.

Default constructor.

Parameters
isLittleEndianbyte endianness
wordBitWidthword length in bits

Member Function Documentation

◆ addReference()

void retdec::patterngen::SymbolPattern::addReference ( const std::string &  refName,
const std::size_t &  offset,
const std::vector< std::uint8_t > &  mask 
)

Add one symbol relocation/reference.

Parameters
refNamename of referenced symbol
offsetoffset of reference in symbol data
maskrelocation mask vector

◆ addRuleToBuilder()

void retdec::patterngen::SymbolPattern::addRuleToBuilder ( yaramod::YaraFileBuilder &  yaraBuilder,
const std::string &  withNote = "" 
) const

Add pattern to yaramod file builder.

Parameters
yaraBuilderbuilder to add rule to
withNoteoptional note that will be added to the rule

◆ createBytePattern()

void retdec::patterngen::SymbolPattern::createBytePattern ( std::uint8_t  mask,
std::uint8_t  byte,
yaramod::YaraHexStringBuilder &  builder 
) const
private

Create pattern for one byte.

Parameters
maskrelocation mask
bytesource byte
builderbuilder to add byte pattern to

◆ getHexPattern()

std::shared_ptr< HexString > retdec::patterngen::SymbolPattern::getHexPattern ( ) const
private

Get hexadecimal pattern.

Returns
shared pointer to HexString pattern

◆ getReferenceString()

std::string retdec::patterngen::SymbolPattern::getReferenceString ( ) const
private

Data formatting methods.

Format string of references as offset-name pairs.

Returns
string with references

◆ loadData() [1/2]

void retdec::patterngen::SymbolPattern::loadData ( const std::vector< unsigned char > &  symbolData)

Load symbol data.

Parameters
symbolDatasymbol data

◆ loadData() [2/2]

void retdec::patterngen::SymbolPattern::loadData ( std::vector< unsigned char > &&  symbolData)

Loading methods.

Load symbol data by move.

Parameters
symbolDatasymbol data

◆ printYaraRule()

void retdec::patterngen::SymbolPattern::printYaraRule ( std::ostream &  outputStream,
const std::string &  withNote = "" 
) const

Output methods.

Print pattern as YARA rule to stream.

Parameters
outputStreamstream to print information to
withNoteoptional note that will be added to the rule

◆ setArchitectureName()

void retdec::patterngen::SymbolPattern::setArchitectureName ( const std::string &  archName)

Set architecture name path.

If not provided, attribute is omitted.

Parameters
archNamearchitecture name

◆ setName()

void retdec::patterngen::SymbolPattern::setName ( const std::string &  symbolName)

Setters.

Set symbol name.

If not provided, string 'unknown_symbol' is used.

Parameters
symbolNamename of symbol

◆ setRuleName()

void retdec::patterngen::SymbolPattern::setRuleName ( const std::string &  ruleName)

Set rule name.

If not provided, string 'unknown_rule' is used. Only alpha-numeric chars are allowed, others are replaced with underscore.

Parameters
ruleNamename of rule

◆ setSourcePath()

void retdec::patterngen::SymbolPattern::setSourcePath ( const std::string &  filePath)

Set source path.

If not provided, attribute is omitted.

Parameters
filePathpath to source file

Member Data Documentation

◆ bitWidth

std::size_t retdec::patterngen::SymbolPattern::bitWidth
private

Word length.

◆ data

std::vector<std::uint8_t> retdec::patterngen::SymbolPattern::data
private

Symbol data.

◆ isLittle

bool retdec::patterngen::SymbolPattern::isLittle
private

Endianness.

◆ metas

std::vector<Meta> retdec::patterngen::SymbolPattern::metas
private

Other optional metas.

◆ refs

std::vector<Reference> retdec::patterngen::SymbolPattern::refs
private

References.

◆ ruleName

std::string retdec::patterngen::SymbolPattern::ruleName
private

Rule name.

◆ symbolName

std::string retdec::patterngen::SymbolPattern::symbolName
private

Symbol name.


The documentation for this class was generated from the following files: