public NetTextBuilder(ImageNetDirectory directory) { _directory = directory; ImportBuilder = new ImageImportDirectoryBuilder(directory.Assembly, directory.Assembly.ImportDirectory); Segments.Add(ImportBuilder.AddressTablesBuilder); Segments.Add(directory); Segments.Add(MethodBodyTableBuilder = new MethodBodyTableBuilder()); Segments.Add(NetResourceDirectoryBuilder = new NetResourceDirectoryBuilder()); Segments.Add(DataBuilder = new NetDataTableBuilder()); if (directory.StrongNameData != null) { Segments.Add(directory.StrongNameData); } Segments.Add(Metadata = new MetadataBuilder(directory.MetadataHeader)); if (directory.Assembly.DebugDirectory != null) { Segments.Add(directory.Assembly.DebugDirectory); Segments.Add(directory.Assembly.DebugDirectory.Data); } Segments.Add(ImportBuilder); Segments.Add(StartupCode = new StartupCodeSegmentBuilder()); }
public NetTextBuilder(ImageNetDirectory directory) { _directory = directory; ImportBuilder = new ImageImportDirectoryBuilder(directory.Assembly, directory.Assembly.ImportDirectory); Segments.Add(ImportBuilder.AddressTablesBuilder); Segments.Add(directory); Segments.Add(MethodBodyTableBuilder = new MethodBodyTableBuilder()); Segments.Add(NetResourceDirectoryBuilder = new NetResourceDirectoryBuilder()); Segments.Add(DataBuilder = new NetDataTableBuilder()); if (directory.StrongNameData != null) Segments.Add(directory.StrongNameData); Segments.Add(Metadata = new MetadataBuilder(directory.MetadataHeader)); if (directory.Assembly.DebugDirectory != null) { Segments.Add(directory.Assembly.DebugDirectory); Segments.Add(directory.Assembly.DebugDirectory.Data); } Segments.Add(ImportBuilder); Segments.Add(StartupCode = new StartupCodeSegmentBuilder()); }
private void UpdateMetaDataDirectories() { _directory.MetadataDirectory.VirtualAddress = (uint)_directory.Assembly.FileOffsetToRva(Metadata.StartOffset); _directory.MetadataDirectory.Size = Metadata.GetPhysicalLength(); if (_directory.StrongNameData != null) { _directory.StrongNameSignatureDirectory.VirtualAddress = (uint)_directory.Assembly.FileOffsetToRva(_directory.StrongNameData.StartOffset); _directory.StrongNameSignatureDirectory.Size = _directory.StrongNameData.GetPhysicalLength(); } if (NetResourceDirectoryBuilder.Segments.Count > 0) { _directory.ResourcesDirectory.VirtualAddress = (uint)_directory.Assembly.FileOffsetToRva(NetResourceDirectoryBuilder.StartOffset); _directory.ResourcesDirectory.Size = NetResourceDirectoryBuilder.GetPhysicalLength(); } }