BearParser
Portable Executable parsing library (from PE-bear)
Toggle main menu visibility
Loading...
Searching...
No Matches
parser
include
bearparser
pe
TlsDirWrapper.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
DataDirEntryWrapper.h
"
4
5
class
TlsEntryWrapper
;
6
class
TlsDirWrapper
;
7
8
class
TlsDirWrapper
:
public
DataDirEntryWrapper
9
{
10
public
:
11
/* fields :*/
12
enum
TlsDirFID
{
13
NONE
=
FIELD_NONE
,
14
START_ADDR
,
15
END_ADDR
,
16
INDEX_ADDR
,
17
CALLBACKS_ADDR
,
18
ZEROF_SIZE
,
19
CHARACT
,
20
FIELD_COUNTER
21
};
22
23
TlsDirWrapper
(
PEFile
*pe)
24
:
DataDirEntryWrapper
(pe, pe::DIR_TLS) {
wrap
(); }
25
26
bool
wrap
();
27
28
virtual
void
*
getPtr
();
29
virtual
bufsize_t
getSize
();
30
31
virtual
QString
getName
() {
return
"TLS"
; }
32
virtual
size_t
getFieldsCount
() {
return
FIELD_COUNTER
; }
33
virtual
size_t
getSubFieldsCount
() {
return
1; }
34
35
virtual
void
*
getFieldPtr
(
size_t
fieldId,
size_t
subField);
36
virtual
QString
getFieldName
(
size_t
fieldId);
37
virtual
Executable::addr_type
containsAddrType
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
);
38
39
private
:
40
inline
void
* getTlsDirPtr();
41
IMAGE_TLS_DIRECTORY64* tls64();
42
IMAGE_TLS_DIRECTORY32* tls32();
43
};
44
45
46
class
TlsEntryWrapper
:
public
ExeNodeWrapper
47
{
48
public
:
49
// fields :
50
enum
FieldID
{
51
NONE
=
FIELD_NONE
,
52
CALLBACK_ADDR
,
53
FIELD_COUNTER
54
};
55
56
TlsEntryWrapper
(
Executable
*pe,
TlsDirWrapper
*parentDir,
size_t
entryNumber)
57
:
ExeNodeWrapper
(pe, parentDir, entryNumber) { this->parentDir = parentDir; }
58
59
// full structure boundaries
60
virtual
void
*
getPtr
();
61
virtual
bufsize_t
getSize
();
62
63
virtual
QString
getName
() {
return
"TLS Callback"
; }
64
virtual
size_t
getFieldsCount
() {
return
FIELD_COUNTER
; }
65
virtual
size_t
getSubFieldsCount
() {
return
1; }
66
67
// specific field boundaries
68
virtual
void
*
getFieldPtr
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
) {
return
getPtr
(); }
69
virtual
QString
getFieldName
(
size_t
fieldId) {
return
getName
(); }
70
virtual
Executable::addr_type
containsAddrType
(
size_t
fieldId,
size_t
subField) {
return
Executable::VA
; }
71
72
private
:
73
TlsDirWrapper
* parentDir;
74
75
};
bufsize_t
size_t bufsize_t
Definition
AbstractByteBuffer.h:17
DataDirEntryWrapper.h
FIELD_NONE
#define FIELD_NONE
Definition
ExeElementWrapper.h:9
DataDirEntryWrapper::PEFile
friend class PEFile
Definition
DataDirEntryWrapper.h:22
DataDirEntryWrapper::DataDirEntryWrapper
DataDirEntryWrapper(PEFile *pe, pe::dir_entry v_entryType)
Definition
DataDirEntryWrapper.cpp:4
ExeElementWrapper::Executable
friend class Executable
Definition
ExeElementWrapper.h:67
ExeNodeWrapper::ExeNodeWrapper
ExeNodeWrapper(Executable *pe, ExeNodeWrapper *parent=NULL)
Definition
ExeNodeWrapper.cpp:3
Executable::addr_type
addr_type
Definition
Executable.h:42
Executable::VA
@ VA
Definition
Executable.h:46
TlsDirWrapper
Definition
TlsDirWrapper.h:9
TlsDirWrapper::getName
virtual QString getName()
Definition
TlsDirWrapper.h:31
TlsDirWrapper::wrap
bool wrap()
Definition
TlsDirWrapper.cpp:4
TlsDirWrapper::getSize
virtual bufsize_t getSize()
Definition
TlsDirWrapper.cpp:34
TlsDirWrapper::getFieldsCount
virtual size_t getFieldsCount()
Definition
TlsDirWrapper.h:32
TlsDirWrapper::getPtr
virtual void * getPtr()
Definition
TlsDirWrapper.cpp:26
TlsDirWrapper::getSubFieldsCount
virtual size_t getSubFieldsCount()
Definition
TlsDirWrapper.h:33
TlsDirWrapper::TlsDirFID
TlsDirFID
Definition
TlsDirWrapper.h:12
TlsDirWrapper::CALLBACKS_ADDR
@ CALLBACKS_ADDR
Definition
TlsDirWrapper.h:17
TlsDirWrapper::ZEROF_SIZE
@ ZEROF_SIZE
Definition
TlsDirWrapper.h:18
TlsDirWrapper::END_ADDR
@ END_ADDR
Definition
TlsDirWrapper.h:15
TlsDirWrapper::INDEX_ADDR
@ INDEX_ADDR
Definition
TlsDirWrapper.h:16
TlsDirWrapper::FIELD_COUNTER
@ FIELD_COUNTER
Definition
TlsDirWrapper.h:20
TlsDirWrapper::CHARACT
@ CHARACT
Definition
TlsDirWrapper.h:19
TlsDirWrapper::NONE
@ NONE
Definition
TlsDirWrapper.h:13
TlsDirWrapper::START_ADDR
@ START_ADDR
Definition
TlsDirWrapper.h:14
TlsDirWrapper::TlsDirWrapper
TlsDirWrapper(PEFile *pe)
Definition
TlsDirWrapper.h:23
TlsDirWrapper::getFieldPtr
virtual void * getFieldPtr(size_t fieldId, size_t subField)
Definition
TlsDirWrapper.cpp:70
TlsDirWrapper::getFieldName
virtual QString getFieldName(size_t fieldId)
Definition
TlsDirWrapper.cpp:88
TlsDirWrapper::containsAddrType
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField=FIELD_NONE)
Definition
TlsDirWrapper.cpp:101
TlsEntryWrapper
Definition
TlsDirWrapper.h:47
TlsEntryWrapper::getFieldName
virtual QString getFieldName(size_t fieldId)
Definition
TlsDirWrapper.h:69
TlsEntryWrapper::getName
virtual QString getName()
Definition
TlsDirWrapper.h:63
TlsEntryWrapper::getSize
virtual bufsize_t getSize()
Definition
TlsDirWrapper.cpp:133
TlsEntryWrapper::getPtr
virtual void * getPtr()
Definition
TlsDirWrapper.cpp:114
TlsEntryWrapper::containsAddrType
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField)
Definition
TlsDirWrapper.h:70
TlsEntryWrapper::FieldID
FieldID
Definition
TlsDirWrapper.h:50
TlsEntryWrapper::NONE
@ NONE
Definition
TlsDirWrapper.h:51
TlsEntryWrapper::CALLBACK_ADDR
@ CALLBACK_ADDR
Definition
TlsDirWrapper.h:52
TlsEntryWrapper::FIELD_COUNTER
@ FIELD_COUNTER
Definition
TlsDirWrapper.h:53
TlsEntryWrapper::TlsEntryWrapper
TlsEntryWrapper(Executable *pe, TlsDirWrapper *parentDir, size_t entryNumber)
Definition
TlsDirWrapper.h:56
TlsEntryWrapper::getFieldPtr
virtual void * getFieldPtr(size_t fieldId, size_t subField=FIELD_NONE)
Definition
TlsDirWrapper.h:68
TlsEntryWrapper::getFieldsCount
virtual size_t getFieldsCount()
Definition
TlsDirWrapper.h:64
TlsEntryWrapper::getSubFieldsCount
virtual size_t getSubFieldsCount()
Definition
TlsDirWrapper.h:65
Generated by
1.17.0