mirror of
https://github.com/hasherezade/bearparser
synced 2026-06-08 14:32:38 +00:00
55 lines
1.4 KiB
C++
55 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include "PENodeWrapper.h"
|
|
#include "pe_undoc.h"
|
|
|
|
const QString RichHdr_ProdIdToVSversion(WORD prodId);
|
|
const QString RichHdr_translateProdId(WORD prodId);
|
|
|
|
class RichHdrWrapper : public PEElementWrapper
|
|
{
|
|
public:
|
|
/* fields :*/
|
|
enum FieldID {
|
|
NONE = -1,
|
|
DANS_ID = 0,
|
|
CPAD0,
|
|
CPAD1,
|
|
CPAD2,
|
|
COMP_ID_1,
|
|
RICH_ID,
|
|
CHECKSUM,
|
|
FIELD_COUNTER
|
|
};
|
|
|
|
RichHdrWrapper(PEFile *pe)
|
|
: PEElementWrapper(pe), richSign(NULL), dansHdr(NULL), compIdCounter(0) { wrap(); }
|
|
|
|
size_t compIdCount();
|
|
|
|
virtual bool wrap();
|
|
/* full structure boundaries */
|
|
virtual void* getPtr();
|
|
virtual bufsize_t getSize();
|
|
virtual QString getName() { return "Rich Hdr"; }
|
|
virtual size_t getFieldsCount();
|
|
|
|
/* specific field boundaries */
|
|
virtual void* getFieldPtr(size_t fieldId, size_t subField = FIELD_NONE);
|
|
virtual bufsize_t getFieldSize(size_t fieldId, size_t subField = FIELD_NONE);
|
|
virtual QString translateFieldContent(size_t fieldId);
|
|
virtual QString getFieldName(size_t fieldId);
|
|
virtual Executable::addr_type containsAddrType(uint32_t fieldId, uint32_t subField = FIELD_NONE);
|
|
|
|
/* only for this wrapper type */
|
|
pe::RICH_COMP_ID getCompId(size_t fieldId);
|
|
DWORD calcChecksum();
|
|
|
|
protected:
|
|
pe::RICH_SIGNATURE* richSign;
|
|
pe::RICH_DANS_HEADER* dansHdr;
|
|
size_t compIdCounter;
|
|
};
|
|
|
|
|