6 if (
m_PE == NULL)
return NULL;
15 bufsize_t size =
sizeof(IMAGE_DATA_DIRECTORY) * pe::DIR_ENTRIES_COUNT;
21 if (fieldId >= pe::DIR_ENTRIES_COUNT) {
25 IMAGE_DATA_DIRECTORY* dataDir = (IMAGE_DATA_DIRECTORY*)
getPtr();
26 if (dataDir == NULL)
return NULL;
30 return (
void*)(&dataDir[fieldId].VirtualAddress);
32 return (
void*)(&dataDir[fieldId].Size);
34 return (
void*)(&dataDir[fieldId].VirtualAddress);
39 if (fieldId >= pe::DIR_ENTRIES_COUNT)
return getSize();
41 IMAGE_DATA_DIRECTORY* dir = (IMAGE_DATA_DIRECTORY*)
getPtr();
42 if (dir == NULL)
return 0;
44 IMAGE_DATA_DIRECTORY record = dir[fieldId];
48 return sizeof(record.VirtualAddress);
50 return sizeof(record.Size);
52 return sizeof(record.VirtualAddress) +
sizeof(record.Size);
58 case pe::DIR_EXPORT:
return "Export Directory";
59 case pe::DIR_IMPORT:
return "Import Directory";
60 case pe::DIR_RESOURCE :
return "Resource Directory";
61 case pe::DIR_EXCEPTION:
return "Exception Directory";
62 case pe::DIR_SECURITY:
return "Security Directory";
63 case pe::DIR_BASERELOC:
return "Base Relocation Table";
64 case pe::DIR_DEBUG :
return "Debug Directory";
65 case pe::DIR_ARCHITECTURE:
return "Architecture Specific Data";
66 case pe::DIR_GLOBALPTR :
return "RVA of GlobalPtr";
67 case pe::DIR_TLS:
return "TLS Directory";
68 case pe::DIR_LOAD_CONFIG:
return "Load Configuration Directory";
69 case pe::DIR_BOUND_IMPORT:
return "Bound Import Directory";
70 case pe::DIR_IAT:
return "Import Address Table";
71 case pe::DIR_DELAY_IMPORT:
return "Delay Load Import Descriptors";
72 case pe::DIR_COM_DESCRIPTOR :
return ".NET header";
virtual QString getFieldName(size_t fieldId)
virtual bufsize_t getFieldSize(size_t fieldId, size_t subField)
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField=FIELD_NONE)
virtual bufsize_t getSize()
virtual void * getFieldPtr(size_t fieldId, size_t subField)
BYTE * getContentAt(offset_t offset, bufsize_t size, bool allowExceptions=false)
offset_t peDataDirOffset()