Inheritance: AsmResolver.Builder.FileSegmentBuilder
Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        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();
            }
        }