Skip to main content

MiniDump Analyzer · Windows 内存转储分析器

纯 Python、零依赖的 Windows MiniDump(.dmp)文件解析工具。无需 Windows 系统,Linux/macOS 也能用。 查看崩溃转储、列出加载模块、浏览内存区域、搜索字符串、导出内存 — 全在命令行完成。

A pure-Python, zero-dependency parser for Windows MiniDump (.dmp) files. Works on Linux, macOS, and Windows.

Inspect crash dumps, list loaded modules, explore memory regions, search for strings, and export memory — all from the command line.

Features

  • Cross-platform — no Windows API needed, parses the binary format directly
  • Zero dependencies — only the Python standard library
  • Command-line interface with subcommands for common tasks
  • Python API for programmatic use
  • Supports both 32-bit and 64-bit MiniDump formats
  • Handles large dumps (tested with 400MB+ files)

Installation

pip install git+https://github.com/songshiyu777/minidump-analyzer.git

Or clone and install locally:

git clone https://github.com/songshiyu777/minidump-analyzer.git
cd minidump-analyzer
pip install -e .

Quick Start

# Overview of a dump file
minidump-analyzer info crash.dmp

# List all loaded modules (DLLs, EXE)
minidump-analyzer modules crash.dmp

# List loaded modules with size info
minidump-analyzer modules -v crash.dmp

# Show all memory ranges
minidump-analyzer memory crash.dmp

# Show only ranges >= 1 MB
minidump-analyzer memory --min-size 1M crash.dmp

# Show detailed memory info (protection, state, type)
minidump-analyzer meminfo crash.dmp

# List threads with register context
minidump-analyzer threads crash.dmp

# List all streams in the dump
minidump-analyzer streams crash.dmp

# Search memory for a string
minidump-analyzer search "perform_key_validation" crash.dmp

# Export a memory region to a file
minidump-analyzer export --address 0x140000000 --size 4096 --output code.bin crash.dmp

Example output

$ minidump-analyzer info dump.dmp

File        : dump.dmp
File size   : 426.1 MB
Signature   : MDMP (0x504D444D)
Version     : 0xA793
Streams     : 18
Flags       : 0x0000000000000000

Arch        : AMD64 (x86_64)
OS          : Windows NT 10.0.19041
CPU count   : 8
CPU level   : 6

Modules     : 91
Mem regions : 736
Threads     : 42
Total memory: 421.7 MB

Streams:
   THREAD_LIST               size=      840 B  rva=0x00000A20
   MODULE_LIST               size=      3.8 KB  rva=0x00000D98
   MEMORY_64_LIST            size=      5.8 KB  rva=0x00002420
 * SYSTEM_INFO               size=       56 B  rva=0x000003F4
 * MEMORY_INFO_LIST          size=     14.6 KB  rva=0x000023C0
   ...
$ minidump-analyzer modules dump.dmp

0x0000000140000000  鸡之巅.exe
0x00007FF8E2000000  ntdll.dll
0x00007FF8E0000000  kernel32.dll
0x00007FF8DE000000  kernelbase.dll
0x00007FF8C4000000  python310.dll
...
$ minidump-analyzer meminfo dump.dmp

0x0000000140000000    289.1 MB     EXECUTE_READWRITE    COMMIT    IMAGE
0x000000014C7EF000     42.1 MB              READWRITE    COMMIT   MAPPED
0x000000014EFEE000     22.0 MB     EXECUTE_READWRITE    COMMIT   MAPPED
...

Python API

from minidump_analyzer import MiniDumpParser

with MiniDumpParser("crash.dmp") as dump:
    # System info
    sysinfo = dump.get_system_info()
    print(f"OS: {sysinfo.os_version}, Arch: {sysinfo.arch_name}")

    # List all loaded modules
    for mod in dump.get_modules():
        print(f"0x{mod.base_of_image:016X}  {mod.module_name}")

    # Iterate memory ranges
    for r in dump.get_memory_ranges():
        print(f"0x{r.start:016X}-0x{r.end:016X}  {r.size:>10,d} bytes")

    # Search for a string across all memory
    for va, ctx in dump.search("key_validation"):
        print(f"Found at 0x{va:016X}")

    # Read memory at a virtual address
    data = dump.read_va(0x140000000, 256)

    # Read raw data at an RVA
    data = dump.read_rva(0x1000, 512)

Supported Stream Types

Stream Type Parsed
ThreadList 3 Full (TID, register context on x64)
ModuleList 4 Full (base, size, name)
MemoryList 5 Full (32-bit ranges)
SystemInfo 7 Full (arch, OS version, CPU)
Memory64List 9 Full (64-bit ranges)
MemoryInfoList 16 Full (protection, state, type)
ThreadInfoList 17 Basic
Other streams — Raw data accessible via read_stream()

License

MIT — see LICENSE for details.

Metadata

Release files for minidump-analyzer 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for minidump-analyzer 0.1.0
File Size Uploaded
minidump_analyzer-0.1.0.tar.gz 15.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for minidump-analyzer 0.1.0
File Interpreter ABI Platform
minidump_analyzer-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 28.9 kB

Release files / minidump_analyzer-0.1.0.tar.gz

Download URL minidump_analyzer-0.1.0.tar.gz
Size 15.9 kB
Tags Source
SHA-256 checksum
How to use checksums
720a8f80e1b0027d569391211dc4a6dd67e1c135466dc464cbd12f068f918c96
BLAKE2b-256 checksum
How to use checksums
5860456562dd5269398f8b3ed6e87c8f9b9adb7c117656c516fc49f530b3c0fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release files / minidump_analyzer-0.1.0-py3-none-any.whl

Download URL minidump_analyzer-0.1.0-py3-none-any.whl
Size 13.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
86e64fc11b38543019c1b4ab76b0561dcfa8d4c946d04629c0f77212a8addf6a
BLAKE2b-256 checksum
How to use checksums
ddf247b6d69911bc692b640faf209a0fcea8e3ac47dbeebc1807cc7645deaed5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page