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";
84 s_machine[M_POWERPC] =
"IBM PowerPC Little-Endian";
115 if (
m_PE == NULL)
return NULL;
118 IMAGE_FILE_HEADER* hdr = (IMAGE_FILE_HEADER*)
m_Exe->
getContentAt(myOff,
sizeof(IMAGE_FILE_HEADER));
119 if (!hdr)
return NULL;
126 IMAGE_FILE_HEADER * hdr =
reinterpret_cast<IMAGE_FILE_HEADER*
>(
getPtr());
127 if (!hdr)
return NULL;
129 IMAGE_FILE_HEADER &fileHeader = (*hdr);
131 case MACHINE:
return (
void*) &fileHeader.Machine;
132 case SEC_NUM:
return (
void*) &fileHeader.NumberOfSections;
133 case TIMESTAMP:
return (
void*) &fileHeader.TimeDateStamp;
134 case SYMBOL_PTR:
return (
void*) &fileHeader.PointerToSymbolTable;
135 case SYMBOL_NUM:
return (
void*) &fileHeader.NumberOfSymbols;
136 case OPTHDR_SIZE:
return (
void*) &fileHeader.SizeOfOptionalHeader;
137 case CHARACT:
return (
void*) &fileHeader.Characteristics;
139 return (
void*) &fileHeader;
145 case MACHINE:
return(
"Machine");
146 case SEC_NUM:
return (
"Sections Count");
150 return "ReproChecksum";
152 return(
"Time Date Stamp");
154 case SYMBOL_PTR:
return(
"Ptr to Symbol Table");
156 case OPTHDR_SIZE:
return(
"Size of OptionalHeader");
157 case CHARACT:
return(
"Characteristics");
169 IMAGE_FILE_HEADER * hdr =
reinterpret_cast<IMAGE_FILE_HEADER*
>(
getPtr());
172 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)