Files
2019-12-01 00:43:54 +01:00

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;
};