コード例 #1
0
ファイル: Utilities.cs プロジェクト: zsr2531/AsmResolver
 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);
     }
 }
コード例 #2
0
        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("------------------------------------------------------------");
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: Utilities.cs プロジェクト: JerreS/AsmResolver
 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);
     }
 }