retdec
DebugDirectory.h
Go to the documentation of this file.
1 /*
2 * DebugDirectory.h - Part of the PeLib library.
3 *
4 * Copyright (c) 2004 - 2005 Sebastian Porst (webmaster@the-interweb.com)
5 * All rights reserved.
6 *
7 * This software is licensed under the zlib/libpng License.
8 * For more details see http://www.opensource.org/licenses/zlib-license.php
9 * or the license information file (license.htm) in the root directory
10 * of PeLib.
11 */
12 
13 #ifndef RETDEC_PELIB_DEBUGDIRECTORY_H
14 #define RETDEC_PELIB_DEBUGDIRECTORY_H
15 
17 
18 namespace PeLib
19 {
22  {
23  protected:
25  std::vector<PELIB_IMG_DEBUG_DIRECTORY> m_vDebugInfo;
27  std::vector<std::pair<unsigned int, unsigned int>> m_occupiedAddresses;
28 
29  void read(ImageLoader & imageLoader, std::vector<PELIB_IMG_DEBUG_DIRECTORY> & debugInfo, std::uint32_t rva, std::uint32_t size);
30 
31  public:
32  virtual ~DebugDirectory() = default;
33 
35  int read(std::istream& inStream, ImageLoader & imageLoader);
37  void clear(); // EXPORT
39  void rebuild(std::vector<std::uint8_t>& obBuffer) const; // EXPORT
41  unsigned int size() const;
43  int write(const std::string& strFilename, unsigned int uiOffset) const; // EXPORT
44 
46  unsigned int calcNumberOfEntries() const; // EXPORT
47 
49  void addEntry(); // EXPORT
51  void removeEntry(std::size_t uiIndex); // EXPORT
52 
54  std::uint32_t getCharacteristics(std::size_t uiIndex) const; // EXPORT
56  std::uint32_t getTimeDateStamp(std::size_t uiIndex) const; // EXPORT
58  std::uint16_t getMajorVersion(std::size_t uiIndex) const; // EXPORT
60  std::uint16_t getMinorVersion(std::size_t uiIndex) const; // EXPORT
62  std::uint32_t getType(std::size_t uiIndex) const; // EXPORT
64  std::uint32_t getSizeOfData(std::size_t uiIndex) const; // EXPORT
66  std::uint32_t getAddressOfRawData(std::size_t uiIndex) const; // EXPORT
68  std::uint32_t getPointerToRawData(std::size_t uiIndex) const; // EXPORT
69  std::vector<std::uint8_t> getData(std::size_t index) const; // EXPORT
70 
72  void setCharacteristics(std::size_t uiIndex, std::uint32_t dwValue); // EXPORT
74  void setTimeDateStamp(std::size_t uiIndex, std::uint32_t dwValue); // EXPORT
76  void setMajorVersion(std::size_t uiIndex, std::uint16_t wValue); // EXPORT
78  void setMinorVersion(std::size_t uiIndex, std::uint16_t wValue); // EXPORT
80  void setType(std::size_t uiIndex, std::uint32_t dwValue); // EXPORT
82  void setSizeOfData(std::size_t uiIndex, std::uint32_t dwValue); // EXPORT
84  void setAddressOfRawData(std::size_t uiIndex, std::uint32_t dwValue); // EXPORT
86  void setPointerToRawData(std::size_t uiIndex, std::uint32_t dwValue); // EXPORT
87  void setData(std::size_t index, const std::vector<std::uint8_t>& data); // EXPORT
88 
89  const std::vector<std::pair<unsigned int, unsigned int>>& getOccupiedAddresses() const;
90  };
91 }
92 #endif
Class that handles the Debug directory.
Definition: DebugDirectory.h:22
const std::vector< std::pair< unsigned int, unsigned int > > & getOccupiedAddresses() const
Definition: DebugDirectory.cpp:379
std::uint32_t getTimeDateStamp(std::size_t uiIndex) const
Returns the TimeDateStamp value of a debug structure.
Definition: DebugDirectory.cpp:210
std::vector< std::pair< unsigned int, unsigned int > > m_occupiedAddresses
Stores RVAs which are occupied by this debug directory.
Definition: DebugDirectory.h:27
std::uint32_t getType(std::size_t uiIndex) const
Returns the Type value of a debug structure.
Definition: DebugDirectory.cpp:243
std::uint32_t getAddressOfRawData(std::size_t uiIndex) const
Returns the AddressOfRawData value of a debug structure.
Definition: DebugDirectory.cpp:265
std::uint32_t getSizeOfData(std::size_t uiIndex) const
Returns the SizeOfData value of a debug structure.
Definition: DebugDirectory.cpp:254
void read(ImageLoader &imageLoader, std::vector< PELIB_IMG_DEBUG_DIRECTORY > &debugInfo, std::uint32_t rva, std::uint32_t size)
Definition: DebugDirectory.cpp:72
std::vector< std::uint8_t > getData(std::size_t index) const
Definition: DebugDirectory.cpp:281
void setSizeOfData(std::size_t uiIndex, std::uint32_t dwValue)
Sets the SizeOfData value of a debug structure.
Definition: DebugDirectory.cpp:347
std::vector< PELIB_IMG_DEBUG_DIRECTORY > m_vDebugInfo
Stores the various DebugDirectory structures.
Definition: DebugDirectory.h:25
void setMajorVersion(std::size_t uiIndex, std::uint16_t wValue)
Sets the MajorVersion value of a debug structure.
Definition: DebugDirectory.cpp:314
void setType(std::size_t uiIndex, std::uint32_t dwValue)
Sets the Type value of a debug structure.
Definition: DebugDirectory.cpp:336
std::uint16_t getMajorVersion(std::size_t uiIndex) const
Returns the MajorVersion value of a debug structure.
Definition: DebugDirectory.cpp:221
void setCharacteristics(std::size_t uiIndex, std::uint32_t dwValue)
Sets the Characteristics value of a debug structure.
Definition: DebugDirectory.cpp:292
void removeEntry(std::size_t uiIndex)
Removes a debug structure.
Definition: DebugDirectory.cpp:188
std::uint32_t getCharacteristics(std::size_t uiIndex) const
Returns the Characteristics value of a debug structure.
Definition: DebugDirectory.cpp:199
std::uint32_t getPointerToRawData(std::size_t uiIndex) const
Returns the PointerToRawData value of a debug structure.
Definition: DebugDirectory.cpp:276
virtual ~DebugDirectory()=default
std::uint16_t getMinorVersion(std::size_t uiIndex) const
Returns the MinorVersion value of a debug structure.
Definition: DebugDirectory.cpp:232
void setTimeDateStamp(std::size_t uiIndex, std::uint32_t dwValue)
Sets the TimeDateStamp value of a debug structure.
Definition: DebugDirectory.cpp:303
int write(const std::string &strFilename, unsigned int uiOffset) const
Writes the current Debug directory back to a file.
Definition: DebugDirectory.cpp:133
void addEntry()
Adds a new debug structure.
Definition: DebugDirectory.cpp:177
unsigned int size() const
Returns the size the current Debug directory needs after rebuilding.
Definition: DebugDirectory.cpp:124
void setAddressOfRawData(std::size_t uiIndex, std::uint32_t dwValue)
Sets the AddressOfRawData value of a debug structure.
Definition: DebugDirectory.cpp:358
void setMinorVersion(std::size_t uiIndex, std::uint16_t wValue)
Sets the MinorVersion value of a debug structure.
Definition: DebugDirectory.cpp:325
void rebuild(std::vector< std::uint8_t > &obBuffer) const
Rebuilds the current Debug directory.
Definition: DebugDirectory.cpp:104
unsigned int calcNumberOfEntries() const
Returns the number of DebugDirectory image structures in the current DebugDirectory.
Definition: DebugDirectory.cpp:168
void setData(std::size_t index, const std::vector< std::uint8_t > &data)
Definition: DebugDirectory.cpp:374
void setPointerToRawData(std::size_t uiIndex, std::uint32_t dwValue)
Sets the PointerToRawData value of a debug structure.
Definition: DebugDirectory.cpp:369
Definition: ImageLoader.h:138
Definition: BoundImportDirectory.h:21