BearParser
Portable Executable parsing library (from PE-bear)
Loading...
Searching...
No Matches
DebugDirWrapper.h
Go to the documentation of this file.
1#pragma once
2
4#include "pe_undoc.h"
5
7{
8public:
9
21 };
22
24 : DataDirEntryWrapper(pe, pe::DIR_DEBUG) { wrap(); }
25
27
28 bool wrap();
29
30 virtual void* getPtr();
31 virtual bufsize_t getSize();
32 virtual QString getName();
33 virtual size_t getFieldsCount() { return FIELD_COUNTER; }
34 virtual size_t getSubFieldsCount() { return 1; }
35
36 virtual void* getFieldPtr(size_t fieldId, size_t subField);
37 virtual QString getFieldName(size_t fieldId);
38 virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField = FIELD_NONE);
39
40 QString translateType(int type);
41 QString translateFieldContent(size_t fieldId);
42
43protected:
44 BYTE* getDebugStruct();
45 pe::DEBUG_RSDSI* getRDSI();
46 pe::DEBUG_NB10* getNB10();
47
48 IMAGE_DEBUG_DIRECTORY* debugDir();
49
51};
52
53
55{
56public:
57 // fields :
58 enum FieldID {
65 };
66
68 : ExeNodeWrapper(pe, _parentDir, 0)
69 {
70 this->parentDir = _parentDir;
71 }
72
73 // full structure boundaries
74 virtual void* getPtr();
75 virtual bufsize_t getSize();
76
77 virtual QString getName() { return "CodeView Info"; }
78 virtual size_t getFieldsCount() { return getPtr() ? FIELD_COUNTER : 0; }
79 virtual size_t getSubFieldsCount() { return 1; }
80
81 // specific field boundaries
82 virtual void* getFieldPtr(size_t fieldId, size_t subField = FIELD_NONE);
83 virtual QString getFieldName(size_t fieldId);
84 virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField) { return Executable::NOT_ADDR; }
85
86 QString translateFieldContent(size_t fieldId);
87
88 //this wrapper only:
89 QString getGuidString();
90 QString getSignature();
91private:
92 DebugDirWrapper* parentDir;
93};
uint32_t bufsize_t
#define FIELD_NONE
QString translateFieldContent(size_t fieldId)
virtual QString getFieldName(size_t fieldId)
virtual QString getName()
QString getSignature()
FieldID
@ F_CVDBG_SIGN
@ F_CVDBG_GUID
@ F_CVDBG_AGE
@ NONE
@ FIELD_COUNTER
@ F_CVDBG_PDB
virtual void * getPtr()
DebugDirCVEntryWrapper(Executable *pe, DebugDirWrapper *_parentDir)
virtual void * getFieldPtr(size_t fieldId, size_t subField=FIELD_NONE)
QString getGuidString()
virtual size_t getFieldsCount()
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField)
virtual bufsize_t getSize()
virtual size_t getSubFieldsCount()
virtual size_t getFieldsCount()
pe::DEBUG_RSDSI * getRDSI()
QString translateFieldContent(size_t fieldId)
QString translateType(int type)
virtual bufsize_t getSize()
virtual QString getName()
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField=FIELD_NONE)
virtual QString getFieldName(size_t fieldId)
virtual void * getFieldPtr(size_t fieldId, size_t subField)
pe::DEBUG_NB10 * getNB10()
virtual size_t getSubFieldsCount()
DebugDirWrapper(PEFile *pe)
IMAGE_DEBUG_DIRECTORY * debugDir()
virtual void * getPtr()
virtual void clear()
Definition: PEFile.h:41