BearParser
Portable Executable parsing library (from PE-bear)
Toggle main menu visibility
Loading...
Searching...
No Matches
parser
include
bearparser
pe
ExportDirWrapper.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
DataDirEntryWrapper.h
"
4
5
class
ExportDirWrapper
:
public
DataDirEntryWrapper
6
{
7
public
:
8
9
enum
ExportDirFID
{
10
NONE
=
FIELD_NONE
,
11
CHARACTERISTIC
,
12
TIMESTAMP
,
13
MAJOR_VER
,
14
MINOR_VER
,
15
NAME_RVA
,
16
BASE
,
17
FUNCTIONS_NUM
,
18
NAMES_NUM
,
19
FUNCTIONS_RVA
,
20
FUNC_NAMES_RVA
,
21
NAMES_ORDINALS_RVA
,
22
FIELD_COUNTER
23
};
24
25
ExportDirWrapper
(
PEFile
*pe)
26
:
DataDirEntryWrapper
(pe, pe::DIR_EXPORT) {
wrap
(); }
27
28
bool
wrap
();
29
30
virtual
void
*
getPtr
() {
return
exportDir
(); }
31
virtual
bufsize_t
getSize
();
32
virtual
QString
getName
();
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
QString
getLibraryName
();
39
40
virtual
Executable::addr_type
containsAddrType
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
);
41
42
protected
:
43
char
*
_getLibraryName
();
44
void
clear
();
45
size_t
mapNames
();
46
47
IMAGE_EXPORT_DIRECTORY*
exportDir
();
48
std::map<WORD, DWORD>
ordToNameId
;
49
50
friend
class
ExportEntryWrapper
;
51
};
52
53
54
class
ExportEntryWrapper
:
public
ExeNodeWrapper
55
{
56
public
:
57
// fields :
58
enum
FieldID
{
59
NONE
=
FIELD_NONE
,
60
FUNCTION_RVA
,
61
NAME_RVA
,
62
FIELD_COUNTER
63
};
64
65
ExportEntryWrapper
(
Executable
*pe,
ExportDirWrapper
*parentDir,
size_t
entryNumber)
66
:
ExeNodeWrapper
(pe, parentDir, entryNumber) { this->parentDir = parentDir; }
67
68
// full structure boundaries
69
virtual
void
*
getPtr
() {
return
getFuncRvaPtr(); }
70
virtual
bufsize_t
getSize
();
71
virtual
QString
getName
();
72
73
virtual
size_t
getFieldsCount
() {
return
FIELD_COUNTER
; }
74
virtual
size_t
getSubFieldsCount
() {
return
1; }
75
76
// specific field boundaries
77
virtual
void
*
getFieldPtr
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
);
// { return getPtr(); }
78
virtual
bufsize_t
getFieldSize
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
) {
return
sizeof
(DWORD); }
79
80
virtual
QString
getFieldName
(
size_t
fieldId);
81
virtual
Executable::addr_type
containsAddrType
(
size_t
fieldId,
size_t
subField) {
return
Executable::RVA
; }
82
83
bool
isByOrdinal
();
84
uint32_t
getOrdinal
();
85
86
offset_t
getFuncRva
();
87
offset_t
getFuncNameRva
();
88
89
char
*
getFuncName
();
90
QString
getuncNameStr
() {
char
* name =
getFuncName
();
return
name ? name :
""
; }
91
char
*
getForwarder
();
// NULL if not forwarded
92
QString
getForwarderStr
() {
char
* forwarder =
getForwarder
();
return
forwarder ? forwarder :
""
; }
93
94
private
:
95
DWORD* getFuncRvaPtr();
96
uint32_t getFuncNameId();
97
void
* getFuncNameRvaPtr();
98
99
ExportDirWrapper
* parentDir;
100
};
101
offset_t
uint64_t offset_t
Definition
AbstractByteBuffer.h:20
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::RVA
@ RVA
Definition
Executable.h:45
ExportDirWrapper
Definition
ExportDirWrapper.h:6
ExportDirWrapper::getLibraryName
virtual QString getLibraryName()
Definition
ExportDirWrapper.cpp:172
ExportDirWrapper::getSubFieldsCount
virtual size_t getSubFieldsCount()
Definition
ExportDirWrapper.h:34
ExportDirWrapper::ExportDirFID
ExportDirFID
Definition
ExportDirWrapper.h:9
ExportDirWrapper::NAMES_NUM
@ NAMES_NUM
Definition
ExportDirWrapper.h:18
ExportDirWrapper::MINOR_VER
@ MINOR_VER
Definition
ExportDirWrapper.h:14
ExportDirWrapper::NAME_RVA
@ NAME_RVA
Definition
ExportDirWrapper.h:15
ExportDirWrapper::FUNCTIONS_RVA
@ FUNCTIONS_RVA
Definition
ExportDirWrapper.h:19
ExportDirWrapper::CHARACTERISTIC
@ CHARACTERISTIC
Definition
ExportDirWrapper.h:11
ExportDirWrapper::TIMESTAMP
@ TIMESTAMP
Definition
ExportDirWrapper.h:12
ExportDirWrapper::FIELD_COUNTER
@ FIELD_COUNTER
Definition
ExportDirWrapper.h:22
ExportDirWrapper::MAJOR_VER
@ MAJOR_VER
Definition
ExportDirWrapper.h:13
ExportDirWrapper::FUNCTIONS_NUM
@ FUNCTIONS_NUM
Definition
ExportDirWrapper.h:17
ExportDirWrapper::NAMES_ORDINALS_RVA
@ NAMES_ORDINALS_RVA
Definition
ExportDirWrapper.h:21
ExportDirWrapper::FUNC_NAMES_RVA
@ FUNC_NAMES_RVA
Definition
ExportDirWrapper.h:20
ExportDirWrapper::NONE
@ NONE
Definition
ExportDirWrapper.h:10
ExportDirWrapper::BASE
@ BASE
Definition
ExportDirWrapper.h:16
ExportDirWrapper::getFieldsCount
virtual size_t getFieldsCount()
Definition
ExportDirWrapper.h:33
ExportDirWrapper::getPtr
virtual void * getPtr()
Definition
ExportDirWrapper.h:30
ExportDirWrapper::ExportDirWrapper
ExportDirWrapper(PEFile *pe)
Definition
ExportDirWrapper.h:25
ExportDirWrapper::ordToNameId
std::map< WORD, DWORD > ordToNameId
Definition
ExportDirWrapper.h:48
ExportDirWrapper::clear
void clear()
Definition
ExportDirWrapper.cpp:32
ExportDirWrapper::getFieldPtr
virtual void * getFieldPtr(size_t fieldId, size_t subField)
Definition
ExportDirWrapper.cpp:100
ExportDirWrapper::exportDir
IMAGE_EXPORT_DIRECTORY * exportDir()
Definition
ExportDirWrapper.cpp:23
ExportDirWrapper::wrap
bool wrap()
Definition
ExportDirWrapper.cpp:62
ExportDirWrapper::getName
virtual QString getName()
Definition
ExportDirWrapper.cpp:90
ExportDirWrapper::containsAddrType
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField=FIELD_NONE)
Definition
ExportDirWrapper.cpp:145
ExportDirWrapper::mapNames
size_t mapNames()
Definition
ExportDirWrapper.cpp:38
ExportDirWrapper::getFieldName
virtual QString getFieldName(size_t fieldId)
Definition
ExportDirWrapper.cpp:121
ExportDirWrapper::getSize
virtual bufsize_t getSize()
Definition
ExportDirWrapper.cpp:84
ExportDirWrapper::ExportEntryWrapper
friend class ExportEntryWrapper
Definition
ExportDirWrapper.h:50
ExportDirWrapper::_getLibraryName
char * _getLibraryName()
Definition
ExportDirWrapper.cpp:157
ExportEntryWrapper::getFieldName
virtual QString getFieldName(size_t fieldId)
Definition
ExportDirWrapper.cpp:233
ExportEntryWrapper::getSubFieldsCount
virtual size_t getSubFieldsCount()
Definition
ExportDirWrapper.h:74
ExportEntryWrapper::getFieldSize
virtual bufsize_t getFieldSize(size_t fieldId, size_t subField=FIELD_NONE)
Definition
ExportDirWrapper.h:78
ExportEntryWrapper::getForwarderStr
QString getForwarderStr()
Definition
ExportDirWrapper.h:92
ExportEntryWrapper::ExportEntryWrapper
ExportEntryWrapper(Executable *pe, ExportDirWrapper *parentDir, size_t entryNumber)
Definition
ExportDirWrapper.h:65
ExportEntryWrapper::getFuncName
char * getFuncName()
Definition
ExportDirWrapper.cpp:295
ExportEntryWrapper::getOrdinal
uint32_t getOrdinal()
Definition
ExportDirWrapper.cpp:250
ExportEntryWrapper::getPtr
virtual void * getPtr()
Definition
ExportDirWrapper.h:69
ExportEntryWrapper::isByOrdinal
bool isByOrdinal()
Definition
ExportDirWrapper.cpp:214
ExportEntryWrapper::getSize
virtual bufsize_t getSize()
Definition
ExportDirWrapper.cpp:206
ExportEntryWrapper::containsAddrType
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField)
Definition
ExportDirWrapper.h:81
ExportEntryWrapper::getFuncNameRva
offset_t getFuncNameRva()
Definition
ExportDirWrapper.cpp:287
ExportEntryWrapper::getuncNameStr
QString getuncNameStr()
Definition
ExportDirWrapper.h:90
ExportEntryWrapper::getFieldPtr
virtual void * getFieldPtr(size_t fieldId, size_t subField=FIELD_NONE)
Definition
ExportDirWrapper.cpp:184
ExportEntryWrapper::getFuncRva
offset_t getFuncRva()
Definition
ExportDirWrapper.cpp:242
ExportEntryWrapper::FieldID
FieldID
Definition
ExportDirWrapper.h:58
ExportEntryWrapper::FUNCTION_RVA
@ FUNCTION_RVA
Definition
ExportDirWrapper.h:60
ExportEntryWrapper::NONE
@ NONE
Definition
ExportDirWrapper.h:59
ExportEntryWrapper::FIELD_COUNTER
@ FIELD_COUNTER
Definition
ExportDirWrapper.h:62
ExportEntryWrapper::NAME_RVA
@ NAME_RVA
Definition
ExportDirWrapper.h:61
ExportEntryWrapper::getForwarder
char * getForwarder()
Definition
ExportDirWrapper.cpp:306
ExportEntryWrapper::getName
virtual QString getName()
Definition
ExportDirWrapper.cpp:220
ExportEntryWrapper::getFieldsCount
virtual size_t getFieldsCount()
Definition
ExportDirWrapper.h:73
Generated by
1.17.0