BearParser
Portable Executable parsing library (from PE-bear)
Toggle main menu visibility
Loading...
Searching...
No Matches
parser
include
bearparser
ExeElementWrapper.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <QtCore>
4
#include "
CustomException.h
"
5
#include "win_hdrs/win_types.h"
6
#include "
Executable.h
"
7
#include "
WrappedValue.h
"
8
9
#define FIELD_NONE (-1)
10
11
class
ExeElementWrapper
:
public
AbstractByteBuffer
12
{
13
public
:
14
ExeElementWrapper
(
Executable
*exe);
15
virtual
~ExeElementWrapper
() {}
16
17
virtual
bool
wrap
() {
return
true
; }
18
19
/* inherited from: AbstractByteBuffer */
20
virtual
bufsize_t
getContentSize
() {
return
getSize
(); }
21
virtual
BYTE*
getContent
() {
return
static_cast<
BYTE*
>
(
getPtr
()); }
22
23
/* full structure boundaries */
24
virtual
void
*
getPtr
() = 0;
25
virtual
bufsize_t
getSize
() = 0;
26
virtual
QString
getName
() = 0;
27
28
virtual
size_t
getFieldsCount
() = 0;
29
virtual
size_t
getSubFieldsCount
() {
return
1; }
30
31
virtual
offset_t
getOffset
();
32
virtual
offset_t
getOffset
(
void
*ptr,
bool
allowExceptions =
false
);
33
34
/* specific field boundaries */
35
virtual
void
*
getFieldPtr
(
size_t
fieldId,
size_t
subField) = 0;
36
void
*
getFieldPtr
(
size_t
fieldId) {
return
getFieldPtr
(fieldId,
FIELD_NONE
); }
37
virtual
bufsize_t
getFieldSize
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
);
38
virtual
offset_t
getFieldOffset
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
);
39
40
virtual
QString
translateFieldContent
(
size_t
fieldId) {
return
""
; }
41
virtual
bool
hasSubfieldWrapper
(
size_t
parentType) {
return
false
; }
42
43
virtual
QString
getFieldName
(
size_t
fieldId) = 0;
44
virtual
WrappedValue
getWrappedValue
(
size_t
fieldId,
size_t
subField);
45
virtual
WrappedValue
getWrappedValue
(
size_t
fieldId) {
return
getWrappedValue
(fieldId,
FIELD_NONE
); }
46
47
virtual
Executable::addr_type
containsAddrType
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
) {
return
Executable::NOT_ADDR
; }
48
virtual
WrappedValue::data_type
containsDataType
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
) {
return
WrappedValue::INT
; }
49
50
virtual
uint64_t
getNumValue
(
size_t
fieldId,
size_t
subField,
bool
* isOk);
51
uint64_t
getNumValue
(
size_t
fieldId,
bool
* isOk) {
return
getNumValue
(fieldId,
FIELD_NONE
, isOk); }
52
53
virtual
bool
setNumValue
(
size_t
fieldId,
size_t
subField, uint64_t val);
54
bool
setNumValue
(
size_t
fieldId, uint64_t val) {
return
setNumValue
(fieldId,
FIELD_NONE
, val); }
55
56
Executable
*
getExe
() {
return
m_Exe
; }
57
58
inline
bool
isBit64
() {
return
Executable::isBit64
(
m_Exe
); }
59
inline
bool
isBit32
() {
return
Executable::isBit32
(
m_Exe
); }
60
61
protected
:
62
virtual
bool
canCopyToOffset
(
offset_t
rawOffset);
63
bool
copyToOffset
(
offset_t
rawOffset);
64
65
Executable
*
m_Exe
;
66
67
friend
class
Executable
;
68
};
69
offset_t
uint64_t offset_t
Definition
AbstractByteBuffer.h:20
bufsize_t
size_t bufsize_t
Definition
AbstractByteBuffer.h:17
CustomException.h
FIELD_NONE
#define FIELD_NONE
Definition
ExeElementWrapper.h:9
Executable.h
WrappedValue.h
AbstractByteBuffer::AbstractByteBuffer
AbstractByteBuffer()
Definition
AbstractByteBuffer.h:40
ExeElementWrapper::getSize
virtual bufsize_t getSize()=0
ExeElementWrapper::getContentSize
virtual bufsize_t getContentSize()
Definition
ExeElementWrapper.h:20
ExeElementWrapper::isBit32
bool isBit32()
Definition
ExeElementWrapper.h:59
ExeElementWrapper::getFieldSize
virtual bufsize_t getFieldSize(size_t fieldId, size_t subField=FIELD_NONE)
Definition
ExeElementWrapper.cpp:12
ExeElementWrapper::setNumValue
virtual bool setNumValue(size_t fieldId, size_t subField, uint64_t val)
Definition
ExeElementWrapper.cpp:83
ExeElementWrapper::canCopyToOffset
virtual bool canCopyToOffset(offset_t rawOffset)
Definition
ExeElementWrapper.cpp:92
ExeElementWrapper::getPtr
virtual void * getPtr()=0
ExeElementWrapper::hasSubfieldWrapper
virtual bool hasSubfieldWrapper(size_t parentType)
Definition
ExeElementWrapper.h:41
ExeElementWrapper::getWrappedValue
virtual WrappedValue getWrappedValue(size_t fieldId)
Definition
ExeElementWrapper.h:45
ExeElementWrapper::getFieldPtr
virtual void * getFieldPtr(size_t fieldId, size_t subField)=0
ExeElementWrapper::getFieldOffset
virtual offset_t getFieldOffset(size_t fieldId, size_t subField=FIELD_NONE)
Definition
ExeElementWrapper.cpp:51
ExeElementWrapper::~ExeElementWrapper
virtual ~ExeElementWrapper()
Definition
ExeElementWrapper.h:15
ExeElementWrapper::getFieldsCount
virtual size_t getFieldsCount()=0
ExeElementWrapper::getWrappedValue
virtual WrappedValue getWrappedValue(size_t fieldId, size_t subField)
Definition
ExeElementWrapper.cpp:57
ExeElementWrapper::setNumValue
bool setNumValue(size_t fieldId, uint64_t val)
Definition
ExeElementWrapper.h:54
ExeElementWrapper::getSubFieldsCount
virtual size_t getSubFieldsCount()
Definition
ExeElementWrapper.h:29
ExeElementWrapper::getFieldName
virtual QString getFieldName(size_t fieldId)=0
ExeElementWrapper::getContent
virtual BYTE * getContent()
Definition
ExeElementWrapper.h:21
ExeElementWrapper::ExeElementWrapper
ExeElementWrapper(Executable *exe)
Definition
ExeElementWrapper.cpp:3
ExeElementWrapper::containsAddrType
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField=FIELD_NONE)
Definition
ExeElementWrapper.h:47
ExeElementWrapper::isBit64
bool isBit64()
Definition
ExeElementWrapper.h:58
ExeElementWrapper::containsDataType
virtual WrappedValue::data_type containsDataType(size_t fieldId, size_t subField=FIELD_NONE)
Definition
ExeElementWrapper.h:48
ExeElementWrapper::getOffset
virtual offset_t getOffset()
Definition
ExeElementWrapper.cpp:39
ExeElementWrapper::copyToOffset
bool copyToOffset(offset_t rawOffset)
Definition
ExeElementWrapper.cpp:102
ExeElementWrapper::getNumValue
uint64_t getNumValue(size_t fieldId, bool *isOk)
Definition
ExeElementWrapper.h:51
ExeElementWrapper::Executable
friend class Executable
Definition
ExeElementWrapper.h:67
ExeElementWrapper::translateFieldContent
virtual QString translateFieldContent(size_t fieldId)
Definition
ExeElementWrapper.h:40
ExeElementWrapper::getExe
Executable * getExe()
Definition
ExeElementWrapper.h:56
ExeElementWrapper::m_Exe
Executable * m_Exe
Definition
ExeElementWrapper.h:65
ExeElementWrapper::getFieldPtr
void * getFieldPtr(size_t fieldId)
Definition
ExeElementWrapper.h:36
ExeElementWrapper::wrap
virtual bool wrap()
Definition
ExeElementWrapper.h:17
ExeElementWrapper::getName
virtual QString getName()=0
ExeElementWrapper::getNumValue
virtual uint64_t getNumValue(size_t fieldId, size_t subField, bool *isOk)
Definition
ExeElementWrapper.cpp:73
Executable::addr_type
addr_type
Definition
Executable.h:42
Executable::NOT_ADDR
@ NOT_ADDR
Definition
Executable.h:43
Executable::isBit32
bool isBit32()
Definition
Executable.h:54
Executable::isBit64
bool isBit64()
Definition
Executable.h:53
WrappedValue
Definition
WrappedValue.h:12
WrappedValue::data_type
data_type
Definition
WrappedValue.h:15
WrappedValue::INT
@ INT
Definition
WrappedValue.h:17
Generated by
1.17.0