retdec
RichHeader.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_PELIB_RICHHEADER_H
8 #define RETDEC_PELIB_RICHHEADER_H
9 
10 #include <cstdint>
11 #include <vector>
12 #include <map>
13 
14 namespace PeLib
15 {
19  class RichHeader
20  {
21  public:
22  typedef std::vector<PELIB_IMAGE_RICH_HEADER_RECORD>::const_iterator richHeaderIterator;
23  private:
26  std::uint32_t key;
27  std::size_t noOfIters;
28  std::vector<std::uint32_t> decryptedHeader;
29  std::vector<PELIB_IMAGE_RICH_HEADER_RECORD> records;
30 
31  void init();
32  void setValidStructure();
34  bool analyze(bool ignoreInvalidKey = false);
35  void read(InputBuffer& inputbuffer, std::size_t uiSize, bool ignoreInvalidKey);
36  public:
37  RichHeader();
38  ~RichHeader();
39 
40  int read(
41  std::istream& inStream,
42  std::size_t uiOffset,
43  std::size_t uiSize,
44  bool ignoreInvalidKey);
45  bool isHeaderValid() const;
46  bool isStructureValid() const;
47  std::size_t getNumberOfIterations() const;
48  std::uint32_t getKey() const;
49  const std::uint32_t* getDecryptedHeaderItem(std::size_t index) const;
50  std::string getDecryptedHeaderItemSignature(std::size_t index) const;
51  std::string getDecryptedHeaderItemsSignature(std::initializer_list<std::size_t> indexes) const;
52  std::vector<std::uint8_t> getDecryptedHeaderBytes() const;
53  richHeaderIterator begin() const;
54  richHeaderIterator end() const;
55  };
56 }
57 
58 #endif
Definition: InputBuffer.h:23
Definition: RichHeader.h:20
void getUserFriendlyProductName(PELIB_IMAGE_RICH_HEADER_RECORD &record)
Definition: RichHeader.cpp:739
std::vector< std::uint32_t > decryptedHeader
Definition: RichHeader.h:28
std::string getDecryptedHeaderItemSignature(std::size_t index) const
Definition: RichHeader.cpp:936
std::uint32_t key
Definition: RichHeader.h:26
bool isStructureValid() const
Definition: RichHeader.cpp:916
const std::uint32_t * getDecryptedHeaderItem(std::size_t index) const
Definition: RichHeader.cpp:931
std::size_t noOfIters
Definition: RichHeader.h:27
void read(InputBuffer &inputbuffer, std::size_t uiSize, bool ignoreInvalidKey)
Definition: RichHeader.cpp:839
std::vector< std::uint8_t > getDecryptedHeaderBytes() const
Definition: RichHeader.cpp:954
richHeaderIterator end() const
Definition: RichHeader.cpp:966
bool analyze(bool ignoreInvalidKey=false)
Definition: RichHeader.cpp:797
void init()
Definition: RichHeader.cpp:724
std::vector< PELIB_IMAGE_RICH_HEADER_RECORD > records
Definition: RichHeader.h:29
bool isHeaderValid() const
Definition: RichHeader.cpp:911
std::uint32_t getKey() const
Definition: RichHeader.cpp:926
~RichHeader()
Definition: RichHeader.cpp:719
bool validStructure
Definition: RichHeader.h:25
void setValidStructure()
Definition: RichHeader.cpp:734
std::string getDecryptedHeaderItemsSignature(std::initializer_list< std::size_t > indexes) const
Definition: RichHeader.cpp:942
std::size_t getNumberOfIterations() const
Definition: RichHeader.cpp:921
RichHeader()
Definition: RichHeader.cpp:714
std::vector< PELIB_IMAGE_RICH_HEADER_RECORD >::const_iterator richHeaderIterator
Definition: RichHeader.h:22
richHeaderIterator begin() const
Definition: RichHeader.cpp:961
bool headerIsValid
Definition: RichHeader.h:24
Definition: BoundImportDirectory.h:21
Definition: PeLibAux.h:1266