public override void VisitCLIHeader(CLIHeader header) { m_textWriter.Write(header.Cb); if (m_mdWriter.TargetRuntime >= TargetRuntime.NET_2_0) { m_textWriter.Write((ushort)2); m_textWriter.Write((ushort)5); } else { m_textWriter.Write((ushort)2); m_textWriter.Write((ushort)0); } m_textWriter.Write(header.Metadata.VirtualAddress); m_textWriter.Write(header.Metadata.Size); m_textWriter.Write((uint)header.Flags); m_textWriter.Write(header.EntryPointToken); m_textWriter.Write(header.Resources.VirtualAddress); m_textWriter.Write(header.Resources.Size); m_textWriter.Write(header.StrongNameSignature.VirtualAddress); m_textWriter.Write(header.StrongNameSignature.Size); m_textWriter.Write(header.CodeManagerTable.VirtualAddress); m_textWriter.Write(header.CodeManagerTable.Size); m_textWriter.Write(header.VTableFixups.VirtualAddress); m_textWriter.Write(header.VTableFixups.Size); m_textWriter.Write(header.ExportAddressTableJumps.VirtualAddress); m_textWriter.Write(header.ExportAddressTableJumps.Size); m_textWriter.Write(header.ManagedNativeHeader.VirtualAddress); m_textWriter.Write(header.ManagedNativeHeader.Size); }
public override void VisitCLIHeader(CLIHeader header) { if (m_image.PEOptionalHeader.DataDirectories.Debug != DataDirectory.Zero) { m_image.DebugHeader = new DebugHeader(); VisitDebugHeader(m_image.DebugHeader); } SetPositionToAddress(m_image.PEOptionalHeader.DataDirectories.CLIHeader.VirtualAddress); header.Cb = m_binaryReader.ReadUInt32(); header.MajorRuntimeVersion = m_binaryReader.ReadUInt16(); header.MinorRuntimeVersion = m_binaryReader.ReadUInt16(); header.Metadata = ReadDataDirectory(); header.Flags = (RuntimeImage)m_binaryReader.ReadUInt32(); header.EntryPointToken = m_binaryReader.ReadUInt32(); header.Resources = ReadDataDirectory(); header.StrongNameSignature = ReadDataDirectory(); header.CodeManagerTable = ReadDataDirectory(); header.VTableFixups = ReadDataDirectory(); header.ExportAddressTableJumps = ReadDataDirectory(); header.ManagedNativeHeader = ReadDataDirectory(); if (header.StrongNameSignature != DataDirectory.Zero) { SetPositionToAddress(header.StrongNameSignature.VirtualAddress); header.ImageHash = m_binaryReader.ReadBytes((int)header.StrongNameSignature.Size); } else { header.ImageHash = new byte [0]; } SetPositionToAddress(m_image.CLIHeader.Metadata.VirtualAddress); m_image.MetadataRoot.Accept(m_mdReader); }
public override void VisitCLIHeader(CLIHeader header) { header.SetDefaultValues(); m_image.MetadataRoot.Accept(m_mdinit); }