BearParser
Portable Executable parsing library (from PE-bear)
Toggle main menu visibility
Loading...
Searching...
No Matches
parser
include
bearparser
pe
rsrc
ResourceStringsWrapper.h
Go to the documentation of this file.
1
#pragma once
2
#include "
../ResourceLeafWrapper.h
"
3
#include "
ResourceContentWrapper.h
"
4
5
#include <vector>
6
7
class
ResString
:
public
ExeNodeWrapper
{
8
public
:
9
enum
ResourceFID
{
10
NONE
=
FIELD_NONE
,
11
STR_LEN
,
12
WSTRING
,
13
FIELD_COUNTER
14
};
15
16
ResString
(WORD *v_ptr, WORD *v_sizePtr,
offset_t
v_offset,
Executable
* v_exe)
17
:
ExeNodeWrapper
(v_exe),
ptr
(v_ptr),
sizePtr
(v_sizePtr),
offset
(v_offset) { }
18
19
/* full structure boundatries */
20
virtual
void
*
getPtr
();
21
virtual
bufsize_t
getSize
();
22
virtual
QString
getName
();
23
virtual
size_t
getFieldsCount
() {
return
FIELD_COUNTER
; }
24
virtual
size_t
getSubFieldsCount
() {
return
1; }
25
26
/* specific field boundatries */
27
virtual
void
*
getFieldPtr
(
size_t
fieldId,
size_t
subField);
28
virtual
QString
getFieldName
(
size_t
fieldId);
29
virtual
bufsize_t
getFieldSize
(
size_t
fId,
size_t
subField);
30
31
QString
getQString
()
32
{
33
if
(this->
m_Exe
== NULL)
return
""
;
//ERROR
34
WORD*
entries
=
ptr
;
35
int
size = *(
sizePtr
);
36
WORD *content = (WORD*) this->
m_Exe
->getContentAt(
offset
,
Executable::RAW
, size);
37
if
(content == NULL)
return
""
;
38
39
return
QString::fromUtf16(
reinterpret_cast<
const
char16_t
*
>
(content), size);
40
}
41
42
virtual
size_t
getStrLen
() {
return
(
sizePtr
== NULL) ? 0 :
static_cast<
size_t
>
(*sizePtr); }
43
virtual
WrappedValue::data_type
containsDataType
(
size_t
fieldId,
size_t
subField)
44
{
45
if
(fieldId ==
WSTRING
) {
46
return
WrappedValue::WSTRING
;
47
}
48
return
WrappedValue::INT
;
49
}
50
WORD *
ptr
;
51
WORD *
sizePtr
;
52
offset_t
offset
;
53
};
54
55
class
ResourceStringsWrapper
:
public
ResourceContentWrapper
56
{
57
public
:
58
enum
ResourceFID
{
59
NONE
=
FIELD_NONE
,
60
STR_LEN
,
61
WSTRING
,
62
FIELD_COUNTER
63
};
64
65
/* specific field boundatries */
66
virtual
QString
getFieldName
(
size_t
fieldId);
67
virtual
void
*
getFieldPtr
(
size_t
fieldId,
size_t
subField);
68
virtual
bufsize_t
getFieldSize
(
size_t
fieldId,
size_t
subField =
FIELD_NONE
);
69
70
virtual
size_t
getFieldsCount
() {
return
entries
.size(); }
71
72
ResString
*
getResStringAt
(
size_t
index)
73
{
74
if
(index >
entries
.size())
return
NULL;
75
ResString
* str =
dynamic_cast<
ResString
*
>
(
entries
[index]);
76
return
str;
77
}
78
79
QString
getQStringAt
(
size_t
index)
80
{
81
ResString
* str =
getResStringAt
(index);
82
return
str->
getQString
();
83
}
84
85
size_t
getResStringsCount
() {
return
entries
.size(); }
86
87
virtual
WrappedValue::data_type
containsDataType
(
size_t
fieldId,
size_t
subField)
88
{
89
if
(fieldId ==
WSTRING
) {
90
return
WrappedValue::WSTRING
;
91
}
92
return
WrappedValue::INT
;
93
}
94
95
protected
:
96
ResourceStringsWrapper
(
Executable
*pe,
ResourceLeafWrapper
* v_leaf)
97
:
ResourceContentWrapper
(pe, v_leaf, pe::RESTYPE_STRING) {
wrap
(); }
98
99
bool
wrap
();
100
101
size_t
parsedSize
;
102
103
friend
class
ResourceContentFactory
;
104
friend
class
ResourcesAlbum
;
105
};
106
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
ResourceContentWrapper.h
ResourceLeafWrapper.h
ExeElementWrapper::Executable
friend class Executable
Definition
ExeElementWrapper.h:67
ExeElementWrapper::m_Exe
Executable * m_Exe
Definition
ExeElementWrapper.h:65
ExeNodeWrapper::ExeNodeWrapper
ExeNodeWrapper(Executable *pe, ExeNodeWrapper *parent=NULL)
Definition
ExeNodeWrapper.cpp:3
ExeNodeWrapper::entries
std::vector< ExeNodeWrapper * > entries
Definition
ExeNodeWrapper.h:56
Executable::RAW
@ RAW
Definition
Executable.h:44
ResString
Definition
ResourceStringsWrapper.h:7
ResString::getFieldName
virtual QString getFieldName(size_t fieldId)
Definition
ResourceStringsWrapper.cpp:34
ResString::getFieldPtr
virtual void * getFieldPtr(size_t fieldId, size_t subField)
Definition
ResourceStringsWrapper.cpp:20
ResString::getFieldSize
virtual bufsize_t getFieldSize(size_t fId, size_t subField)
Definition
ResourceStringsWrapper.cpp:43
ResString::getSize
virtual bufsize_t getSize()
Definition
ResourceStringsWrapper.cpp:8
ResString::getPtr
virtual void * getPtr()
Definition
ResourceStringsWrapper.cpp:3
ResString::getQString
QString getQString()
Definition
ResourceStringsWrapper.h:31
ResString::getName
virtual QString getName()
Definition
ResourceStringsWrapper.cpp:14
ResString::ptr
WORD * ptr
Definition
ResourceStringsWrapper.h:50
ResString::getStrLen
virtual size_t getStrLen()
Definition
ResourceStringsWrapper.h:42
ResString::offset
offset_t offset
Definition
ResourceStringsWrapper.h:52
ResString::getSubFieldsCount
virtual size_t getSubFieldsCount()
Definition
ResourceStringsWrapper.h:24
ResString::sizePtr
WORD * sizePtr
Definition
ResourceStringsWrapper.h:51
ResString::getFieldsCount
virtual size_t getFieldsCount()
Definition
ResourceStringsWrapper.h:23
ResString::containsDataType
virtual WrappedValue::data_type containsDataType(size_t fieldId, size_t subField)
Definition
ResourceStringsWrapper.h:43
ResString::ResourceFID
ResourceFID
Definition
ResourceStringsWrapper.h:9
ResString::FIELD_COUNTER
@ FIELD_COUNTER
Definition
ResourceStringsWrapper.h:13
ResString::NONE
@ NONE
Definition
ResourceStringsWrapper.h:10
ResString::STR_LEN
@ STR_LEN
Definition
ResourceStringsWrapper.h:11
ResString::WSTRING
@ WSTRING
Definition
ResourceStringsWrapper.h:12
ResString::ResString
ResString(WORD *v_ptr, WORD *v_sizePtr, offset_t v_offset, Executable *v_exe)
Definition
ResourceStringsWrapper.h:16
ResourceContentWrapper::ResourceContentWrapper
ResourceContentWrapper(Executable *pe, ResourceLeafWrapper *v_leaf, pe::resource_type v_typeId)
Definition
ResourceContentWrapper.h:35
ResourceLeafWrapper
Definition
ResourceLeafWrapper.h:10
ResourceStringsWrapper::getFieldPtr
virtual void * getFieldPtr(size_t fieldId, size_t subField)
Definition
ResourceStringsWrapper.cpp:106
ResourceStringsWrapper::ResourceStringsWrapper
ResourceStringsWrapper(Executable *pe, ResourceLeafWrapper *v_leaf)
Definition
ResourceStringsWrapper.h:96
ResourceStringsWrapper::ResourceFID
ResourceFID
Definition
ResourceStringsWrapper.h:58
ResourceStringsWrapper::FIELD_COUNTER
@ FIELD_COUNTER
Definition
ResourceStringsWrapper.h:62
ResourceStringsWrapper::WSTRING
@ WSTRING
Definition
ResourceStringsWrapper.h:61
ResourceStringsWrapper::NONE
@ NONE
Definition
ResourceStringsWrapper.h:59
ResourceStringsWrapper::STR_LEN
@ STR_LEN
Definition
ResourceStringsWrapper.h:60
ResourceStringsWrapper::getResStringAt
ResString * getResStringAt(size_t index)
Definition
ResourceStringsWrapper.h:72
ResourceStringsWrapper::getFieldsCount
virtual size_t getFieldsCount()
Definition
ResourceStringsWrapper.h:70
ResourceStringsWrapper::getFieldSize
virtual bufsize_t getFieldSize(size_t fieldId, size_t subField=FIELD_NONE)
Definition
ResourceStringsWrapper.cpp:112
ResourceStringsWrapper::getFieldName
virtual QString getFieldName(size_t fieldId)
Definition
ResourceStringsWrapper.cpp:101
ResourceStringsWrapper::getQStringAt
QString getQStringAt(size_t index)
Definition
ResourceStringsWrapper.h:79
ResourceStringsWrapper::getResStringsCount
size_t getResStringsCount()
Definition
ResourceStringsWrapper.h:85
ResourceStringsWrapper::parsedSize
size_t parsedSize
Definition
ResourceStringsWrapper.h:101
ResourceStringsWrapper::ResourceContentFactory
friend class ResourceContentFactory
Definition
ResourceStringsWrapper.h:103
ResourceStringsWrapper::containsDataType
virtual WrappedValue::data_type containsDataType(size_t fieldId, size_t subField)
Definition
ResourceStringsWrapper.h:87
ResourceStringsWrapper::wrap
bool wrap()
Definition
ResourceStringsWrapper.cpp:58
ResourceStringsWrapper::ResourcesAlbum
friend class ResourcesAlbum
Definition
ResourceStringsWrapper.h:104
WrappedValue::data_type
data_type
Definition
WrappedValue.h:15
WrappedValue::INT
@ INT
Definition
WrappedValue.h:17
WrappedValue::WSTRING
@ WSTRING
Definition
WrappedValue.h:19
Generated by
1.17.0