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); }
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); }
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 (); }
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 (); }
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 (); }
public override void VisitDataDirectoriesHeader(PEOptionalHeader.DataDirectoriesHeader header) { header.SetDefaultValues (); }
public override void VisitStandardFieldsHeader(PEOptionalHeader.StandardFieldsHeader header) { header.SetDefaultValues (); }
public override void VisitPEOptionalHeader(PEOptionalHeader header) { header.SetDefaultValues (); }
public override void VisitNTSpecificFieldsHeader(PEOptionalHeader.NTSpecificFieldsHeader header) { header.SetDefaultValues (); }
public override void VisitPEOptionalHeader(PEOptionalHeader header) { header.SetDefaultValues(); }
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 ()); }
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); }
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); }
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); }