BearParser
Portable Executable parsing library (from PE-bear)
Loading...
Searching...
No Matches
PECore.h
Go to the documentation of this file.
1#pragma once
2
3#include "../Executable.h"
4#include "pe_formats.h"
5
6//class for internal use of PEFile
7class PECore
8{
9public:
10
12 : buf(NULL), dos(NULL), fHdr(NULL), opt32(NULL), opt64(NULL) {}
13
14 virtual ~PECore()
15 {
16 reset();
17 }
18
19 bool wrap(AbstractByteBuffer *v_buf);
20
21 virtual offset_t getRawSize() const { return static_cast<offset_t>(buf->getContentSize()); }
22
23 virtual bufsize_t getAlignment(Executable::addr_type aType) const;
24 virtual offset_t getImageBase();
25 virtual bufsize_t getImageSize();
26
30 offset_t secHdrsOffset() const;
33 bufsize_t hdrsSize() const;
34
35 void setImageSize(bufsize_t newSize)
36 {
37 if (opt32) {
38 this->opt32->SizeOfImage = newSize;
39 }
40 else if (opt64) {
41 this->opt64->SizeOfImage = newSize;
42 }
43 }
44
45 IMAGE_FILE_HEADER *getFileHeader() const
46 {
47 return fHdr;
48 }
49
50protected:
51 void reset();
53
54 IMAGE_DOS_HEADER *dos;
55 IMAGE_FILE_HEADER* fHdr;
56 IMAGE_OPTIONAL_HEADER32* opt32;
57 IMAGE_OPTIONAL_HEADER64* opt64;
58
59friend class PEFile;
60};
61
uint32_t bufsize_t
uint64_t offset_t
virtual bufsize_t getContentSize()=0
Definition: PECore.h:8
virtual ~PECore()
Definition: PECore.h:14
virtual bufsize_t getAlignment(Executable::addr_type aType) const
Definition: PECore.cpp:104
bufsize_t hdrsSize() const
Definition: PECore.cpp:129
offset_t peOptHdrOffset() const
Definition: PECore.cpp:74
IMAGE_OPTIONAL_HEADER32 * opt32
Definition: PECore.h:56
bool wrap(AbstractByteBuffer *v_buf)
Definition: PECore.cpp:13
virtual offset_t getImageBase()
Definition: PECore.cpp:141
offset_t peFileHdrOffset() const
Definition: PECore.cpp:64
AbstractByteBuffer * buf
Definition: PECore.h:52
void reset()
Definition: PECore.cpp:5
virtual bufsize_t getImageSize()
Definition: PECore.cpp:117
IMAGE_FILE_HEADER * getFileHeader() const
Definition: PECore.h:45
PECore()
Definition: PECore.h:11
offset_t peSignatureOffset() const
Definition: PECore.cpp:59
IMAGE_FILE_HEADER * fHdr
Definition: PECore.h:55
bufsize_t peNtHeadersSize() const
Definition: PECore.cpp:83
virtual offset_t getRawSize() const
Definition: PECore.h:21
offset_t secHdrsOffset() const
Definition: PECore.cpp:91
IMAGE_OPTIONAL_HEADER64 * opt64
Definition: PECore.h:57
Executable::exe_bits getHdrBitMode() const
Definition: PECore.cpp:51
void setImageSize(bufsize_t newSize)
Definition: PECore.h:35
IMAGE_DOS_HEADER * dos
Definition: PECore.h:54
Definition: PEFile.h:41