예제 #1
0
 internal int GetNumberModules(
     IntPtr self,
     out uint loaded,
     out uint unloaded)
 {
     loaded   = (uint)ModuleService.EnumerateModules().Count();
     unloaded = 0;
     return(HResult.S_OK);
 }
예제 #2
0
        public override void Invoke()
        {
            Regex regex     = ModuleName is not null ? new Regex(ModuleName, RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant) : null;
            ulong totalSize = 0;

            foreach (IModule module in ModuleService.EnumerateModules().OrderBy((m) => m.ModuleIndex))
            {
                totalSize += module.ImageSize;
                if (regex is null || regex.IsMatch(Path.GetFileName(module.FileName)))
                {
                    if (Verbose)
                    {
                        WriteLine("{0} {1}", module.ModuleIndex, module.FileName);
                        WriteLine("    Address:         {0:X16}", module.ImageBase);
                        WriteLine("    ImageSize:       {0:X8}", module.ImageSize);
                        WriteLine("    IsPEImage:       {0}", module.IsPEImage);
                        WriteLine("    IsManaged:       {0}", module.IsManaged);
                        WriteLine("    IsFileLayout:    {0}", module.IsFileLayout?.ToString() ?? "<unknown>");
                        WriteLine("    IndexFileSize:   {0}", module.IndexFileSize?.ToString("X8") ?? "<none>");
                        WriteLine("    IndexTimeStamp:  {0}", module.IndexTimeStamp?.ToString("X8") ?? "<none>");
                        WriteLine("    Version:         {0}", module.VersionData?.ToString() ?? "<none>");
                        string versionString = module.VersionString;
                        if (!string.IsNullOrEmpty(versionString))
                        {
                            WriteLine("                     {0}", versionString);
                        }
                        foreach (PdbFileInfo pdbFileInfo in module.PdbFileInfos)
                        {
                            WriteLine("    PdbInfo:         {0}", pdbFileInfo);
                        }
                        WriteLine("    BuildId:         {0}", !module.BuildId.IsDefaultOrEmpty ? string.Concat(module.BuildId.Select((b) => b.ToString("x2"))) : "<none>");
                    }
                    else
                    {
                        WriteLine("{0:X16} {1:X8} {2}", module.ImageBase, module.ImageSize, module.FileName);
                    }
                    if (Segment)
                    {
                        DisplaySegments(module.ImageBase);
                    }
                }
            }
            WriteLine("Total image size: {0}", totalSize);
        }