BearParser
Portable Executable parsing library (from PE-bear)
Toggle main menu visibility
Loading...
Searching...
No Matches
parser
pe
rsrc
ResourceVersionWrapper.cpp
Go to the documentation of this file.
1
#include "
pe/rsrc/ResourceVersionWrapper.h
"
2
3
ResourceVersionWrapper::ResourceVersionWrapper
(
Executable
*pe,
ResourceLeafWrapper
* v_leaf)
4
:
ResourceContentWrapper
(pe, v_leaf, pe::RESTYPE_VERSION)
5
{
6
//TEST
7
/* printf("Version: %s\n", getVersionText().toStdString().c_str());
8
9
pe::version_info *info = getVersionInfo();
10
if (info == NULL) return;
11
12
if (info->children == 0) {
13
printf("No children!");
14
return;
15
}
16
BYTE *childEntry = (BYTE*) &info->children;
17
pe::version_child* child = (pe::version_child*) m_Exe->getContentAtPtr(childEntry, sizeof(pe::version_child));
18
if (child == NULL) {
19
printf("[ERR] Cannot fetch a child\n");
20
} else {
21
printf("Got child of type: [%d]\n", child->wType);
22
printf("len = %x\nValLen = %x\ntype = %x\nkey[0] = %c\n", child->wLength, child->wValueLength, child->wType, child->szKey[0]);
23
24
int size = INFOTEXT_LEN;
25
WORD *content = (WORD*) child->szKey;
26
if (content == NULL) return;
27
28
QString str = QString::fromUtf16(content, size);
29
std::string verStr = str.toStdString();
30
printf("key = [%s] len = %d\n", verStr.c_str(), verStr.length());
31
}
32
*/
34
}
35
36
pe::version_info*
ResourceVersionWrapper::getVersionInfo
()
37
{
38
void
*ptr = this->
getResContentPtr
();
39
if
(ptr == NULL)
return
NULL;
40
41
size_t
size = this->
getResContentSize
();
42
if
(size <
sizeof
(pe::version_info))
return
NULL;
43
44
pe::version_info* info = (pe::version_info*) ptr;
45
return
info;
46
}
47
48
QString
ResourceVersionWrapper::getFieldName
(
size_t
fId)
49
{
50
switch
(fId) {
51
case
STRUCT_LEN
:
return
"Length of Structure"
;
52
case
VAL_LEN
:
return
"Length of Value"
;
53
case
STRUCT_TYPE
:
return
"Type of Structure"
;
54
case
INFO
:
return
"Info"
;
55
//case PADDING1: return "Padding1";
56
case
SIGNATURE
:
return
"Signature"
;
57
case
STRUCT_VER
:
return
"Struct. Version"
;
58
59
case
FILE_VER_0
:
60
case
FILE_VER_1
:
return
"File Version"
;
61
62
case
PRODUCT_VER_0
:
63
case
PRODUCT_VER_1
:
return
"Product Version"
;
64
65
case
FLAGS_MASK
:
return
"File Flags mask"
;
66
case
FLAGS
:
return
"Flags"
;
67
case
OS
:
return
"File OS"
;
68
case
TYPE
:
return
"File Type"
;
69
case
SUBTYPE
:
return
"File SubType"
;
70
case
TIMESTAMP_0
:
case
TIMESTAMP_1
:
return
"File Timestamp"
;
71
//case PADDING2: return "Padding2";
72
case
CHILDREN
:
return
"Children"
;
73
}
74
return
""
;
75
}
76
77
void
*
ResourceVersionWrapper::getFieldPtr
(
size_t
fId,
size_t
subField)
78
{
79
pe::version_info* ptr =
getVersionInfo
();
80
81
if
(ptr == NULL)
return
NULL;
82
83
switch
(fId) {
84
case
STRUCT_LEN
:
return
&(ptr->length);
85
case
VAL_LEN
:
return
&(ptr->valueLength);
86
case
STRUCT_TYPE
:
return
&(ptr->type);
87
case
INFO
:
return
&(ptr->key);
88
89
case
SIGNATURE
:
return
&(ptr->Value.dwSignature);
90
case
STRUCT_VER
:
return
&(ptr->Value.dwStrucVersion);
91
case
FILE_VER_0
:
return
&(ptr->Value.dwFileVersionMS);
92
case
FILE_VER_1
:
return
&(ptr->Value.dwFileVersionLS);
93
94
case
PRODUCT_VER_0
:
return
&(ptr->Value.dwProductVersionMS);
95
case
PRODUCT_VER_1
:
return
&(ptr->Value.dwProductVersionLS);
96
97
case
FLAGS_MASK
:
return
&(ptr->Value.dwFileFlagsMask);
98
case
FLAGS
:
return
&(ptr->Value.dwFileFlags);
99
case
OS
:
return
&(ptr->Value.dwFileOS);
100
case
TYPE
:
return
&(ptr->Value.dwFileType);
101
case
SUBTYPE
:
return
&(ptr->Value.dwFileSubtype);
102
case
TIMESTAMP_0
:
return
&(ptr->Value.dwFileDateMS);
103
case
TIMESTAMP_1
:
return
&(ptr->Value.dwFileDateLS);
104
105
//case PADDING2: return &(ptr->padding2);
106
case
CHILDREN
:
return
&(ptr->children);
107
}
108
return
ptr;
109
}
110
111
WrappedValue::data_type
ResourceVersionWrapper::containsDataType
(
size_t
fieldId,
size_t
subField)
112
{
113
if
(fieldId ==
INFO
) {
114
return
WrappedValue::WSTRING
;
115
}
116
return
WrappedValue::INT
;
117
}
ResourceVersionWrapper.h
ExeElementWrapper::Executable
friend class Executable
Definition
ExeElementWrapper.h:67
ResourceContentWrapper::ResourceContentWrapper
ResourceContentWrapper(Executable *pe, ResourceLeafWrapper *v_leaf, pe::resource_type v_typeId)
Definition
ResourceContentWrapper.h:35
ResourceContentWrapper::getResContentPtr
void * getResContentPtr()
Definition
ResourceContentWrapper.cpp:34
ResourceContentWrapper::getResContentSize
bufsize_t getResContentSize()
Definition
ResourceContentWrapper.cpp:53
ResourceLeafWrapper
Definition
ResourceLeafWrapper.h:10
ResourceVersionWrapper::containsDataType
virtual WrappedValue::data_type containsDataType(size_t fieldId, size_t subField=FIELD_NONE)
Definition
ResourceVersionWrapper.cpp:111
ResourceVersionWrapper::ResourceVersionWrapper
ResourceVersionWrapper(Executable *pe, ResourceLeafWrapper *v_leaf)
Definition
ResourceVersionWrapper.cpp:3
ResourceVersionWrapper::getFieldPtr
virtual void * getFieldPtr(size_t fieldId, size_t subField)
Definition
ResourceVersionWrapper.cpp:77
ResourceVersionWrapper::PRODUCT_VER_1
@ PRODUCT_VER_1
Definition
ResourceVersionWrapper.h:21
ResourceVersionWrapper::FLAGS_MASK
@ FLAGS_MASK
Definition
ResourceVersionWrapper.h:22
ResourceVersionWrapper::VAL_LEN
@ VAL_LEN
Definition
ResourceVersionWrapper.h:13
ResourceVersionWrapper::INFO
@ INFO
Definition
ResourceVersionWrapper.h:15
ResourceVersionWrapper::CHILDREN
@ CHILDREN
Definition
ResourceVersionWrapper.h:29
ResourceVersionWrapper::SUBTYPE
@ SUBTYPE
Definition
ResourceVersionWrapper.h:26
ResourceVersionWrapper::SIGNATURE
@ SIGNATURE
Definition
ResourceVersionWrapper.h:16
ResourceVersionWrapper::FILE_VER_1
@ FILE_VER_1
Definition
ResourceVersionWrapper.h:19
ResourceVersionWrapper::OS
@ OS
Definition
ResourceVersionWrapper.h:24
ResourceVersionWrapper::STRUCT_VER
@ STRUCT_VER
Definition
ResourceVersionWrapper.h:17
ResourceVersionWrapper::TIMESTAMP_1
@ TIMESTAMP_1
Definition
ResourceVersionWrapper.h:28
ResourceVersionWrapper::STRUCT_TYPE
@ STRUCT_TYPE
Definition
ResourceVersionWrapper.h:14
ResourceVersionWrapper::TYPE
@ TYPE
Definition
ResourceVersionWrapper.h:25
ResourceVersionWrapper::PRODUCT_VER_0
@ PRODUCT_VER_0
Definition
ResourceVersionWrapper.h:20
ResourceVersionWrapper::FILE_VER_0
@ FILE_VER_0
Definition
ResourceVersionWrapper.h:18
ResourceVersionWrapper::FLAGS
@ FLAGS
Definition
ResourceVersionWrapper.h:23
ResourceVersionWrapper::TIMESTAMP_0
@ TIMESTAMP_0
Definition
ResourceVersionWrapper.h:27
ResourceVersionWrapper::STRUCT_LEN
@ STRUCT_LEN
Definition
ResourceVersionWrapper.h:12
ResourceVersionWrapper::getFieldName
virtual QString getFieldName(size_t fieldId)
Definition
ResourceVersionWrapper.cpp:48
ResourceVersionWrapper::getVersionInfo
pe::version_info * getVersionInfo()
Definition
ResourceVersionWrapper.cpp:36
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