retdec
file_header.h
Go to the documentation of this file.
1 
7 #ifndef FILEINFO_FILE_INFORMATION_FILE_INFORMATION_TYPES_FILE_HEADER_H
8 #define FILEINFO_FILE_INFORMATION_FILE_INFORMATION_TYPES_FILE_HEADER_H
9 
10 #include <limits>
11 
13 
14 namespace retdec {
15 namespace fileinfo {
16 
23 {
24  private:
25  std::string timeStamp;
26  std::string fileStatus;
27  std::string fileVersion;
28  std::string fileHeaderVersion;
29  std::string osAbi;
30  std::string osAbiVersion;
33  unsigned long long numberOfBitsInByte = std::numeric_limits<unsigned long long>::max();
34  unsigned long long numberOfBitsInWord = std::numeric_limits<unsigned long long>::max();
35  unsigned long long fileHeaderSize = std::numeric_limits<unsigned long long>::max();
36  unsigned long long segmentTableOffset = std::numeric_limits<unsigned long long>::max();
37  unsigned long long segmentTableEntrySize = std::numeric_limits<unsigned long long>::max();
38  unsigned long long segmentTableSize = std::numeric_limits<unsigned long long>::max();
39  unsigned long long numberOfSegments = std::numeric_limits<unsigned long long>::max();
40  unsigned long long sectionTableOffset = std::numeric_limits<unsigned long long>::max();
41  unsigned long long sectionTableEntrySize = std::numeric_limits<unsigned long long>::max();
42  unsigned long long sectionTableSize = std::numeric_limits<unsigned long long>::max();
43  unsigned long long declNumberOfSections = std::numeric_limits<unsigned long long>::max();
44  unsigned long long coffFileHeaderSize = std::numeric_limits<unsigned long long>::max();
45  unsigned long long optionalHeaderSize = std::numeric_limits<unsigned long long>::max();
46  unsigned long long checksum = std::numeric_limits<unsigned long long>::max();
47  unsigned long long stackReserveSize = std::numeric_limits<unsigned long long>::max();
48  unsigned long long stackCommitSize = std::numeric_limits<unsigned long long>::max();
49  unsigned long long heapReserveSize = std::numeric_limits<unsigned long long>::max();
50  unsigned long long heapCommitSize = std::numeric_limits<unsigned long long>::max();
51  unsigned long long numberOfDataDirectories = std::numeric_limits<unsigned long long>::max();
52  unsigned long long numberOfSymbolTables = std::numeric_limits<unsigned long long>::max();
53  unsigned long long overlayOffset = std::numeric_limits<unsigned long long>::max();
54  unsigned long long overlaySize = std::numeric_limits<unsigned long long>::max();
55  double overlayEntropy = std::numeric_limits<double>::min();
56  public:
59  std::string getTimeStamp() const;
60  std::string getFileStatus() const;
61  std::string getFileVersion() const;
62  std::string getFileHeaderVersion() const;
63  std::string getOsAbi() const;
64  std::string getOsAbiVersion() const;
65  unsigned long long getFileFlagsSize() const;
66  unsigned long long getFileFlags() const;
67  std::string getFileFlagsStr() const;
68  std::size_t getNumberOfFileFlagsDescriptors() const;
69  void getFileFlagsDescriptors(std::vector<std::string> &desc, std::vector<std::string> &abb) const;
70  unsigned long long getDllFlagsSize() const;
71  unsigned long long getDllFlags() const;
72  std::string getDllFlagsStr() const;
73  std::size_t getNumberOfDllFlagsDescriptors() const;
74  void getDllFlagsDescriptors(std::vector<std::string> &desc, std::vector<std::string> &abb) const;
75  std::string getNumberOfBitsInByteStr() const;
76  std::string getNumberOfBitsInWordStr() const;
77  std::string getFileHeaderSizeStr(std::ios_base &(* format)(std::ios_base &)) const;
78  std::string getSegmentTableOffsetStr(std::ios_base &(* format)(std::ios_base &)) const;
79  std::string getSegmentTableEntrySizeStr(std::ios_base &(* format)(std::ios_base &)) const;
80  std::string getSegmentTableSizeStr(std::ios_base &(* format)(std::ios_base &)) const;
81  std::string getNumberOfSegmentsStr() const;
82  std::string getSectionTableOffsetStr(std::ios_base &(* format)(std::ios_base &)) const;
83  std::string getSectionTableEntrySizeStr(std::ios_base &(* format)(std::ios_base &)) const;
84  std::string getSectionTableSizeStr(std::ios_base &(* format)(std::ios_base &)) const;
85  std::string getDeclaredNumberOfSectionsStr() const;
86  std::string getCoffFileHeaderSizeStr(std::ios_base &(* format)(std::ios_base &)) const;
87  std::string getOptionalHeaderSizeStr(std::ios_base &(* format)(std::ios_base &)) const;
88  std::string getChecksumStr() const;
89  std::string getStackReserveSizeStr(std::ios_base &(* format)(std::ios_base &)) const;
90  std::string getStackCommitSizeStr(std::ios_base &(* format)(std::ios_base &)) const;
91  std::string getHeapReserveSizeStr(std::ios_base &(* format)(std::ios_base &)) const;
92  std::string getHeapCommitSizeStr(std::ios_base &(* format)(std::ios_base &)) const;
93  std::string getNumberOfDataDirectoriesStr() const;
94  std::string getNumberOfSymbolTablesStr() const;
95  std::string getOverlayOffsetStr(std::ios_base &(* format)(std::ios_base &)) const;
96  std::string getOverlaySizeStr(std::ios_base &(* format)(std::ios_base &)) const;
97  std::string getOverlayEntropyStr(std::ios_base &(* format)(std::ios_base &)) const;
99 
102  void setTimeStamp(std::string timestamp);
103  void setFileStatus(std::string status);
104  void setFileVersion(std::string version);
105  void setFileHeaderVersion(std::string version);
106  void setOsAbi(std::string osabi);
107  void setOsAbiVersion(std::string abiversion);
108  void setFileFlagsSize(unsigned long long size);
109  void setFileFlags(unsigned long long flagsArray);
110  void setDllFlagsSize(unsigned long long size);
111  void setDllFlags(unsigned long long flagsArray);
112  void setNumberOfBitsInByte(unsigned long long bitsInByte);
113  void setNumberOfBitsInWord(unsigned long long bitsInWord);
114  void setFileHeaderSize(unsigned long long headerSize);
115  void setSegmentTableOffset(unsigned long long offset);
116  void setSegmentTableEntrySize(unsigned long long entrySize);
117  void setSegmentTableSize(unsigned long long tableSize);
118  void setNumberOfSegments(unsigned long long noOfSegments);
119  void setSectionTableOffset(unsigned long long offset);
120  void setSectionTableEntrySize(unsigned long long entrySize);
121  void setSectionTableSize(unsigned long long tableSize);
122  void setDeclaredNumberOfSections(unsigned long long noOfSections);
123  void setActualNumberOfSections(unsigned long long noOfSections);
124  void setCoffFileHeaderSize(unsigned long long headerSize);
125  void setOptionalHeaderSize(unsigned long long headerSize);
126  void setChecksum(unsigned long long fileChecksum);
127  void setStackReserveSize(unsigned long long size);
128  void setStackCommitSize(unsigned long long size);
129  void setHeapReserveSize(unsigned long long size);
130  void setHeapCommitSize(unsigned long long size);
131  void setNumberOfDataDirectories(unsigned long long directories);
132  void setNumberOfSymbolTables(unsigned long long tables);
133  void setOverlayOffset(unsigned long long offset);
134  void setOverlaySize(unsigned long long size);
135  void setOverlayEntropy(double entr);
137 
140  void addFileFlagsDescriptor(std::string descriptor, std::string abbreviation);
142  void addDllFlagsDescriptor(std::string descriptor, std::string abbreviation);
145 };
146 
147 } // namespace fileinfo
148 } // namespace retdec
149 
150 #endif
Definition: file_header.h:23
unsigned long long heapCommitSize
size of the local heap space to commit
Definition: file_header.h:50
std::string getDeclaredNumberOfSectionsStr() const
Definition: file_header.cpp:259
std::string getNumberOfBitsInWordStr() const
Definition: file_header.cpp:176
void setOptionalHeaderSize(unsigned long long headerSize)
Definition: file_header.cpp:574
void clearDllFlagsDescriptors()
Definition: file_header.cpp:700
unsigned long long numberOfDataDirectories
number of data directories
Definition: file_header.h:51
void setOverlayEntropy(double entr)
Definition: file_header.cpp:664
void setNumberOfSegments(unsigned long long noOfSegments)
Definition: file_header.cpp:520
void setCoffFileHeaderSize(unsigned long long headerSize)
Definition: file_header.cpp:565
unsigned long long heapReserveSize
size of the local heap space to reserve
Definition: file_header.h:49
std::string fileHeaderVersion
version of file header
Definition: file_header.h:28
void clearFileFlagsDescriptors()
Definition: file_header.cpp:682
unsigned long long sectionTableEntrySize
size of one entry in section table
Definition: file_header.h:41
void addFileFlagsDescriptor(std::string descriptor, std::string abbreviation)
Definition: file_header.cpp:674
unsigned long long segmentTableEntrySize
size of one entry in segment table
Definition: file_header.h:37
unsigned long long stackReserveSize
size of the stack to reserve
Definition: file_header.h:47
void setFileFlagsSize(unsigned long long size)
Definition: file_header.cpp:430
std::string getSegmentTableOffsetStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:195
void setStackCommitSize(unsigned long long size)
Definition: file_header.cpp:601
void setSegmentTableEntrySize(unsigned long long entrySize)
Definition: file_header.cpp:502
unsigned long long checksum
file checksum
Definition: file_header.h:46
std::string getFileStatus() const
Definition: file_header.cpp:26
std::string getSegmentTableSizeStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:213
std::string getOverlaySizeStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:358
std::string getSectionTableEntrySizeStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:241
std::string getSectionTableOffsetStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:232
std::string getNumberOfBitsInByteStr() const
Definition: file_header.cpp:167
void setSegmentTableSize(unsigned long long tableSize)
Definition: file_header.cpp:511
std::string getFileHeaderVersion() const
Definition: file_header.cpp:44
void setActualNumberOfSections(unsigned long long noOfSections)
unsigned long long sectionTableSize
size of section table (size of header of sections)
Definition: file_header.h:42
void getDllFlagsDescriptors(std::vector< std::string > &desc, std::vector< std::string > &abb) const
Definition: file_header.cpp:158
void setStackReserveSize(unsigned long long size)
Definition: file_header.cpp:592
unsigned long long coffFileHeaderSize
size of COFF file header
Definition: file_header.h:44
std::string getOptionalHeaderSizeStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:277
void addDllFlagsDescriptor(std::string descriptor, std::string abbreviation)
Definition: file_header.cpp:692
void setHeapCommitSize(unsigned long long size)
Definition: file_header.cpp:619
unsigned long long optionalHeaderSize
size of optional header
Definition: file_header.h:45
void setChecksum(unsigned long long fileChecksum)
Definition: file_header.cpp:583
void setNumberOfDataDirectories(unsigned long long directories)
Definition: file_header.cpp:628
std::string getTimeStamp() const
Definition: file_header.cpp:17
std::string getOverlayEntropyStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:367
std::string getOsAbi() const
Definition: file_header.cpp:53
std::size_t getNumberOfDllFlagsDescriptors() const
Definition: file_header.cpp:146
std::string getFileFlagsStr() const
Definition: file_header.cpp:89
void setSectionTableEntrySize(unsigned long long entrySize)
Definition: file_header.cpp:538
std::string osAbi
target operation system or ABI
Definition: file_header.h:29
std::string getStackReserveSizeStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:295
std::string getNumberOfSegmentsStr() const
Definition: file_header.cpp:222
unsigned long long declNumberOfSections
declared number of sections in file
Definition: file_header.h:43
unsigned long long numberOfSegments
number of segments in file
Definition: file_header.h:39
std::string getOsAbiVersion() const
Definition: file_header.cpp:62
unsigned long long getFileFlags() const
Definition: file_header.cpp:80
void setOsAbi(std::string osabi)
Definition: file_header.cpp:412
unsigned long long sectionTableOffset
offset of section table in file
Definition: file_header.h:40
unsigned long long getDllFlagsSize() const
Definition: file_header.cpp:119
std::string fileStatus
state of file (e.g. ROM image)
Definition: file_header.h:26
void setFileVersion(std::string version)
Definition: file_header.cpp:394
std::string timeStamp
time stamp
Definition: file_header.h:25
unsigned long long stackCommitSize
size of the stack to commit
Definition: file_header.h:48
void setFileStatus(std::string status)
Definition: file_header.cpp:385
std::string fileVersion
version of file
Definition: file_header.h:27
std::size_t getNumberOfFileFlagsDescriptors() const
Definition: file_header.cpp:98
void setOverlayOffset(unsigned long long offset)
Definition: file_header.cpp:646
std::string getOverlayOffsetStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:349
std::string getStackCommitSizeStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:304
unsigned long long segmentTableOffset
offset of segment table in file
Definition: file_header.h:36
unsigned long long getDllFlags() const
Definition: file_header.cpp:128
std::string getHeapCommitSizeStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:322
std::string getDllFlagsStr() const
Definition: file_header.cpp:137
unsigned long long overlayOffset
offset of overlay
Definition: file_header.h:53
void setSegmentTableOffset(unsigned long long offset)
Definition: file_header.cpp:493
void setOsAbiVersion(std::string abiversion)
Definition: file_header.cpp:421
void setSectionTableSize(unsigned long long tableSize)
Definition: file_header.cpp:547
std::string getHeapReserveSizeStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:313
unsigned long long fileHeaderSize
size of this header
Definition: file_header.h:35
Flags dllFlags
DLL flags (set only if file is dynamic-link library)
Definition: file_header.h:32
void setDllFlagsSize(unsigned long long size)
Definition: file_header.cpp:448
void setOverlaySize(unsigned long long size)
Definition: file_header.cpp:655
std::string getCoffFileHeaderSizeStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:268
std::string getNumberOfDataDirectoriesStr() const
Definition: file_header.cpp:331
void setTimeStamp(std::string timestamp)
Definition: file_header.cpp:376
unsigned long long numberOfSymbolTables
number of symbol tables
Definition: file_header.h:52
std::string getFileHeaderSizeStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:185
std::string osAbiVersion
version of operation system or ABI
Definition: file_header.h:30
void setSectionTableOffset(unsigned long long offset)
Definition: file_header.cpp:529
void setDllFlags(unsigned long long flagsArray)
Definition: file_header.cpp:457
std::string getSegmentTableEntrySizeStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:204
void setFileHeaderVersion(std::string version)
Definition: file_header.cpp:403
void getFileFlagsDescriptors(std::vector< std::string > &desc, std::vector< std::string > &abb) const
Definition: file_header.cpp:110
unsigned long long segmentTableSize
size of segment table (size of header of segments)
Definition: file_header.h:38
std::string getSectionTableSizeStr(std::ios_base &(*format)(std::ios_base &)) const
Definition: file_header.cpp:250
std::string getFileVersion() const
Definition: file_header.cpp:35
unsigned long long overlaySize
size of overlay
Definition: file_header.h:54
unsigned long long getFileFlagsSize() const
Definition: file_header.cpp:71
void setHeapReserveSize(unsigned long long size)
Definition: file_header.cpp:610
unsigned long long numberOfBitsInByte
number of bits in one byte
Definition: file_header.h:33
void setNumberOfBitsInByte(unsigned long long bitsInByte)
Definition: file_header.cpp:466
unsigned long long numberOfBitsInWord
number of bits in one word
Definition: file_header.h:34
void setNumberOfBitsInWord(unsigned long long bitsInWord)
Definition: file_header.cpp:475
void setFileFlags(unsigned long long flagsArray)
Definition: file_header.cpp:439
std::string getNumberOfSymbolTablesStr() const
Definition: file_header.cpp:340
double overlayEntropy
overlay data entropy
Definition: file_header.h:55
void setDeclaredNumberOfSections(unsigned long long noOfSections)
Definition: file_header.cpp:556
std::string getChecksumStr() const
Definition: file_header.cpp:286
void setNumberOfSymbolTables(unsigned long long tables)
Definition: file_header.cpp:637
void setFileHeaderSize(unsigned long long headerSize)
Definition: file_header.cpp:484
Flags fileFlags
file flags
Definition: file_header.h:31
Definition: flags.h:20
Class for binary flags.
Definition: archive_wrapper.h:19