public static void ValidateImportDirectory(ImageImportDirectory originalDirectory, ImageImportDirectory newDirectory) { for (int i = 0; i < originalDirectory.ModuleImports.Count; i++) { Assert.True(i < newDirectory.ModuleImports.Count); var originalModule = originalDirectory.ModuleImports[i]; var newModule = originalDirectory.ModuleImports[i]; ValidateModuleImport(originalModule, newModule); } }
private static void dumpModuleHeader2(Log log, ProcessMemory m, Diag::ProcessModule mod) { Module module = new Module(m, mod); ImageImportDirectory import = null; foreach (ImageDataDirectory dir in module.Directories) { if (dir.pData.IsNull) { continue; } log.WriteLine("DirectoryEntry: " + afh.Enum.GetDescription(dir.DirectoryType)); log.AddIndent(); log.WriteVar("RVA of Data", "0x" + dir.pData.Address.ToString("X8")); log.WriteVar("Size of Data", "0x" + dir.DataSize.ToString("X8")); log.RemoveIndent(); if (dir is ImageImportDirectory) { import = (ImageImportDirectory)dir; } } if (import == null) { return; } log.WriteLine("============================================================"); log.WriteLine(" IMPORT TABLE "); log.WriteLine("============================================================"); foreach (ImageImportDirectory.ImportModule imod in import) { log.WriteVar("Importing from", imod.Name); log.WriteVar("ForwarderChain", imod.ForwarderChain); log.WriteVar("TimeDateStamp", imod.TimeDateStamp); foreach (ImageImportDirectory.ImportFunction ifunc in imod) { log.WriteLine( "dllimport {0} \t@ 0x{1:X8}", ifunc.Name, (uint)(System.IntPtr)ifunc.pFptr[0] ); } log.WriteLine("------------------------------------------------------------"); } }
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 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 static void ValidateImportDirectory(ImageImportDirectory originalDirectory, ImageImportDirectory newDirectory) { for (int i = 0; i < originalDirectory.ModuleImports.Count; i++) { Assert.IsTrue(i < newDirectory.ModuleImports.Count); var originalModule = originalDirectory.ModuleImports[i]; var newModule = originalDirectory.ModuleImports[i]; ValidateModuleImport(originalModule, newModule); } }