Example #1
0
 internal Image()
 {
     m_dosHeader          = new DOSHeader();
     m_peFileHeader       = new PEFileHeader();
     m_peOptionalHeader   = new PEOptionalHeader();
     m_sections           = new SectionCollection();
     m_importAddressTable = new ImportAddressTable();
     m_importTable        = new ImportTable();
     m_importLookupTable  = new ImportLookupTable();
     m_hintNameTable      = new HintNameTable();
     m_mdRoot             = new MetadataRoot(this);
 }
Example #2
0
 internal Image()
 {
     m_dosHeader = new DOSHeader ();
     m_peFileHeader = new PEFileHeader ();
     m_peOptionalHeader = new PEOptionalHeader ();
     m_sections = new SectionCollection ();
     m_importAddressTable = new ImportAddressTable ();
     m_importTable = new ImportTable ();
     m_importLookupTable = new ImportLookupTable ();
     m_hintNameTable = new HintNameTable ();
     m_mdRoot = new MetadataRoot (this);
 }
Example #3
0
 public override void VisitStandardFieldsHeader(PEOptionalHeader.StandardFieldsHeader header)
 {
     header.Magic = m_binaryReader.ReadUInt16 ();
     header.LMajor = m_binaryReader.ReadByte ();
     header.LMinor = m_binaryReader.ReadByte ();
     header.CodeSize = m_binaryReader.ReadUInt32 ();
     header.InitializedDataSize = m_binaryReader.ReadUInt32 ();
     header.UninitializedDataSize = m_binaryReader.ReadUInt32 ();
     header.EntryPointRVA = ReadRVA ();
     header.BaseOfCode = ReadRVA ();
     if (!header.IsPE64)
         header.BaseOfData = ReadRVA ();
 }
Example #4
0
 public override void VisitNTSpecificFieldsHeader(PEOptionalHeader.NTSpecificFieldsHeader header)
 {
     header.ImageBase = ReadIntOrLong ();
     header.SectionAlignment = m_binaryReader.ReadUInt32 ();
     header.FileAlignment = m_binaryReader.ReadUInt32 ();
     header.OSMajor = m_binaryReader.ReadUInt16 ();
     header.OSMinor = m_binaryReader.ReadUInt16 ();
     header.UserMajor = m_binaryReader.ReadUInt16 ();
     header.UserMinor = m_binaryReader.ReadUInt16 ();
     header.SubSysMajor = m_binaryReader.ReadUInt16 ();
     header.SubSysMinor = m_binaryReader.ReadUInt16 ();
     header.Reserved = m_binaryReader.ReadUInt32 ();
     header.ImageSize = m_binaryReader.ReadUInt32 ();
     header.HeaderSize = m_binaryReader.ReadUInt32 ();
     header.FileChecksum = m_binaryReader.ReadUInt32 ();
     header.SubSystem = (SubSystem) m_binaryReader.ReadUInt16 ();
     header.DLLFlags = m_binaryReader.ReadUInt16 ();
     header.StackReserveSize = ReadIntOrLong ();
     header.StackCommitSize = ReadIntOrLong ();
     header.HeapReserveSize = ReadIntOrLong ();
     header.HeapCommitSize = ReadIntOrLong ();
     header.LoaderFlags = m_binaryReader.ReadUInt32 ();
     header.NumberOfDataDir = m_binaryReader.ReadUInt32 ();
 }
Example #5
0
        public override void VisitDataDirectoriesHeader(PEOptionalHeader.DataDirectoriesHeader header)
        {
            header.ExportTable = ReadDataDirectory ();
            header.ImportTable = ReadDataDirectory ();
            header.ResourceTable = ReadDataDirectory ();
            header.ExceptionTable = ReadDataDirectory ();
            header.CertificateTable = ReadDataDirectory ();
            header.BaseRelocationTable = ReadDataDirectory ();
            header.Debug = ReadDataDirectory ();
            header.Copyright = ReadDataDirectory ();
            header.GlobalPtr = ReadDataDirectory ();
            header.TLSTable = ReadDataDirectory ();
            header.LoadConfigTable = ReadDataDirectory ();
            header.BoundImport = ReadDataDirectory ();
            header.IAT = ReadDataDirectory ();
            header.DelayImportDescriptor = ReadDataDirectory ();
            header.CLIHeader = ReadDataDirectory ();
            header.Reserved = ReadDataDirectory ();

            if (header.CLIHeader != DataDirectory.Zero)
                m_image.CLIHeader = new CLIHeader ();
            if (header.ExportTable != DataDirectory.Zero)
                m_image.ExportTable = new ExportTable ();
        }
Example #6
0
 public override void VisitDataDirectoriesHeader(PEOptionalHeader.DataDirectoriesHeader header)
 {
     header.SetDefaultValues ();
 }
Example #7
0
 public override void VisitStandardFieldsHeader(PEOptionalHeader.StandardFieldsHeader header)
 {
     header.SetDefaultValues ();
 }
Example #8
0
 public override void VisitPEOptionalHeader(PEOptionalHeader header)
 {
     header.SetDefaultValues ();
 }
Example #9
0
 public override void VisitNTSpecificFieldsHeader(PEOptionalHeader.NTSpecificFieldsHeader header)
 {
     header.SetDefaultValues ();
 }
Example #10
0
 public override void VisitPEOptionalHeader(PEOptionalHeader header)
 {
     header.SetDefaultValues();
 }
Example #11
0
 public override void VisitDataDirectoriesHeader(PEOptionalHeader.DataDirectoriesHeader header)
 {
     header.ExportTable = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.ImportTable = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.ResourceTable = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.ExceptionTable = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.CertificateTable = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.BaseRelocationTable = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.Debug = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.Copyright = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.GlobalPtr = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.TLSTable = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.LoadConfigTable = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.BoundImport = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.IAT = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.DelayImportDescriptor = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.CLIHeader = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
     header.Reserved = new DataDirectory (
         new RVA (m_binaryReader.ReadUInt32 ()),
         m_binaryReader.ReadUInt32 ());
 }
Example #12
0
 public override void VisitStandardFieldsHeader(PEOptionalHeader.StandardFieldsHeader header)
 {
     m_binaryWriter.Write (header.Magic);
     m_binaryWriter.Write (header.LMajor);
     m_binaryWriter.Write (header.LMinor);
     m_binaryWriter.Write (header.CodeSize);
     m_binaryWriter.Write (header.InitializedDataSize);
     m_binaryWriter.Write (header.UninitializedDataSize);
     m_binaryWriter.Write (header.EntryPointRVA.Value);
     m_binaryWriter.Write (header.BaseOfCode.Value);
     if (!header.IsPE64)
         m_binaryWriter.Write (header.BaseOfData.Value);
 }
Example #13
0
 public override void VisitNTSpecificFieldsHeader(PEOptionalHeader.NTSpecificFieldsHeader header)
 {
     WriteIntOrLong (header.ImageBase);
     m_binaryWriter.Write (header.SectionAlignment);
     m_binaryWriter.Write (header.FileAlignment);
     m_binaryWriter.Write (header.OSMajor);
     m_binaryWriter.Write (header.OSMinor);
     m_binaryWriter.Write (header.UserMajor);
     m_binaryWriter.Write (header.UserMinor);
     m_binaryWriter.Write (header.SubSysMajor);
     m_binaryWriter.Write (header.SubSysMinor);
     m_binaryWriter.Write (header.Reserved);
     m_binaryWriter.Write (header.ImageSize);
     m_binaryWriter.Write (header.HeaderSize);
     m_binaryWriter.Write (header.FileChecksum);
     m_binaryWriter.Write ((ushort) header.SubSystem);
     m_binaryWriter.Write (header.DLLFlags);
     WriteIntOrLong (header.StackReserveSize);
     WriteIntOrLong (header.StackCommitSize);
     WriteIntOrLong (header.HeapReserveSize);
     WriteIntOrLong (header.HeapCommitSize);
     m_binaryWriter.Write (header.LoaderFlags);
     m_binaryWriter.Write (header.NumberOfDataDir);
 }
Example #14
0
 public override void VisitDataDirectoriesHeader(PEOptionalHeader.DataDirectoriesHeader header)
 {
     m_binaryWriter.Write (header.ExportTable.VirtualAddress);
     m_binaryWriter.Write (header.ExportTable.Size);
     m_binaryWriter.Write (header.ImportTable.VirtualAddress);
     m_binaryWriter.Write (header.ImportTable.Size);
     m_binaryWriter.Write (header.ResourceTable.VirtualAddress);
     m_binaryWriter.Write (header.ResourceTable.Size);
     m_binaryWriter.Write (header.ExceptionTable.VirtualAddress);
     m_binaryWriter.Write (header.ExceptionTable.Size);
     m_binaryWriter.Write (header.CertificateTable.VirtualAddress);
     m_binaryWriter.Write (header.CertificateTable.Size);
     m_binaryWriter.Write (header.BaseRelocationTable.VirtualAddress);
     m_binaryWriter.Write (header.BaseRelocationTable.Size);
     m_binaryWriter.Write (header.Debug.VirtualAddress);
     m_binaryWriter.Write (header.Debug.Size);
     m_binaryWriter.Write (header.Copyright.VirtualAddress);
     m_binaryWriter.Write (header.Copyright.Size);
     m_binaryWriter.Write (header.GlobalPtr.VirtualAddress);
     m_binaryWriter.Write (header.GlobalPtr.Size);
     m_binaryWriter.Write (header.TLSTable.VirtualAddress);
     m_binaryWriter.Write (header.TLSTable.Size);
     m_binaryWriter.Write (header.LoadConfigTable.VirtualAddress);
     m_binaryWriter.Write (header.LoadConfigTable.Size);
     m_binaryWriter.Write (header.BoundImport.VirtualAddress);
     m_binaryWriter.Write (header.BoundImport.Size);
     m_binaryWriter.Write (header.IAT.VirtualAddress);
     m_binaryWriter.Write (header.IAT.Size);
     m_binaryWriter.Write (header.DelayImportDescriptor.VirtualAddress);
     m_binaryWriter.Write (header.DelayImportDescriptor.Size);
     m_binaryWriter.Write (header.CLIHeader.VirtualAddress);
     m_binaryWriter.Write (header.CLIHeader.Size);
     m_binaryWriter.Write (header.Reserved.VirtualAddress);
     m_binaryWriter.Write (header.Reserved.Size);
 }