BearParser
Portable Executable parsing library (from PE-bear)
Toggle main menu visibility
Loading...
Searching...
No Matches
parser
include
bearparser
ExeNodeWrapper.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
ExeElementWrapper.h
"
4
#include <vector>
5
6
const
size_t
INVALID_ENTRYNUM
= (-1);
7
8
class
ExeNodeWrapper
:
public
ExeElementWrapper
9
{
10
public
:
11
ExeNodeWrapper
(
Executable
*pe,
ExeNodeWrapper
* parent = NULL);
12
ExeNodeWrapper
(
Executable
*pe,
ExeNodeWrapper
* parent,
size_t
entryNumber);
13
14
virtual
~ExeNodeWrapper
() {
clear
(); }
15
16
virtual
bool
wrap
() {
return
true
; }
17
virtual
void
reloadMapping
() {}
18
19
virtual
ExeNodeWrapper
*
getEntryAt
(
size_t
fieldId);
20
virtual
size_t
getEntriesCount
() {
return
getEntriesCount
(this->
entries
); }
21
virtual
size_t
getEntriesNum
() {
return
getEntriesCount
(this->
entries
); }
22
virtual
size_t
getSubFieldsCount
() {
return
(this->
entries
.size() == 0) ? 0 : this->
entries
[0]->getFieldsCount(); }
23
24
virtual
ExeNodeWrapper
*
getParentNode
() {
return
parentNode
; }
25
size_t
getEntryId
() {
return
entryNum
; }
26
27
virtual
void
*
getSubfieldPtr
(
size_t
fieldId,
size_t
subField);
28
virtual
bufsize_t
getSubfieldSize
(
size_t
fieldId,
size_t
subField);
29
virtual
QString
getSubfieldName
(
size_t
fieldId,
size_t
subField);
30
31
virtual
QString
getFieldName
(
size_t
fieldId) = 0;
32
//---
33
virtual
bool
canAddEntry
();
34
35
virtual
ExeNodeWrapper
*
addEntry
(
ExeNodeWrapper
*entry);
36
ExeNodeWrapper
*
getLastEntry
();
37
virtual
offset_t
getNextEntryOffset
();
38
virtual
bufsize_t
geEntrySize
();
39
40
virtual
bool
isValid
() {
return
true
; }
41
42
protected
:
43
size_t
getEntriesCount
(std::vector<ExeNodeWrapper*> &_entries);
44
ExeNodeWrapper
*
getEntryAt
(std::vector<ExeNodeWrapper*> &_entries,
size_t
fieldId);
45
46
virtual
void
clear
();
47
virtual
void
addMapping
(
ExeNodeWrapper
*entry) {}
48
virtual
bool
loadNextEntry
(
size_t
entryNum
) {
return
false
; }
//TODO!
49
virtual
ExeNodeWrapper
*
addEntryAt
(
ExeNodeWrapper
*entry,
offset_t
nextOffset);
50
51
virtual
bool
isMyEntryType
(
ExeNodeWrapper
*entry);
// is it an entry of appropriate type
52
53
ExeNodeWrapper
*
parentNode
;
54
size_t
entryNum
;
55
56
std::vector<ExeNodeWrapper*>
entries
;
// children
57
};
58
offset_t
uint64_t offset_t
Definition
AbstractByteBuffer.h:20
bufsize_t
size_t bufsize_t
Definition
AbstractByteBuffer.h:17
ExeElementWrapper.h
INVALID_ENTRYNUM
const size_t INVALID_ENTRYNUM
Definition
ExeNodeWrapper.h:6
ExeElementWrapper::ExeElementWrapper
ExeElementWrapper(Executable *exe)
Definition
ExeElementWrapper.cpp:3
ExeElementWrapper::Executable
friend class Executable
Definition
ExeElementWrapper.h:67
ExeNodeWrapper
Definition
ExeNodeWrapper.h:9
ExeNodeWrapper::getFieldName
virtual QString getFieldName(size_t fieldId)=0
ExeNodeWrapper::isMyEntryType
virtual bool isMyEntryType(ExeNodeWrapper *entry)
Definition
ExeNodeWrapper.cpp:80
ExeNodeWrapper::getSubfieldPtr
virtual void * getSubfieldPtr(size_t fieldId, size_t subField)
Definition
ExeNodeWrapper.cpp:39
ExeNodeWrapper::addEntryAt
virtual ExeNodeWrapper * addEntryAt(ExeNodeWrapper *entry, offset_t nextOffset)
Definition
ExeNodeWrapper.cpp:114
ExeNodeWrapper::getLastEntry
ExeNodeWrapper * getLastEntry()
Definition
ExeNodeWrapper.cpp:86
ExeNodeWrapper::getSubfieldName
virtual QString getSubfieldName(size_t fieldId, size_t subField)
Definition
ExeNodeWrapper.cpp:55
ExeNodeWrapper::getEntriesNum
virtual size_t getEntriesNum()
Definition
ExeNodeWrapper.h:21
ExeNodeWrapper::wrap
virtual bool wrap()
Definition
ExeNodeWrapper.h:16
ExeNodeWrapper::ExeNodeWrapper
ExeNodeWrapper(Executable *pe, ExeNodeWrapper *parent=NULL)
Definition
ExeNodeWrapper.cpp:3
ExeNodeWrapper::reloadMapping
virtual void reloadMapping()
Definition
ExeNodeWrapper.h:17
ExeNodeWrapper::getEntryAt
virtual ExeNodeWrapper * getEntryAt(size_t fieldId)
Definition
ExeNodeWrapper.cpp:15
ExeNodeWrapper::addMapping
virtual void addMapping(ExeNodeWrapper *entry)
Definition
ExeNodeWrapper.h:47
ExeNodeWrapper::geEntrySize
virtual bufsize_t geEntrySize()
Definition
ExeNodeWrapper.cpp:105
ExeNodeWrapper::entries
std::vector< ExeNodeWrapper * > entries
Definition
ExeNodeWrapper.h:56
ExeNodeWrapper::~ExeNodeWrapper
virtual ~ExeNodeWrapper()
Definition
ExeNodeWrapper.h:14
ExeNodeWrapper::getEntryId
size_t getEntryId()
Definition
ExeNodeWrapper.h:25
ExeNodeWrapper::loadNextEntry
virtual bool loadNextEntry(size_t entryNum)
Definition
ExeNodeWrapper.h:48
ExeNodeWrapper::canAddEntry
virtual bool canAddEntry()
Definition
ExeNodeWrapper.cpp:63
ExeNodeWrapper::getNextEntryOffset
virtual offset_t getNextEntryOffset()
Definition
ExeNodeWrapper.cpp:92
ExeNodeWrapper::parentNode
ExeNodeWrapper * parentNode
Definition
ExeNodeWrapper.h:53
ExeNodeWrapper::isValid
virtual bool isValid()
Definition
ExeNodeWrapper.h:40
ExeNodeWrapper::getEntriesCount
virtual size_t getEntriesCount()
Definition
ExeNodeWrapper.h:20
ExeNodeWrapper::entryNum
size_t entryNum
Definition
ExeNodeWrapper.h:54
ExeNodeWrapper::getSubFieldsCount
virtual size_t getSubFieldsCount()
Definition
ExeNodeWrapper.h:22
ExeNodeWrapper::clear
virtual void clear()
Definition
ExeNodeWrapper.cpp:30
ExeNodeWrapper::getSubfieldSize
virtual bufsize_t getSubfieldSize(size_t fieldId, size_t subField)
Definition
ExeNodeWrapper.cpp:47
ExeNodeWrapper::addEntry
virtual ExeNodeWrapper * addEntry(ExeNodeWrapper *entry)
Definition
ExeNodeWrapper.cpp:140
ExeNodeWrapper::getParentNode
virtual ExeNodeWrapper * getParentNode()
Definition
ExeNodeWrapper.h:24
Generated by
1.17.0