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); }
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); }
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); }
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); }
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); }
internal MiniDumpModule(MINIDUMP_MODULE module, MiniDumpFile owner) { _owner = owner; _module = module; }