Example #1
0
 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);
     }
 }
Example #2
0
 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);
     }
 }