2010-11-19 77 views
3

當我在VMMap中查看我的進程時,可以看到內存映射文件的文件名。我現在正在分析WinDbg中的內存轉儲,並想知道內存映射文件的文件名。我如何從WinDbg或.dmp文件找到它?如何在WinDbg中查找內存映射文件的名稱?

+0

這是託管代碼還是本機代碼? – 2010-11-19 18:57:55

+0

它混合。映射文件的代碼不是託管代碼。這是一個本地dll。 – Sean 2010-11-19 19:04:26

回答

2

基本上,一旦設法獲得內存映射文件的句柄,就可以使用!handle <address> 0xF命令查看一些相關數據(包括其名稱)。
如果您沒有特定的句柄,但只想查看過程中現有內存映射文件的名稱,則可以使用以下命令:!handle 0 0x4 Section
原本應該爲你提供類似這樣的輸出:

Handle 6bc 
    Name   \BaseNamedObjects\NLS_CodePage_862_3_2_0_0 
Handle 6cc 
    Name   \BaseNamedObjects\MyMap 
Handle 794 
    Name   \BaseNamedObjects\Cor_Private_IPCBlock_v4_4092 
Handle 798 
    Name   \BaseNamedObjects\Cor_SxSPublic_IPCBlock_4092 
Handle 7cc 
    Name   \BaseNamedObjects\ShimSharedMemory 
5 handles of type Section 

如果你想查看的實際文件名,你可以在一個內核調試器發出!handle命令查看系統中的對象的一些信息對應於您的文件句柄。
例如:

lkd> !handle 0 0x3 2c4 File 

Searching for Process with Cid == 2c4 
Searching for handles of type File 
PROCESS 89242da0 SessionId: 0 Cid: 02c4 Peb: 7ffdd000 ParentCid: 0b48 
    DirBase: 0a640dc0 ObjectTable: e1c361d0 HandleCount: 83. 
    Image: ConsoleApplication1.exe 

Handle table at e11f6000 with 83 entries in use 

000c: Object: 86a74868 GrantedAccess: 00100020 (Inherit) Entry: e11f6018 
Object: 86a74868 Type: (89e2a730) File 
    ObjectHeader: 86a74850 (old version) 
     HandleCount: 1 PointerCount: 1 
     Directory Object: 00000000 Name: \Foo\Bar {HarddiskVolume2} 

06d0: Object: 8669c4b8 GrantedAccess: 00100083 Entry: e11f6da0 
Object: 8669c4b8 Type: (89e2a730) File 
    ObjectHeader: 8669c4a0 (old version) 
     HandleCount: 1 PointerCount: 1 
     Directory Object: 00000000 Name: \wubildr {HarddiskVolume1} 

06d4: Object: 86bf1f58 GrantedAccess: 00120089 Entry: e11f6da8 
Object: 86bf1f58 Type: (89e2a730) File 
    ObjectHeader: 86bf1f40 (old version) 
     HandleCount: 1 PointerCount: 1 
     Directory Object: 00000000 Name: \WINDOWS\assembly\pubpol6.dat {HarddiskVolume1} 

06dc: Object: 892c43e0 GrantedAccess: 00120089 Entry: e11f6db8 
Object: 892c43e0 Type: (89e2a730) File 
    ObjectHeader: 892c43c8 (old version) 
     HandleCount: 1 PointerCount: 1 
     Directory Object: 00000000 Name: \WINDOWS\assembly\NativeImages_v4.0.30319_32\index1fe.dat {HarddiskVolume1} 

06ec: Object: 892cf1f8 GrantedAccess: 00100001 Entry: e11f6dd8 
Object: 892cf1f8 Type: (89e2a730) File 
    ObjectHeader: 892cf1e0 (old version) 
     HandleCount: 1 PointerCount: 1 
+0

您可以在沒有處理打開的部分的情況下映射部分。 – wj32 2010-11-20 08:26:31

3

解決-f:FileMap

你可以看到地址文檔來了解您可以用於優化輸出其它標誌的詳細信息!

-scott

+0

我認爲正確的標誌是-f:FileMap,否則+1 – 2012-07-26 08:03:37