public FieldEntry(MetadataDirectory directory, FieldMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.Flags = row.Flags.ToString(); this.Signiture = string.Format("0x{0:x}", row.Signiture.Value); }
public ConstantEntry(MetadataDirectory directory, ConstantMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Parent = row.Parent.ToString(); this.Type = row.Type.ToString(); this.Value = string.Format("0x{0:x}", row.Value); }
public override void ReadDirectories(PeCoffFile containingFile) { _metadata = new MetadataDirectory( containingFile, containingFile.GetAddressFromRVA(this.Header.MetaData.VirtualAddress) ); }
public DeclSecurityEntry(MetadataDirectory directory, DeclSecurityMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Action = string.Format("0x:{0:x}", row.Action); this.Parent = row.Parent.ToString(); this.PermissionSet = string.Format("0x{0:x}", row.PermissionSet); }
private void UpdateNetDirectory(EmitContext context) { var assembly = NetDirectory.Assembly; NetDirectory.MetadataDirectory.VirtualAddress = (uint)assembly.FileOffsetToRva(MetadataDirectory.StartOffset); NetDirectory.MetadataDirectory.Size = MetadataDirectory.GetPhysicalLength(); if (NetDirectory.ResourcesManifest != null) { NetDirectory.ResourcesDirectory.VirtualAddress = (uint)assembly.FileOffsetToRva(NetDirectory.ResourcesManifest.StartOffset); NetDirectory.ResourcesDirectory.Size = NetDirectory.ResourcesManifest.GetPhysicalLength(); } if (NetDirectory.StrongNameData != null) { NetDirectory.StrongNameSignatureDirectory.VirtualAddress = (uint)assembly.FileOffsetToRva(NetDirectory.StrongNameData.StartOffset); NetDirectory.StrongNameSignatureDirectory.Size = NetDirectory.StrongNameData.GetPhysicalLength(); } if (VTableFixups != null) { NetDirectory.VTableFixupsDirectory.VirtualAddress = (uint)assembly.FileOffsetToRva(VTableFixups.Directory.StartOffset); NetDirectory.VTableFixupsDirectory.Size = VTableFixups.Directory.GetPhysicalLength(); } }
public ClassLayoutEntry(MetadataDirectory directory, ClassLayoutMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.ClassSize = string.Format("0x{0:x}", row.ClassSize); this.PackingSize = string.Format("0x{0:x}", row.PackingSize); this.Parent = string.Format("0x{0:x}", row.Parent.Value); }
public EventEntry(MetadataDirectory directory, EventMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.EventFlags = string.Format("0x{0:x}", row.EventFlags); this.EventType = row.EventType.ToString(); }
public FileEntry(MetadataDirectory directory, FileMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.Flags = string.Format("0x{0:x}", row.Flags); this.HashValue = string.Format("0x{0:x}", row.HashValue); }
public TypeRefEntry(MetadataDirectory directory, TypeRefMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.Namespace = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Namespace.Value); this.ResolutionScope = row.ResolutionScope.ToString(); }
public PropertyEntry(MetadataDirectory directory, PropertyMetadataTableRow row) { FileOffset = string.Format("0x{0:x}", row.FileOffset); Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.NameIndex.Value); Attributes = string.Format("0x{0:x}", row.Attributes); Type = string.Format("0x{0:x}", row.TypeIndex); }
public MethodImplEntry(MetadataDirectory directory, MethodImplMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Class = row.Class.Value.ToString(); this.MethodBody = row.MethodBody.ToString(); this.MethodDecleration = row.MethodDeclaration.ToString(); }
public MethodSemanticsEntry(MetadataDirectory directory, MethodSemanticsMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Association = row.Association.ToString(); this.Method = row.Method.Value.ToString(); this.Semantics = string.Format("0x{0:x}", row.Semantics); }
public MemberRefEntry(MetadataDirectory directory, MemberRefMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.Class = row.Class.ToString(); this.Signiture = string.Format("0x{0:x}", row.Signiture.Value); }
public ManifestResourceEntry(MetadataDirectory directory, ManifestResourceMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.Flags = string.Format("0x{0:x}", row.Flags); this.Implementation = row.Implementation.ToString(); this.Offset = string.Format("0x{0:x}", row.Offset); }
public ImplMapEntry(MetadataDirectory directory, ImplMapMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.ImportName = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.ImportName.Value); this.ImportScope = row.ImportScope.Value.ToString(); this.MappingFlags = string.Format("0x:{0:x}", row.MappingFlags); this.MemberForward = row.MemberForward.ToString(); }
public GenricParamEntry(MetadataDirectory directory, GenericParamMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.Flags = string.Format("0x{0:x}", row.Flags); this.Number = row.Number.ToString(); this.Owner = row.Owner.ToString(); }
public ParamEntry(int index, MetadataDirectory directory, ParamMetadataTableRow row) { this.Index = index; this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.Sequence = row.Sequence.ToString(); this.Flags = string.Format("0x{0:x}", row.Flags); }
public ModuleEntry(MetadataDirectory directory, ModuleMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.EncBaseId = row.EncBaseId.ToString(); this.EncId = row.EncId.ToString(); this.Generation = row.Generation.ToString(); this.Mvid = ((GuidStream)directory.Streams[Streams.GuidStream]).GetGuid(row.Mvid).ToString(); }
public StringStreamBenchmark() { PeCoffFile file = new PeCoffFile(TestFile, new TheBoxSoftware.FileSystem()); file.Initialise(); MetadataDirectory directory = file.GetMetadataDirectory(); _stream = directory.Streams[Streams.StringStream] as StringStream; }
public override uint GetPhysicalLength() { var dirLength = MetadataDirectory.GetPhysicalLength(); return(1 * sizeof(uint) + 2 * sizeof(ushort) + 1 * dirLength + 2 * sizeof(uint) + 6 * dirLength); }
public void WhenLoaded_GetMetadataDirectory_ReturnsMetadata() { PeCoffFile coffFile = new PeCoffFile(TestLibrary, new FileSystem()); coffFile.Initialise(); MetadataDirectory directory = coffFile.GetMetadataDirectory(); Assert.IsNotNull(directory); }
public TypeDefBuilder(BuildReferences references, TypeDefMetadataTableRow fromRow) { _references = references; _assembly = references.Assembly; _fromRow = fromRow; _metadata = references.Metadata; _map = references.Map; _metadataStream = _metadata.GetMetadataStream(); }
public TypeDefEntry(MetadataDirectory directory, TypeDefMetadataTableRow row) { this.Extends = row.Extends.ToString(); this.FieldsList = row.FieldList.ToString(); this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Flags = string.Format("0x{0:x}", row.Flags); this.MethodList = row.MethodList.ToString(); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.Namespace = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Namespace.Value); }
public AssemblyRefEntry(MetadataDirectory directory, AssemblyRefMetadataTableRow row) { this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.Version = row.GetVersion().ToString(); this.Culture = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Culture.Value); this.HashValue = row.HashValue.ToString(); this.Flags = row.Flags.ToString(); this.PublicKeyOrToken = row.PublicKeyOrToken.ToString(); }
public SignatureBenchmark() { _file = new PeCoffFile(TestFile, new FileSystem()); _file.Initialise(); _metadata = _file.GetMetadataDirectory(); BlobStream blob = (BlobStream)_metadata.Streams[Streams.BlobStream]; _source = blob.GetRange(0, (uint)blob.GetLength()); // copy full length of stream }
public MethodDefEntry(int index, MetadataDirectory directory, MethodMetadataTableRow row) { this.Index = index; this.FileOffset = string.Format("0x{0:x}", row.FileOffset); this.Flags = string.Format("0x{0:x}", row.Flags); this.ImplFlags = string.Format("0x{0:x}", row.ImplFlags); this.Name = ((StringStream)directory.Streams[Streams.StringStream]).GetString(row.Name.Value); this.ParamList = string.Format("0x{0:x}", row.ParamList.Value); this.RVA = string.Format("0x{0:x}", row.RVA); this.Signiture = string.Format("0x{0:x}", row.Signiture.Value); }
public MethodDefBuilder(BuildReferences references, TypeDef container, MethodMetadataTableRow fromRow) { _metadata = references.Metadata; _map = references.Map; _assembly = references.Assembly; _container = container; _fromRow = fromRow; _metadataStream = _metadata.Streams[Streams.MetadataStream] as MetadataStream; _blobStream = _metadata.Streams[Streams.BlobStream] as BlobStream; _references = references; }
public override void Write(WritingContext context) { var writer = context.Writer; writer.WriteUInt32(Cb); writer.WriteUInt16(MajorRuntimeVersion); writer.WriteUInt16(MinorRuntimeVersion); MetadataDirectory.Write(context); writer.WriteUInt32((uint)Flags); writer.WriteUInt32(EntryPointToken); ResourcesDirectory.Write(context); StrongNameSignatureDirectory.Write(context); CodeManagerTableDirectory.Write(context); VTableFixupsDirectory.Write(context); ExportAddressTableJumpsDirectory.Write(context); ManagedNativeHeaderDirectory.Write(context); }
/// <summary> /// Prints all the type spec Signatures to the Trace stream /// </summary> public void PrintTypeSpecSignatures() { // Read the metadata from the file and populate the entries MetadataDirectory metadata = this.File.GetMetadataDirectory(); MetadataStream metadataStream = (MetadataStream)metadata.Streams[Streams.MetadataStream]; int count = 0; // StringStream stringStream = (StringStream)metadata.Streams[Streams.StringStream]; if (metadataStream.Tables.ContainsKey(MetadataTables.TypeSpec)) { foreach (TypeSpecMetadataTableRow typeSpecRow in metadataStream.Tables[MetadataTables.TypeSpec]) { TypeSpec type = TypeSpec.CreateFromMetadata(this, metadata, typeSpecRow); type.Signiture.PrintTokens(); } } }
/// <summary> /// Factor method for instantiating and populating MemberRef instances from /// Metadata. /// </summary> /// <param name="assembly">The assembly the reference is defined in.</param> /// <param name="metadata">The metadata the reference is detailed in.</param> /// <param name="row">The actual metadata row with the details of the member.</param> /// <returns>An instantiated MemberRef instance.</returns> internal static MemberRef CreateFromMetadata( AssemblyDef assembly, MetadataDirectory metadata, MemberRefMetadataTableRow row) { MemberRef memberRef = new MemberRef(); memberRef.UniqueId = assembly.CreateUniqueId(); memberRef.Name = assembly.StringStream.GetString(row.Name.Value); memberRef.SignitureBlob = row.Signiture; memberRef.Assembly = assembly; memberRef._class = row.Class; // These methods of detecting different method types are not // infalable. A user can create a method for example that starts iwth // get_, set_ or op_. This best detail is stored in the MethodSemantics // table AND we will need to load that at some point :/ memberRef.IsConstructor = memberRef.Name.StartsWith("."); memberRef.IsOperator = memberRef.Name.StartsWith("op_"); return(memberRef); }