BearParser
Portable Executable parsing library (from PE-bear)
Loading...
Searching...
No Matches
TlsDirWrapper.h
Go to the documentation of this file.
1#pragma once
2
4#include "PEFile.h"
5
7class TlsDirWrapper;
8
10{
11public:
12 /* fields :*/
13 enum TlsDirFID {
22 };
23
25 : DataDirEntryWrapper(pe, pe::DIR_TLS) { wrap(); }
26
27 bool wrap();
28
29 virtual void* getPtr();
30 virtual bufsize_t getSize();
31
32 virtual QString getName() { return "TLS"; }
33 virtual size_t getFieldsCount() { return FIELD_COUNTER; }
34 virtual size_t getSubFieldsCount() { return 1; }
35
36 virtual void* getFieldPtr(size_t fieldId, size_t subField);
37 virtual QString getFieldName(size_t fieldId);
38 virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField = FIELD_NONE);
39
40private:
41 inline void* getTlsDirPtr();
42 IMAGE_TLS_DIRECTORY64* tls64();
43 IMAGE_TLS_DIRECTORY32* tls32();
44};
45
46
48{
49public:
50 // fields :
51 enum FieldID {
55 };
56
57 TlsEntryWrapper(Executable *pe, TlsDirWrapper *parentDir, size_t entryNumber)
58 : ExeNodeWrapper(pe, parentDir, entryNumber) { this->parentDir = parentDir; }
59
60 // full structure boundaries
61 virtual void* getPtr();
62 virtual bufsize_t getSize();
63
64 virtual QString getName() { return "TLS Callback"; }
65 virtual size_t getFieldsCount() { return FIELD_COUNTER; }
66 virtual size_t getSubFieldsCount() { return 1; }
67
68 // specific field boundaries
69 virtual void* getFieldPtr(size_t fieldId, size_t subField = FIELD_NONE) { return getPtr(); }
70 virtual QString getFieldName(size_t fieldId) { return getName(); }
71 virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField) { return Executable::VA; }
72
73private:
74 TlsDirWrapper* parentDir;
75
76};
uint32_t bufsize_t
#define FIELD_NONE
Definition: PEFile.h:41
virtual QString getName()
Definition: TlsDirWrapper.h:32
virtual bufsize_t getSize()
virtual size_t getFieldsCount()
Definition: TlsDirWrapper.h:33
virtual void * getPtr()
virtual size_t getSubFieldsCount()
Definition: TlsDirWrapper.h:34
TlsDirWrapper(PEFile *pe)
Definition: TlsDirWrapper.h:24
virtual void * getFieldPtr(size_t fieldId, size_t subField)
virtual QString getFieldName(size_t fieldId)
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField=FIELD_NONE)
Definition: TlsDirWrapper.h:48
virtual QString getFieldName(size_t fieldId)
Definition: TlsDirWrapper.h:70
virtual QString getName()
Definition: TlsDirWrapper.h:64
virtual bufsize_t getSize()
virtual void * getPtr()
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField)
Definition: TlsDirWrapper.h:71
FieldID
Definition: TlsDirWrapper.h:51
@ NONE
Definition: TlsDirWrapper.h:52
@ CALLBACK_ADDR
Definition: TlsDirWrapper.h:53
@ FIELD_COUNTER
Definition: TlsDirWrapper.h:54
TlsEntryWrapper(Executable *pe, TlsDirWrapper *parentDir, size_t entryNumber)
Definition: TlsDirWrapper.h:57
virtual void * getFieldPtr(size_t fieldId, size_t subField=FIELD_NONE)
Definition: TlsDirWrapper.h:69
virtual size_t getFieldsCount()
Definition: TlsDirWrapper.h:65
virtual size_t getSubFieldsCount()
Definition: TlsDirWrapper.h:66