binlex
pe.h
1 #ifndef PE_H
2 #define PE_H
3 
4 #ifdef _WIN32
5 #include <Windows.h>
6 #include <stdexcept>
7 #endif
8 
9 #include <iostream>
10 #include <memory>
11 #include <set>
12 #include <LIEF/PE.hpp>
13 #include "common.h"
14 #include "file.h"
15 #include <vector>
16 #include <cassert>
17 
18 #ifdef _WIN32
19 #define BINLEX_EXPORT __declspec(dllexport)
20 #else
21 #define BINLEX_EXPORT
22 #endif
23 
24 using namespace std;
25 using namespace LIEF::PE;
26 
27 namespace binlex {
28  class PE : public File{
29  private:
30  bool ParseSections();
31  public:
32  #ifndef _WIN32
33  MACHINE_TYPES mode = MACHINE_TYPES::IMAGE_FILE_MACHINE_UNKNOWN;
34  #else
35  MACHINE_TYPES mode = MACHINE_TYPES::IMAGE_FILE_MACHINE_UNKNOWN;
36  #endif
37  unique_ptr<LIEF::PE::Binary> binary;
38  BINLEX_EXPORT PE();
39  struct Section sections[BINARY_MAX_SECTIONS];
40  uint32_t total_exec_sections;
46  BINLEX_EXPORT bool Setup(MACHINE_TYPES input_mode);
47  /*
48  Check if the PE file is a .NET file
49  @return bool
50  */
51  BINLEX_EXPORT bool IsDotNet();
56  BINLEX_EXPORT bool HasLimitations();
57  virtual bool ReadVector(const std::vector<uint8_t> &data);
58  BINLEX_EXPORT ~PE();
59  };
60 };
61 
62 #endif
binlex::PE
Definition: pe.h:28
binlex::File
Definition: file.h:14
binlex
the binlex namespace