Esempio n. 1
0
        public IList <ModuleInfo> EnumerateModules()
        {
            if (_modules != null)
            {
                return(_modules);
            }

            List <ModuleInfo> modules = new List <ModuleInfo>();

            foreach (DumpModule mod in _dumpReader.EnumerateModules())
            {
                MINIDUMP_MODULE raw = mod.Raw;

                ModuleInfo module = new ModuleInfo(this)
                {
                    FileName  = mod.FullName,
                    ImageBase = raw.BaseOfImage,
                    FileSize  = raw.SizeOfImage,
                    TimeStamp = raw.TimeDateStamp,
                    Version   = GetVersionInfo(mod)
                };

                modules.Add(module);
            }

            _modules = modules;
            return(modules);
        }
Esempio n. 2
0
        private static VersionInfo GetVersionInfo(DumpModule module)
        {
            MINIDUMP_MODULE  raw     = module.Raw;
            VS_FIXEDFILEINFO version = raw.VersionInfo;
            int minor = (ushort)version.dwFileVersionMS;
            int major = (ushort)(version.dwFileVersionMS >> 16);
            int patch = (ushort)version.dwFileVersionLS;
            int rev   = (ushort)(version.dwFileVersionLS >> 16);

            VersionInfo versionInfo = new VersionInfo(major, minor, rev, patch);

            return(versionInfo);
        }
Esempio n. 3
0
        public static MinidumpModule parse_mod(MINIDUMP_MODULE mod, BinaryReader fileBinaryReader)
        {
            MinidumpModule mm = new MinidumpModule();

            mm.baseaddress = mod.BaseOfImage;
            mm.size        = mod.SizeOfImage;
            mm.checksum    = mod.CheckSum;
            mm.timestamp   = mod.TimeDateStamp;
            mm.name        = Helpers.get_from_rva((int)mod.ModuleNameRva, fileBinaryReader);
            mm.versioninfo = mod.VersionInfo;
            mm.endaddress  = (mm.baseaddress + mod.SizeOfImage);
            return(mm);
        }
Esempio n. 4
0
        public static MINIDUMP_MODULE_LIST parse_mml(BinaryReader fileBinaryReader)
        {
            MINIDUMP_MODULE_LIST   mml     = new MINIDUMP_MODULE_LIST();
            List <MINIDUMP_MODULE> modules = new List <MINIDUMP_MODULE>();

            mml.NumberOfModules = Helpers.ReadInt32(fileBinaryReader);
            foreach (var _ in Enumerable.Range(0, mml.NumberOfModules))
            {
                MINIDUMP_MODULE module = parse_mm(fileBinaryReader);
                modules.Add(module);
            }

            mml.Modules = modules;
            return(mml);
        }
Esempio n. 5
0
        public static MINIDUMP_MODULE parse_mm(BinaryReader fileBinaryReader)
        {
            MINIDUMP_MODULE mm = new MINIDUMP_MODULE();

            mm.BaseOfImage   = Helpers.ReadInt64(fileBinaryReader);
            mm.SizeOfImage   = Helpers.ReadUInt32(fileBinaryReader);
            mm.CheckSum      = Helpers.ReadUInt32(fileBinaryReader);
            mm.TimeDateStamp = Helpers.ReadUInt32(fileBinaryReader);
            mm.ModuleNameRva = Helpers.ReadUInt32(fileBinaryReader);
            mm.VersionInfo   = parse_vf(fileBinaryReader);
            mm.CvRecord      = parse_mld(fileBinaryReader);
            mm.MiscRecord    = parse_mld(fileBinaryReader);
            mm.Reserved0     = Helpers.ReadUInt64(fileBinaryReader);
            mm.Reserved1     = Helpers.ReadUInt64(fileBinaryReader);
            return(mm);
        }
Esempio n. 6
0
 internal MiniDumpModule(MINIDUMP_MODULE module, MiniDumpFile owner)
 {
     _owner  = owner;
     _module = module;
 }