private uint[] ReadAddresses(IBinaryStreamReader reader, IOffsetConverter converter) { var addressReader = reader.CreateSubReader(converter.RvaToFileOffset(AddressOfFunctions)); var addresses = new uint[NumberOfFunctions]; for (int i = 0; i < NumberOfFunctions; i++) { addresses[i] = addressReader.ReadUInt32(); } return(addresses); }
public ResourceDirectoryBuffer(IOffsetConverter offsetConverter) { if (offsetConverter == null) { throw new ArgumentNullException("offsetConverter"); } DirectoryTable = new DirectoryTableBuffer(offsetConverter); DataTable = new DataTableBuilder(); DataDirectoryTable = new DataDirectoryTableBuffer(DataTable, offsetConverter); }
public ImportDirectoryBuffer(IOffsetConverter offsetConverter, bool is32Bit) { Is32Bit = is32Bit; if (offsetConverter == null) { throw new ArgumentNullException("offsetConverter"); } _offsetConverter = offsetConverter; ModuleImportTable = new ModuleImportTableBuffer(); NameTable = new NameTableBuffer(); LookupTables = new LookupTablesBuffer(_offsetConverter, NameTable); AddressTables = new LookupTablesBuffer(_offsetConverter, NameTable); }
public ResourceDirectoryBuilder(NetAssemblyBuilder builder, IOffsetConverter offsetConverter, ImageResourceDirectory rootDirectory) { if (builder == null) throw new ArgumentNullException("builder"); if (offsetConverter == null) throw new ArgumentNullException("offsetConverter"); if (rootDirectory == null) throw new ArgumentNullException("rootDirectory"); _offsetConverter = offsetConverter; _rootDirectory = rootDirectory; _resourceDirectory = builder.Assembly.NtHeaders.OptionalHeader.DataDirectories[ImageDataDirectory.ResourceDirectoryIndex]; Segments.Add(_directoryTablesBuilder = new DirectoryTablesBuilder(_resourceDirectory, offsetConverter)); Segments.Add(_dataDirectoryTableBuilder = new DataDirectoryTablesBuilder(_dataTableBuilder, offsetConverter)); Segments.Add(_dataTableBuilder); }
public ExportDirectoryBuffer(ImageExportDirectory exportDirectory, IOffsetConverter converter) { if (exportDirectory == null) { throw new ArgumentNullException("exportDirectory"); } _converter = converter; Segments.Add(_exportDirectory = exportDirectory); Segments.Add(_nameSegment = DataSegment.CreateAsciiString(_exportDirectory.Name, true)); Segments.Add(_nameRvaTable = new SimpleFileSegmentBuilder()); Segments.Add(_nameOrdinalTable = new SimpleFileSegmentBuilder()); Segments.Add(_addressesTable = new SimpleFileSegmentBuilder()); Segments.Add(_namesTable = new SimpleFileSegmentBuilder()); foreach (var export in exportDirectory.Exports) { AddSymbolExport(export); } }
public ImageImportDirectoryBuilder(IOffsetConverter offsetConverter, ImageImportDirectory directory) { if (offsetConverter == null) throw new ArgumentNullException("offsetConverter"); if (directory == null) throw new ArgumentNullException("directory"); _offsetConverter = offsetConverter; _directory = directory; _entryTableBuilder = new FileSegmentBuilder(); _nameTableBuilder = new NameTableBuilder(); _lookupTablesBuilder = new LookupTablesBuilder(_offsetConverter, _nameTableBuilder); AddressTablesBuilder = new LookupTablesBuilder(_offsetConverter, _nameTableBuilder); //Segments.Add(_addressTablesBuilder); Segments.Add(_entryTableBuilder); Segments.Add(_lookupTablesBuilder); Segments.Add(_nameTableBuilder); }
public ResourceDirectoryBuilder(NetAssemblyBuilder builder, IOffsetConverter offsetConverter, ImageResourceDirectory rootDirectory) { if (builder == null) { throw new ArgumentNullException("builder"); } if (offsetConverter == null) { throw new ArgumentNullException("offsetConverter"); } if (rootDirectory == null) { throw new ArgumentNullException("rootDirectory"); } _offsetConverter = offsetConverter; _rootDirectory = rootDirectory; _resourceDirectory = builder.Assembly.NtHeaders.OptionalHeader.DataDirectories[ImageDataDirectory.ResourceDirectoryIndex]; Segments.Add(_directoryTablesBuilder = new DirectoryTablesBuilder(_resourceDirectory, offsetConverter)); Segments.Add(_dataDirectoryTableBuilder = new DataDirectoryTablesBuilder(_dataTableBuilder, offsetConverter)); Segments.Add(_dataTableBuilder); }
public ImageImportDirectoryBuilder(IOffsetConverter offsetConverter, ImageImportDirectory directory) { if (offsetConverter == null) { throw new ArgumentNullException("offsetConverter"); } if (directory == null) { throw new ArgumentNullException("directory"); } _offsetConverter = offsetConverter; _directory = directory; _entryTableBuilder = new FileSegmentBuilder(); _nameTableBuilder = new NameTableBuilder(); _lookupTablesBuilder = new LookupTablesBuilder(_offsetConverter, _nameTableBuilder); AddressTablesBuilder = new LookupTablesBuilder(_offsetConverter, _nameTableBuilder); //Segments.Add(_addressTablesBuilder); Segments.Add(_entryTableBuilder); Segments.Add(_lookupTablesBuilder); Segments.Add(_nameTableBuilder); }
public PointerSegment(FileSegment reference, IOffsetConverter offsetConverter, bool is32Bit) { Reference = reference; OffsetConverter = offsetConverter; Is32Bit = is32Bit; }
public LookupTablesBuffer(IOffsetConverter offsetConverter, NameTableBuffer nameTableBuffer) { _offsetConverter = offsetConverter; _nameTableBuffer = nameTableBuffer; }
public LookupTablesBuilder(IOffsetConverter offsetConverter, NameTableBuilder nameTableBuilder) { _offsetConverter = offsetConverter; _nameTableBuilder = nameTableBuilder; }
public DataDirectoryTablesBuilder(DataTableBuilder dataTableBuilder, IOffsetConverter offsetConverter) { _dataTableBuilder = dataTableBuilder; _offsetConverter = offsetConverter; }
public DirectoryTablesBuilder(ImageDataDirectory resourceDirectory, IOffsetConverter offsetConverter) { _resourceDirectory = resourceDirectory; _offsetConverter = offsetConverter; }
public long GetRva(IOffsetConverter converter) { return(converter.FileOffsetToRva(StartOffset)); }
public DataDirectoryTableBuffer(DataTableBuilder dataTableBuilder, IOffsetConverter offsetConverter) { _dataTableBuilder = dataTableBuilder; _offsetConverter = offsetConverter; }
public DirectoryTableBuffer(IOffsetConverter offsetConverter) { _offsetConverter = offsetConverter; }
private Dictionary <uint, uint> ReadOrdinalRvaTable(IBinaryStreamReader reader, IOffsetConverter converter) { var dictionary = new Dictionary <uint, uint>(); if (NumberOfNames > 0) { var nameOrdinalReader = reader.CreateSubReader(converter.RvaToFileOffset(AddressOfNameOrdinals)); var nameRvaReader = reader.CreateSubReader(converter.RvaToFileOffset(AddressOfNames)); for (int i = 0; i < NumberOfNames; i++) { dictionary.Add(nameOrdinalReader.ReadUInt16() + OrdinalBase, nameRvaReader.ReadUInt32()); } } return(dictionary); }