public ImageOptionalHeader(BinaryReader input, long offset) { if (offset != -1) { input.BaseStream.Seek(offset, SeekOrigin.Begin); } Magic = input.ReadUInt16(); MajorLinkerVersion = input.ReadByte(); MinorLinkerVersion = input.ReadByte(); SizeOfCode = input.ReadUInt32(); SizeOfInitializedData = input.ReadUInt32(); SizeOfUninitializedData = input.ReadUInt32(); AddressOfEntryPoint = input.ReadUInt32(); BaseOfCode = input.ReadUInt32(); BaseOfData = input.ReadUInt32(); ImageBase = input.ReadUInt32(); SectionAlignment = input.ReadUInt32(); FileAlignment = input.ReadUInt32(); MajorOperatingSystemVersion = input.ReadUInt16(); MinorOperatingSystemVersion = input.ReadUInt16(); MajorImageVersion = input.ReadUInt16(); MinorImageVersion = input.ReadUInt16(); MajorSubsystemVersion = input.ReadUInt16(); MinorSubsystemVersion = input.ReadUInt16(); Reserved1 = input.ReadUInt32(); SizeOfImage = input.ReadUInt32(); SizeOfHeaders = input.ReadUInt32(); CheckSum = input.ReadUInt32(); Subsystem = input.ReadUInt16(); DllCharacteristics = input.ReadUInt16(); SizeOfStackReserve = input.ReadUInt32(); SizeOfStackCommit = input.ReadUInt32(); SizeOfHeapReserve = input.ReadUInt32(); SizeOfHeapCommit = input.ReadUInt32(); LoaderFlags = input.ReadUInt32(); NumberOfRvaAndSizes = input.ReadUInt32(); DataDirectories = new ImageDataDirectory[16]; for (int x = 0; x < NumberOfRvaAndSizes; x++) { uint a = input.ReadUInt32(); uint b = input.ReadUInt32(); DataDirectories[x] = new ImageDataDirectory(a, b); } }
public ImageOptionalHeader(BinaryReader input,long offset) { if(offset!=-1) input.BaseStream.Seek(offset,SeekOrigin.Begin); Magic=input.ReadUInt16(); MajorLinkerVersion=input.ReadByte(); MinorLinkerVersion=input.ReadByte(); SizeOfCode=input.ReadUInt32(); SizeOfInitializedData=input.ReadUInt32(); SizeOfUninitializedData=input.ReadUInt32(); AddressOfEntryPoint=input.ReadUInt32(); BaseOfCode=input.ReadUInt32(); BaseOfData=input.ReadUInt32(); ImageBase=input.ReadUInt32(); SectionAlignment=input.ReadUInt32(); FileAlignment=input.ReadUInt32(); MajorOperatingSystemVersion=input.ReadUInt16(); MinorOperatingSystemVersion=input.ReadUInt16(); MajorImageVersion=input.ReadUInt16(); MinorImageVersion=input.ReadUInt16(); MajorSubsystemVersion=input.ReadUInt16(); MinorSubsystemVersion=input.ReadUInt16(); Reserved1=input.ReadUInt32(); SizeOfImage=input.ReadUInt32(); SizeOfHeaders=input.ReadUInt32(); CheckSum=input.ReadUInt32(); Subsystem=input.ReadUInt16(); DllCharacteristics=input.ReadUInt16(); SizeOfStackReserve=input.ReadUInt32(); SizeOfStackCommit=input.ReadUInt32(); SizeOfHeapReserve=input.ReadUInt32(); SizeOfHeapCommit=input.ReadUInt32(); LoaderFlags=input.ReadUInt32(); NumberOfRvaAndSizes=input.ReadUInt32(); DataDirectories=new ImageDataDirectory[16]; for(int x=0;x<NumberOfRvaAndSizes;x++) { uint a=input.ReadUInt32(); uint b=input.ReadUInt32(); DataDirectories[x]=new ImageDataDirectory(a,b); } }