BearParser
Portable Executable parsing library (from PE-bear)
Toggle main menu visibility
Loading...
Searching...
No Matches
parser
include
bearparser
pe
rsrc
ResourcesAlbum.h
Go to the documentation of this file.
1
#pragma once
2
3
#define TOP_ENTRY_ROOT long(-1)
4
5
#include "
../../ExeNodeWrapper.h
"
6
#include "
../ResourceLeafWrapper.h
"
7
#include "
ResourceContentFactory.h
"
8
9
#include <map>
10
#include <vector>
11
12
class
ResourcesContainer
{
13
public
:
14
ResourcesContainer
() {}
15
virtual
~ResourcesContainer
() {}
//TODO
16
17
void
putWrapper
(
ResourceContentWrapper
* wrapper);
18
ResourceContentWrapper
*
getWrapperAt
(
size_t
index);
19
20
size_t
count
() {
return
wrappers
.size(); }
21
size_t
entriesCount
();
22
23
protected
:
24
std::vector<ResourceContentWrapper*>
wrappers
;
25
};
26
27
class
ResourcesAlbum
{
28
public
:
29
30
ResourcesAlbum
(
Executable
*pe) {}
31
32
virtual
~ResourcesAlbum
() {
clear
(); }
33
34
void
putLeaf
(
ResourceLeafWrapper
* leaf,
long
topEntryId);
35
void
clear
();
36
37
size_t
dirsCount
() {
return
allLeafs
.size(); }
38
size_t
entriesCountAt
(
long
topEntryId);
39
std::vector<ResourceLeafWrapper*>*
entriesAt
(
long
topEntryId);
40
41
//TODO: create ResourceContentWrapper
42
void
mapIdToLeafType
(
long
topId, pe::resource_type leafType) {
idToLeafType
[topId] = leafType; }
43
void
wrapLeafsContent
();
// TODO: wrap content on demand - lazy mode
44
ResourceContentWrapper
*
getContentWrapper
(
ResourceLeafWrapper
* leaf) {
return
this->
leafToContentWrapper
[leaf]; }
45
46
bool
hasType
(pe::resource_type typeId) {
return
(
allWrappers
.find(typeId) ==
allWrappers
.end()) ? false :
true
; }
47
ResourcesContainer
*
getResourcesOfType
(pe::resource_type typeId);
48
std::vector<pe::resource_type>
getResourceTypes
()
const
{
return
allTypes
; }
49
50
protected
:
51
void
clearLeafsContent
();
52
53
void
initResourceTypes
();
54
bool
hasTopEntry
(
long
topEntryId) {
return
(
allLeafs
.find(topEntryId) ==
allLeafs
.end()) ? false :
true
; }
55
56
std::vector<pe::resource_type>
allTypes
;
57
std::map<pe::resource_type, ResourcesContainer>
allWrappers
;
58
std::map<long, std::vector<ResourceLeafWrapper*> >
allLeafs
;
59
60
std::map<long, pe::resource_type>
idToLeafType
;
// map topEntryId to leafDataType: i. e. RT_HTML, case RT_MANIFEST
61
std::map<ResourceLeafWrapper*, ResourceContentWrapper*>
leafToContentWrapper
;
62
63
};
64
ExeNodeWrapper.h
ResourceContentFactory.h
ResourceLeafWrapper.h
Executable
Definition
Executable.h:26
ResourceContentWrapper
Definition
ResourceContentWrapper.h:10
ResourceLeafWrapper
Definition
ResourceLeafWrapper.h:10
ResourcesAlbum::entriesCountAt
size_t entriesCountAt(long topEntryId)
Definition
ResourcesAlbum.cpp:89
ResourcesAlbum::ResourcesAlbum
ResourcesAlbum(Executable *pe)
Definition
ResourcesAlbum.h:30
ResourcesAlbum::clear
void clear()
Definition
ResourcesAlbum.cpp:45
ResourcesAlbum::leafToContentWrapper
std::map< ResourceLeafWrapper *, ResourceContentWrapper * > leafToContentWrapper
Definition
ResourcesAlbum.h:61
ResourcesAlbum::dirsCount
size_t dirsCount()
Definition
ResourcesAlbum.h:37
ResourcesAlbum::clearLeafsContent
void clearLeafsContent()
Definition
ResourcesAlbum.cpp:35
ResourcesAlbum::wrapLeafsContent
void wrapLeafsContent()
Definition
ResourcesAlbum.cpp:66
ResourcesAlbum::initResourceTypes
void initResourceTypes()
Definition
ResourcesAlbum.cpp:113
ResourcesAlbum::allTypes
std::vector< pe::resource_type > allTypes
Definition
ResourcesAlbum.h:56
ResourcesAlbum::mapIdToLeafType
void mapIdToLeafType(long topId, pe::resource_type leafType)
Definition
ResourcesAlbum.h:42
ResourcesAlbum::putLeaf
void putLeaf(ResourceLeafWrapper *leaf, long topEntryId)
Definition
ResourcesAlbum.cpp:60
ResourcesAlbum::getContentWrapper
ResourceContentWrapper * getContentWrapper(ResourceLeafWrapper *leaf)
Definition
ResourcesAlbum.h:44
ResourcesAlbum::allLeafs
std::map< long, std::vector< ResourceLeafWrapper * > > allLeafs
Definition
ResourcesAlbum.h:58
ResourcesAlbum::getResourcesOfType
ResourcesContainer * getResourcesOfType(pe::resource_type typeId)
Definition
ResourcesAlbum.cpp:105
ResourcesAlbum::hasTopEntry
bool hasTopEntry(long topEntryId)
Definition
ResourcesAlbum.h:54
ResourcesAlbum::entriesAt
std::vector< ResourceLeafWrapper * > * entriesAt(long topEntryId)
Definition
ResourcesAlbum.cpp:97
ResourcesAlbum::getResourceTypes
std::vector< pe::resource_type > getResourceTypes() const
Definition
ResourcesAlbum.h:48
ResourcesAlbum::idToLeafType
std::map< long, pe::resource_type > idToLeafType
Definition
ResourcesAlbum.h:60
ResourcesAlbum::~ResourcesAlbum
virtual ~ResourcesAlbum()
Definition
ResourcesAlbum.h:32
ResourcesAlbum::hasType
bool hasType(pe::resource_type typeId)
Definition
ResourcesAlbum.h:46
ResourcesAlbum::allWrappers
std::map< pe::resource_type, ResourcesContainer > allWrappers
Definition
ResourcesAlbum.h:57
ResourcesContainer
Definition
ResourcesAlbum.h:12
ResourcesContainer::count
size_t count()
Definition
ResourcesAlbum.h:20
ResourcesContainer::putWrapper
void putWrapper(ResourceContentWrapper *wrapper)
Definition
ResourcesAlbum.cpp:5
ResourcesContainer::getWrapperAt
ResourceContentWrapper * getWrapperAt(size_t index)
Definition
ResourcesAlbum.cpp:12
ResourcesContainer::entriesCount
size_t entriesCount()
Definition
ResourcesAlbum.cpp:18
ResourcesContainer::wrappers
std::vector< ResourceContentWrapper * > wrappers
Definition
ResourcesAlbum.h:24
ResourcesContainer::ResourcesContainer
ResourcesContainer()
Definition
ResourcesAlbum.h:14
ResourcesContainer::~ResourcesContainer
virtual ~ResourcesContainer()
Definition
ResourcesAlbum.h:15
Generated by
1.17.0