mirror of
https://github.com/hasherezade/bearparser
synced 2026-06-08 14:32:38 +00:00
50 lines
1.3 KiB
C++
50 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "../ExeNodeWrapper.h"
|
|
|
|
#include <map>
|
|
#include <vector>
|
|
#include "pe_formats.h"
|
|
|
|
class ResourceLeafWrapper : public ExeNodeWrapper
|
|
{
|
|
public:
|
|
// fields :
|
|
enum FieldID {
|
|
NONE = FIELD_NONE,
|
|
OFFSET_TO_DATA,
|
|
DATA_SIZE,
|
|
CODE_PAGE,
|
|
RESERVED,
|
|
FIELD_COUNTER
|
|
};
|
|
|
|
ResourceLeafWrapper(Executable *pe, offset_t rawOffset, long topEntryId)
|
|
: ExeNodeWrapper(pe), offset(rawOffset), topEntryID(topEntryId){ }
|
|
|
|
virtual ~ResourceLeafWrapper() { }
|
|
|
|
virtual void* getPtr() { return leafEntryPtr(); }
|
|
virtual bufsize_t getSize() { return sizeof(IMAGE_RESOURCE_DATA_ENTRY); }
|
|
|
|
virtual QString getName() { return "Resource Data"; }
|
|
virtual size_t getFieldsCount() { return FIELD_COUNTER; }
|
|
|
|
virtual void* getFieldPtr(size_t fieldId, size_t subField);
|
|
virtual QString getFieldName(size_t fieldId);
|
|
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField)
|
|
{
|
|
return (fieldId == OFFSET_TO_DATA) ? Executable::RVA : Executable::NOT_ADDR;
|
|
}
|
|
|
|
IMAGE_RESOURCE_DATA_ENTRY *leafEntryPtr();
|
|
|
|
Executable* getExe() { return this->m_Exe; }
|
|
|
|
protected:
|
|
offset_t offset;
|
|
long topEntryID;
|
|
//ResourceEntryWrapper* parentEntry;
|
|
};
|
|
|