10 const time_t rawtime = (
const time_t)timestamp;
11 QString format =
"dddd, dd.MM.yyyy hh:mm:ss";
12 QDateTime date1(QDateTime(QDateTime::fromTime_t(rawtime)));
13 return date1.toUTC().toString(format) +
" UTC";
26 s_fHdrCharact[F_RELOCS_STRIPPED] =
"Relocation info stripped from file.";
27 s_fHdrCharact[F_EXECUTABLE_IMAGE] =
"File is executable (i.e. no unresolved external references).";
28 s_fHdrCharact[F_LINE_NUMS_STRIPPED] =
"Line numbers stripped from file.";
29 s_fHdrCharact[F_LOCAL_SYMS_STRIPPED] =
"Local symbols stripped from file.";
30 s_fHdrCharact[F_AGGRESIVE_WS_TRIM] =
"Aggressively trim working set";
31 s_fHdrCharact[F_LARGE_ADDRESS_AWARE] =
"App can handle >2gb addresses";
32 s_fHdrCharact[F_BYTES_REVERSED_LO] =
"Bytes of machine word are reversed.";
34 s_fHdrCharact[F_DEBUG_STRIPPED] =
"Debugging info stripped from file in .DBG file";
35 s_fHdrCharact[F_REMOVABLE_RUN_FROM_SWAP] =
"If Image is on removable media, copy and run from the swap file.";
36 s_fHdrCharact[F_NET_RUN_FROM_SWAP] =
"If Image is on Net, copy and run from the swap file.";
39 s_fHdrCharact[F_UP_SYSTEM_ONLY] =
"File should only be run on a UP machine";
40 s_fHdrCharact[F_BYTES_REVERSED_HI] =
"Bytes of machine word are reversed.";
47 std::vector<DWORD> chSet;
49 if (characteristics & iter->first) {
50 chSet.push_back(iter->first);
67 s_machine[M_UNKNOWN] =
"s_machine unknown";
70 s_machine[M_R3000] =
"MIPS little-endian, 0x160 big-endian";
71 s_machine[M_R4000] =
"MIPS little-endian";
72 s_machine[M_R10000] =
"MIPS little-endian";
73 s_machine[M_WCEMIPSV2] =
" MIPS little-endian WCE v2";
83 s_machine[M_POWERPC] =
"IBM PowerPC Little-Endian";
114 if (
m_PE == NULL)
return NULL;
117 IMAGE_FILE_HEADER* hdr = (IMAGE_FILE_HEADER*)
m_Exe->
getContentAt(myOff,
sizeof(IMAGE_FILE_HEADER));
118 if (!hdr)
return NULL;
125 IMAGE_FILE_HEADER * hdr =
reinterpret_cast<IMAGE_FILE_HEADER*
>(
getPtr());
126 if (!hdr)
return NULL;
128 IMAGE_FILE_HEADER &fileHeader = (*hdr);
130 case MACHINE:
return (
void*) &fileHeader.Machine;
131 case SEC_NUM:
return (
void*) &fileHeader.NumberOfSections;
132 case TIMESTAMP:
return (
void*) &fileHeader.TimeDateStamp;
133 case SYMBOL_PTR:
return (
void*) &fileHeader.PointerToSymbolTable;
134 case SYMBOL_NUM:
return (
void*) &fileHeader.NumberOfSymbols;
135 case OPTHDR_SIZE:
return (
void*) &fileHeader.SizeOfOptionalHeader;
136 case CHARACT:
return (
void*) &fileHeader.Characteristics;
138 return (
void*) &fileHeader;
144 case MACHINE:
return(
"Machine");
145 case SEC_NUM:
return (
"Sections Count");
146 case TIMESTAMP:
return(
"Time Date Stamp");
147 case SYMBOL_PTR:
return(
"Ptr to Symbol Table");
149 case OPTHDR_SIZE:
return(
"Size of OptionalHeader");
150 case CHARACT:
return(
"Characteristics");
162 IMAGE_FILE_HEADER * hdr =
reinterpret_cast<IMAGE_FILE_HEADER*
>(
getPtr());
165 IMAGE_FILE_HEADER &fileHeader = (*hdr);
BYTE * getContentAt(offset_t offset, bufsize_t size, bool allowExceptions=false)
static QString translateMachine(DWORD val)
virtual QString translateFieldContent(size_t fieldId)
virtual void * getFieldPtr(size_t fieldId, size_t subField=FIELD_NONE)
virtual Executable::addr_type containsAddrType(size_t fieldId, size_t subField=FIELD_NONE)
static std::vector< DWORD > splitCharact(DWORD characteristics)
virtual QString getFieldName(size_t fieldId)
static void initCharact()
static std::map< DWORD, QString > s_fHdrCharact
static std::map< DWORD, QString > s_machine
static void initMachine()
static QString translateCharacteristics(DWORD charact)
offset_t peFileHdrOffset() const
QString getDateString(const quint64 timestamp)