如何从一个 C# 的 dump 中挖到机器相关的信息?

前段时间有位朋友问我,如何从 dump 中提取出哪些和机器相关的信息?比如:机器内存大小,cpu核数,机器名,机器的环境变量 等等。

那如何提取到里面的信息呢?当然我也没说全部可以提取的到。。。这里就拿自己的机器举例吧:

1. 如何提取 cpu 核数

windbg 中有一个 !cpuid 命令,可以提取出cpu的相关信息。

0:006> !cpuid
CP  F/M/S  Manufacturer     MHz
 0  6,5,2  GenuineIntel    2592
 1  6,5,2  GenuineIntel    2592
 2  6,5,2  GenuineIntel    2592
 3  6,5,2  GenuineIntel    2592
 4  6,5,2  GenuineIntel    2592
 5  6,5,2  GenuineIntel    2592
 6  6,5,2  GenuineIntel    2592
 7  6,5,2  GenuineIntel    2592
 8  6,5,2  GenuineIntel    2592
 9  6,5,2  GenuineIntel    2592
10  6,5,2  GenuineIntel    2592
11  6,5,2  GenuineIntel    2592

可以看出,当前cpu为12核,厂家为intel,兆赫=2592。

2. 如何提取机器名

windbg中有一个命令叫 !envvar ,可用于获取指定的环境变量,比如这里的 COMPUTERNAME 啦。

0:006> !envvar COMPUTERNAME
        COMPUTERNAME = SD-20210607OIBM

3. 如何提取机器环境变量

从上面的 !envvar 用法中你应该能感触到,既然能提取环境变量,那能不能获取到所有的环境变量呢?当然可以了哈。用 !peb,也就是 Process Environment Block。

0:006> !peb
PEB at 002af000
    InheritedAddressSpace:    No
    ReadImageFileExecOptions: No
    BeingDebugged:            Yes
    ImageBaseAddress:         00400000
    NtGlobalFlag:             4070
    NtGlobalFlag2:            0
    Ldr                       77975d80
    Ldr.Initialized:          Yes
    Ldr.InInitializationOrderModuleList: 006e4f68 . 0075e630
    Ldr.InLoadOrderModuleList:           006e5060 . 0075bae8
    Ldr.InMemoryOrderModuleList:         006e5068 . 0075baf0
            Base TimeStamp                     Module
          400000 D:\net5\ConsoleApp4\ConsoleApp1\bin\Debug\ConsoleApp1.exe
        77850000 5f641e44 Sep 18 10:41:08 2020 C:\Windows\SYSTEM32\ntdll.dll
        7c570000 C:\Windows\SYSTEM32\MSCOREE.DLL
        75ac0000 C:\Windows\System32\KERNEL32.dll
        76900000 197b16c5 Jul 20 05:12:37 1983 C:\Windows\System32\KERNELBASE.dll
        76880000 C:\Windows\System32\ADVAPI32.dll
        75740000 7f567a50 Sep 12 21:10:40 2037 C:\Windows\System32\msvcrt.dll
        76170000 56a91365 Jan 28 02:58:45 2016 C:\Windows\System32\sechost.dll
        76c20000 C:\Windows\System32\RPCRT4.dll
        7c5d0000 5e7d1df2 Mar 27 05:26:10 2020 C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoreei.dll
        758a0000 C:\Windows\System32\SHLWAPI.dll
        76490000 3d49eb55 Aug 02 10:15:49 2002 C:\Windows\System32\kernel.appcore.dll
        74b60000 C:\Windows\SYSTEM32\VERSION.dll
        79a40000 5f7e61bb Oct 08 08:47:55 2020 C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
        76650000 1e757656 Mar 12 20:28:06 1986 C:\Windows\System32\USER32.dll
        764d0000 55cf9768 Aug 16 03:47:52 2015 C:\Windows\System32\win32u.dll
        75480000 1baae673 Sep 16 20:15:47 1984 C:\Windows\System32\GDI32.dll
        764f0000 C:\Windows\System32\gdi32full.dll
        7a210000 5bac17e1 Sep 27 07:36:01 2018 C:\Windows\SYSTEM32\ucrtbase_clr0400.dll
        7a1f0000 5bac17e5 Sep 27 07:36:05 2018 C:\Windows\SYSTEM32\VCRUNTIME140_CLR0400.dll
        75810000 C:\Windows\System32\msvcp_win.dll
        77500000 73123758 Mar 06 22:27:36 2031 C:\Windows\System32\ucrtbase.dll
        764a0000 39046a45 Apr 24 23:37:41 2000 C:\Windows\System32\IMM32.DLL
        7a2c0000 5f7e60f6 Oct 08 08:44:38 2020 C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\218db16dceaef380c6daf35c6a48f313\mscorlib.ni.dll
        762a0000 4f8dda94 Apr 18 05:03:16 2012 C:\Windows\System32\ole32.dll
        754b0000 2f680839 Mar 16 17:43:21 1995 C:\Windows\System32\combase.dll
        76b80000 C:\Windows\System32\bcryptPrimitives.dll
        7b6d0000 5f7e60c1 Oct 08 08:43:45 2020 C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
        77750000 C:\Windows\System32\OLEAUT32.dll
    SubSystemData:     00000000
    ProcessHeap:       006e0000
    ProcessParameters: 006e29b8
    CurrentDirectory:  'C:\Windows\system32\'
    WindowTitle:  'D:\net5\ConsoleApp4\ConsoleApp1\bin\Debug\ConsoleApp1.exe'
    ImageFile:    'D:\net5\ConsoleApp4\ConsoleApp1\bin\Debug\ConsoleApp1.exe'
    CommandLine:  'D:\net5\ConsoleApp4\ConsoleApp1\bin\Debug\ConsoleApp1.exe'
    DllPath:      '< Name not readable >'
    Environment:  006e0b80
        =::=::\
        ALLUSERSPROFILE=C:\ProgramData
        APPDATA=C:\Users\Administrator\AppData\Roaming
        ASPNETCORE_ENVIRONMENT=Development
        CLASSPATH=.;C:\Program Files\Java\jdk1.8.0_121\lib\dt.jar;C:\Program Files\Java\jdk1.8.0_121\lib\tools.jar;
        CommonProgramFiles=C:\Program Files (x86)\Common Files
        CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
        CommonProgramW6432=C:\Program Files\Common Files
        COMPUTERNAME=SD-20210607OIBM
        ComSpec=C:\Windows\system32\cmd.exe
        DBGENG_OVERRIDE_DBGSRV_PATH=C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps\Microsoft.WinDbg_8wekyb3d8bbwe\dbgsrv32.exe
        DBGHELP_HOMEDIR=C:\ProgramData\Dbg
        DriverData=C:\Windows\System32\Drivers\DriverData
        HOMEDRIVE=C:
        HOMEPATH=\Users\Administrator
        JAVA_HOME=C:\Program Files\Java\jdk1.8.0_121
        LOCALAPPDATA=C:\Users\Administrator\AppData\Local
        LOGONSERVER=\\SD-20210607OIBM
        MOZ_PLUGIN_PATH=C:\Program Files (x86)\Foxit Software\Foxit Reader\plugins\
        NUMBER_OF_PROCESSORS=12
        OneDrive=C:\Users\Administrator\OneDrive
        OS=Windows_NT
        Path=C:\Program Files\WindowsApps\Microsoft.WinDbg_1.2107.13001.0_neutral__8wekyb3d8bbwe\x86;C:\Program Files\WindowsApps\Microsoft.WinDbg_1.2107.13001.0_neutral__8wekyb3d8bbwe\amd64;C:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\dotnet\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files\Git\cmd;C:\soft\procdump;C:\Program Files\Java\jdk1.8.0_121\bin;C:\Program Files\Java\jdk1.8.0_121\jre\bin;C:\Program Files\nodejs\;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Azure Data Studio\bin;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Visual Leak Detector\bin\Win32;C:\Program Files (x86)\Visual Leak Detector\bin\Win64;C:\Program Files\TortoiseGit\bin;C:\Program Files\Microsoft\Web Platform Installer\;C:\soft\nginx;C:\Program Files (x86)\dotnet\;C:\Program Files (x86)\NetSarang\Xshell 7\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\Users\Administrator\.dotnet\tools;C:\Users\Administrator\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Administrator\AppData\Roaming\npm
        PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
        PROCESSOR_ARCHITECTURE=x86
        PROCESSOR_ARCHITEW6432=AMD64
        PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 165 Stepping 2, GenuineIntel
        PROCESSOR_LEVEL=6
        PROCESSOR_REVISION=a502
        ProgramData=C:\ProgramData
        ProgramFiles=C:\Program Files (x86)
        ProgramFiles(x86)=C:\Program Files (x86)
        ProgramW6432=C:\Program Files
        PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\PowerShell\Modules\
        PUBLIC=C:\Users\Public
        SRCSRV_SHOW_TF_PROMPT=1
        SystemDrive=C:
        SystemRoot=C:\Windows
        TEMP=C:\Users\ADMINI~1\AppData\Local\Temp
        TMP=C:\Users\ADMINI~1\AppData\Local\Temp
        USERDOMAIN=SD-20210607OIBM
        USERDOMAIN_ROAMINGPROFILE=SD-20210607OIBM
        USERNAME=Administrator
        USERPROFILE=C:\Users\Administrator
        windir=C:\Windows
        WXDRIVE_START_ARGS=--wxdrive-setting=0 --disable-gpu --disable-software-rasterizer --enable-features=NetworkServiceInProcess
        ZES_ENABLE_SYSMAN=1

哈哈,这信息是不是相当多。。。。

4. 其他信息

很遗憾的是,我目前还不知道从 dump 中提取出当前机器的内存大小,如果有知道的,可以聊一聊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值