BearParser
Portable Executable parsing library (from PE-bear)
Loading...
Searching...
No Matches
MappedExe.h
Go to the documentation of this file.
1#pragma once
2#include <map>
3
4#include "Executable.h"
5#include "ExeElementWrapper.h"
6
8{
9public:
10 enum WRAPPERS {
11 WR_NONE = size_t(-1),
13 };
14
17
18 virtual ExeElementWrapper* getWrapper(size_t wrapperId);
19
20 size_t wrappersCount() { return wrappers.size(); }
21 QString getWrapperName(size_t id);
22
23protected:
24 virtual void wrap(AbstractByteBuffer *v_buf) = 0;
25 void clearWrappers();
26
27 std::map<size_t, ExeElementWrapper*> wrappers;
28};
29
31public:
32 virtual void wrap() { return wrap(this->buf); }
33
34 virtual bool canResize(bufsize_t newSize)
35 {
36 // disabled by default
37 return false;
38 }
39
40 virtual bool resize(bufsize_t newSize)
41 {
42 if (!canResize(newSize)) return false;
43
44 if (Executable::resize(newSize)) {
45 wrap();
46 return true;
47 }
48 return false;
49 }
50
51protected:
53 : Executable(v_buf, v_bitMode), ExeWrappersContainer() { }
54
55 virtual ~MappedExe(void) { }
56
57 virtual void wrap(AbstractByteBuffer *v_buf) = 0;
58};
uint32_t bufsize_t
std::map< size_t, ExeElementWrapper * > wrappers
Definition: MappedExe.h:27
virtual ~ExeWrappersContainer(void)
Definition: MappedExe.h:16
size_t wrappersCount()
Definition: MappedExe.h:20
QString getWrapperName(size_t id)
Definition: MappedExe.cpp:19
virtual void wrap(AbstractByteBuffer *v_buf)=0
virtual ExeElementWrapper * getWrapper(size_t wrapperId)
Definition: MappedExe.cpp:13
AbstractByteBuffer * buf
Definition: Executable.h:125
virtual bool resize(bufsize_t newSize)
Definition: Executable.h:109
virtual bool canResize(bufsize_t newSize)
Definition: MappedExe.h:34
MappedExe(AbstractByteBuffer *v_buf, exe_bits v_bitMode)
Definition: MappedExe.h:52
virtual bool resize(bufsize_t newSize)
Definition: MappedExe.h:40
virtual ~MappedExe(void)
Definition: MappedExe.h:55
virtual void wrap()
Definition: MappedExe.h:32
virtual void wrap(AbstractByteBuffer *v_buf)=0