BearParser
Portable Executable parsing library (from PE-bear)
Toggle main menu visibility
Loading...
Searching...
No Matches
parser
include
bearparser
pe
DelayImpDirWrapper.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
ImportBaseDirWrapper.h
"
4
#include "pe_formats.h"
5
6
class
DelayImpFuncWrapper
;
7
8
class
DelayImpDirWrapper
:
public
ImportBaseDirWrapper
9
{
10
public
:
11
DelayImpDirWrapper
(
PEFile
*pe)
12
:
ImportBaseDirWrapper
(pe, pe::DIR_DELAY_IMPORT) {
wrap
(); }
13
14
virtual
void
*
getPtr
();
15
virtual
bufsize_t
getSize
();
16
virtual
QString
getName
() {
return
"DelayImports"
; }
17
18
protected
:
19
virtual
bool
loadNextEntry
(
size_t
cntr);
20
21
bool
is64
();
// autodetect! 64bit PE may use IMAGE_DELAY_LOAD32!
22
bool
is32
() {
return
!
is64
(); }
23
24
pe::IMAGE_DELAY_LOAD*
firstDelayLd
() {
return
(pe::IMAGE_DELAY_LOAD*)
firstDelayLd
(
sizeof
(pe::IMAGE_DELAY_LOAD)); }
25
void
*
firstDelayLd
(
bufsize_t
size);
26
bufsize_t
getEntrySize
();
27
28
friend
class
DelayImpEntryWrapper
;
29
};
30
31
class
DelayImpEntryWrapper
:
public
ImportBaseEntryWrapper
32
{
33
public
:
34
enum
DelayImpDirFID
{
35
NONE
=
FIELD_NONE
,
36
ATTRS
,
37
NAME
,
38
MOD
,
39
IAT
,
40
INT
,
41
BOUND_IAT
,
42
UNLOAD_IAT
,
43
TIMESTAMP
,
44
FIELD_COUNTER
45
};
46
47
DelayImpEntryWrapper
(
PEFile
*pe,
DelayImpDirWrapper
*importsDir,
size_t
entryNumber)
48
:
ImportBaseEntryWrapper
(pe, importsDir, entryNumber) {
wrap
(); }
49
50
//bool wrap();
51
52
virtual
void
*
getPtr
();
53
virtual
bufsize_t
getSize
();
54
virtual
QString
getName
();
55
virtual
char
*
getLibraryName
();
56
virtual
size_t
getFieldsCount
() {
return
FIELD_COUNTER
; }
57
58
virtual
void
*
getFieldPtr
(
size_t
fieldId,
size_t
subField);
59
virtual
QString
getFieldName
(
size_t
fieldId);
60
virtual
Executable::addr_type
containsAddrType
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
);
61
62
protected
:
63
bool
loadNextEntry
(
size_t
entryNum
);
64
65
virtual
IMAGE_IMPORT_BY_NAME*
getFirstImpByNamePtr
();
66
67
friend
class
DelayImpFuncWrapper
;
68
friend
class
DelayImpDirWrapper
;
69
};
70
71
class
DelayImpFuncWrapper
:
public
ImportBaseFuncWrapper
72
{
73
public
:
74
// fields :
75
enum
FieldID
{
76
NONE
=
FIELD_NONE
,
77
NAMETHUNK_ADDR
,
78
IAT_ADDR
,
79
BOUND_IAT_ADDR
,
80
UNLOAD_IAT_ADDR
,
81
FIELD_COUNTER
82
};
83
84
DelayImpFuncWrapper
(
PEFile
*pe,
DelayImpEntryWrapper
*parentDir,
size_t
entryNumber)
85
:
ImportBaseFuncWrapper
(pe, parentDir, entryNumber) { this->parentDir = parentDir; }
86
87
// full structure boundaries
88
virtual
void
*
getPtr
() {
return
getFieldPtr
(
IAT_ADDR
); }
89
virtual
bufsize_t
getSize
() {
return
sizeof
(DWORD); }
90
91
//virtual QString getName();
92
virtual
size_t
getFieldsCount
() {
return
FIELD_COUNTER
; }
93
virtual
size_t
getSubFieldsCount
() {
return
1; }
94
95
// specific field boundaries
96
virtual
void
*
getFieldPtr
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
);
97
virtual
bufsize_t
getFieldSize
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
);
98
virtual
QString
getFieldName
(
size_t
fieldId);
99
virtual
Executable::addr_type
containsAddrType
(
size_t
fieldId,
size_t
subField);
100
101
char
*
getFunctionName
();
102
uint16_t
getHint
();
103
bool
isByOrdinal
();
104
virtual
uint64_t
getOrdinal
();
105
offset_t
callVia
();
106
107
private
:
108
size_t
ptrLen() {
return
(
m_Exe
->
getBitMode
() ==
Executable::BITS_64
) ?
sizeof
(uint64_t) : sizeof(uint32_t); }
109
virtual
IMAGE_IMPORT_BY_NAME* getImportByNamePtr();
110
DelayImpEntryWrapper* parentDir;
111
};
offset_t
uint64_t offset_t
Definition
AbstractByteBuffer.h:20
bufsize_t
size_t bufsize_t
Definition
AbstractByteBuffer.h:17
FIELD_NONE
#define FIELD_NONE
Definition
ExeElementWrapper.h:9
ImportBaseDirWrapper.h
DataDirEntryWrapper::PEFile
friend class PEFile
Definition
DataDirEntryWrapper.h:22
DelayImpDirWrapper::is32
bool is32()
Definition
DelayImpDirWrapper.h:22
DelayImpDirWrapper::DelayImpDirWrapper
DelayImpDirWrapper(PEFile *pe)
Definition
DelayImpDirWrapper.h:11
DelayImpDirWrapper::getEntrySize
bufsize_t getEntrySize()
Definition
DelayImpDirWrapper.cpp:64
DelayImpDirWrapper::getName
virtual QString getName()
Definition
DelayImpDirWrapper.h:16
DelayImpDirWrapper::firstDelayLd
pe::IMAGE_DELAY_LOAD * firstDelayLd()
Definition
DelayImpDirWrapper.h:24
DelayImpDirWrapper::loadNextEntry
virtual bool loadNextEntry(size_t cntr)
Definition
DelayImpDirWrapper.cpp:34
DelayImpDirWrapper::getSize
virtual bufsize_t getSize()
Definition
DelayImpDirWrapper.cpp:58
DelayImpDirWrapper::DelayImpEntryWrapper
friend class DelayImpEntryWrapper
Definition
DelayImpDirWrapper.h:28
DelayImpDirWrapper::getPtr
virtual void * getPtr()
Definition
DelayImpDirWrapper.cpp:52
DelayImpDirWrapper::is64
bool is64()
Definition
DelayImpDirWrapper.cpp:18
DelayImpEntryWrapper
Definition
DelayImpDirWrapper.h:32
DelayImpEntryWrapper::DelayImpDirWrapper
friend class DelayImpDirWrapper
Definition
DelayImpDirWrapper.h:68
DelayImpEntryWrapper::getFieldPtr
virtual void * getFieldPtr(size_t fieldId, size_t subField)
Definition
DelayImpDirWrapper.cpp:153
DelayImpEntryWrapper::getFieldName
virtual QString getFieldName(size_t fieldId)
Definition
DelayImpDirWrapper.cpp:171
DelayImpEntryWrapper::containsAddrType
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField=FIELD_NONE)
Definition
DelayImpDirWrapper.cpp:186
DelayImpEntryWrapper::getLibraryName
virtual char * getLibraryName()
Definition
DelayImpDirWrapper.cpp:138
DelayImpEntryWrapper::getPtr
virtual void * getPtr()
Definition
DelayImpDirWrapper.cpp:102
DelayImpEntryWrapper::getSize
virtual bufsize_t getSize()
Definition
DelayImpDirWrapper.cpp:125
DelayImpEntryWrapper::getFieldsCount
virtual size_t getFieldsCount()
Definition
DelayImpDirWrapper.h:56
DelayImpEntryWrapper::DelayImpEntryWrapper
DelayImpEntryWrapper(PEFile *pe, DelayImpDirWrapper *importsDir, size_t entryNumber)
Definition
DelayImpDirWrapper.h:47
DelayImpEntryWrapper::getFirstImpByNamePtr
virtual IMAGE_IMPORT_BY_NAME * getFirstImpByNamePtr()
Definition
DelayImpDirWrapper.cpp:71
DelayImpEntryWrapper::DelayImpDirFID
DelayImpDirFID
Definition
DelayImpDirWrapper.h:34
DelayImpEntryWrapper::TIMESTAMP
@ TIMESTAMP
Definition
DelayImpDirWrapper.h:43
DelayImpEntryWrapper::BOUND_IAT
@ BOUND_IAT
Definition
DelayImpDirWrapper.h:41
DelayImpEntryWrapper::UNLOAD_IAT
@ UNLOAD_IAT
Definition
DelayImpDirWrapper.h:42
DelayImpEntryWrapper::IAT
@ IAT
Definition
DelayImpDirWrapper.h:39
DelayImpEntryWrapper::MOD
@ MOD
Definition
DelayImpDirWrapper.h:38
DelayImpEntryWrapper::ATTRS
@ ATTRS
Definition
DelayImpDirWrapper.h:36
DelayImpEntryWrapper::NAME
@ NAME
Definition
DelayImpDirWrapper.h:37
DelayImpEntryWrapper::NONE
@ NONE
Definition
DelayImpDirWrapper.h:35
DelayImpEntryWrapper::FIELD_COUNTER
@ FIELD_COUNTER
Definition
DelayImpDirWrapper.h:44
DelayImpEntryWrapper::INT
@ INT
Definition
DelayImpDirWrapper.h:40
DelayImpEntryWrapper::loadNextEntry
bool loadNextEntry(size_t entryNum)
Definition
DelayImpDirWrapper.cpp:82
DelayImpEntryWrapper::DelayImpFuncWrapper
friend class DelayImpFuncWrapper
Definition
DelayImpDirWrapper.h:67
DelayImpEntryWrapper::getName
virtual QString getName()
Definition
DelayImpDirWrapper.cpp:131
DelayImpFuncWrapper
Definition
DelayImpDirWrapper.h:72
DelayImpFuncWrapper::getFieldsCount
virtual size_t getFieldsCount()
Definition
DelayImpDirWrapper.h:92
DelayImpFuncWrapper::getFunctionName
char * getFunctionName()
Definition
DelayImpDirWrapper.cpp:236
DelayImpFuncWrapper::containsAddrType
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField)
Definition
DelayImpDirWrapper.cpp:318
DelayImpFuncWrapper::isByOrdinal
bool isByOrdinal()
Definition
DelayImpDirWrapper.cpp:208
DelayImpFuncWrapper::FieldID
FieldID
Definition
DelayImpDirWrapper.h:75
DelayImpFuncWrapper::BOUND_IAT_ADDR
@ BOUND_IAT_ADDR
Definition
DelayImpDirWrapper.h:79
DelayImpFuncWrapper::FIELD_COUNTER
@ FIELD_COUNTER
Definition
DelayImpDirWrapper.h:81
DelayImpFuncWrapper::IAT_ADDR
@ IAT_ADDR
Definition
DelayImpDirWrapper.h:78
DelayImpFuncWrapper::NAMETHUNK_ADDR
@ NAMETHUNK_ADDR
Definition
DelayImpDirWrapper.h:77
DelayImpFuncWrapper::NONE
@ NONE
Definition
DelayImpDirWrapper.h:76
DelayImpFuncWrapper::UNLOAD_IAT_ADDR
@ UNLOAD_IAT_ADDR
Definition
DelayImpDirWrapper.h:80
DelayImpFuncWrapper::DelayImpFuncWrapper
DelayImpFuncWrapper(PEFile *pe, DelayImpEntryWrapper *parentDir, size_t entryNumber)
Definition
DelayImpDirWrapper.h:84
DelayImpFuncWrapper::getFieldSize
virtual bufsize_t getFieldSize(size_t fieldId, size_t subField=FIELD_NONE)
Definition
DelayImpDirWrapper.cpp:309
DelayImpFuncWrapper::getOrdinal
virtual uint64_t getOrdinal()
Definition
DelayImpDirWrapper.cpp:223
DelayImpFuncWrapper::getFieldName
virtual QString getFieldName(size_t fieldId)
Definition
DelayImpDirWrapper.cpp:298
DelayImpFuncWrapper::getSubFieldsCount
virtual size_t getSubFieldsCount()
Definition
DelayImpDirWrapper.h:93
DelayImpFuncWrapper::getFieldPtr
virtual void * getFieldPtr(size_t fieldId, size_t subField=FIELD_NONE)
Definition
DelayImpDirWrapper.cpp:257
DelayImpFuncWrapper::getHint
uint16_t getHint()
Definition
DelayImpDirWrapper.cpp:247
DelayImpFuncWrapper::getPtr
virtual void * getPtr()
Definition
DelayImpDirWrapper.h:88
DelayImpFuncWrapper::getSize
virtual bufsize_t getSize()
Definition
DelayImpDirWrapper.h:89
DelayImpFuncWrapper::callVia
offset_t callVia()
Definition
DelayImpDirWrapper.cpp:287
ExeElementWrapper::m_Exe
Executable * m_Exe
Definition
ExeElementWrapper.h:65
ExeNodeWrapper::entryNum
size_t entryNum
Definition
ExeNodeWrapper.h:54
Executable::addr_type
addr_type
Definition
Executable.h:42
Executable::BITS_64
@ BITS_64
Definition
Executable.h:32
Executable::getBitMode
virtual exe_bits getBitMode()
Definition
Executable.h:58
ImportBaseDirWrapper::wrap
virtual bool wrap()
Definition
ImportBaseDirWrapper.cpp:114
ImportBaseDirWrapper::ImportBaseDirWrapper
ImportBaseDirWrapper(PEFile *pe, pe::dir_entry v_entryType)
Definition
ImportBaseDirWrapper.h:45
ImportBaseEntryWrapper::wrap
bool wrap()
Definition
ImportBaseDirWrapper.cpp:168
ImportBaseEntryWrapper::ImportBaseEntryWrapper
ImportBaseEntryWrapper(PEFile *pe, ImportBaseDirWrapper *importsDir, size_t entryNumber)
Definition
ImportBaseDirWrapper.h:77
ImportBaseFuncWrapper::ImportBaseFuncWrapper
ImportBaseFuncWrapper(PEFile *pe, ImportBaseEntryWrapper *parentLib, size_t entryNumber)
Definition
ImportBaseDirWrapper.h:96
PENodeWrapper::PEFile
friend class PEFile
Definition
PENodeWrapper.h:39
Generated by
1.17.0