public bool Read(PEFile pFile) { Magic = pFile.ReadUInt16(); MajorLinkerVersion = pFile.ReadByte(); MinorLinkerVersion = pFile.ReadByte(); SizeOfCode = pFile.ReadUInt32(); SizeOfInitializedData = pFile.ReadUInt32(); SizeOfUninitializedData = pFile.ReadUInt32(); AddressOfEntryPoint = pFile.ReadUInt32(); BaseOfCode = pFile.ReadUInt32(); BaseOfData = pFile.ReadUInt32(); ImageBase = pFile.ReadUInt32(); SectionAlignment = pFile.ReadUInt32(); FileAlignment = pFile.ReadUInt32(); MajorOperatingSystemVersion = pFile.ReadUInt16(); MinorOperatingSystemVersion = pFile.ReadUInt16(); MajorImageVersion = pFile.ReadUInt16(); MinorImageVersion = pFile.ReadUInt16(); MajorSubsystemVersion = pFile.ReadUInt16(); MinorSubsystemVersion = pFile.ReadUInt16(); Reserved = pFile.ReadUInt32(); SizeOfImage = pFile.ReadUInt32(); SizeOfHeaders = pFile.ReadUInt32(); Checksum = pFile.ReadUInt32(); Subsystem = pFile.ReadUInt16(); DllCharacteristics = pFile.ReadUInt16(); SizeOfStackReserve = pFile.ReadUInt32(); SizeOfStackCommit = pFile.ReadUInt32(); SizeOfHeapReserve = pFile.ReadUInt32(); SizeOfHeapCommit = pFile.ReadUInt32(); LoaderFlags = pFile.ReadUInt32(); NumberOfRVAAndSizes = pFile.ReadUInt32(); for (int index = 0; index < DataDirectories.Length; ++index) { DataDirectories[index] = new DataDirectory(); DataDirectories[index].Read(pFile); } return true; }