!peb和PEB結構

本文轉自:http://blog.csdn.net/hgy413/article/details/8490918

 

調試器用戶經常會需要查看在啓動調試目標時使用了哪些命令行參數,這個信息是保存在PEB中的,可以通過!peb來獲取,這個命令將解析PEB並給出完整的命令行,所有已加載DLL的位置,以及環境變量等.

 

0:000> !peb
PEB at 7ffdf000
    InheritedAddressSpace:    No
    ReadImageFileExecOptions: No
    BeingDebugged:            Yes
    ImageBaseAddress:         008f0000
    Ldr                       77847880
    Ldr.Initialized:          Yes
    Ldr.InInitializationOrderModuleList: 00312798 . 0036bd70
    Ldr.InLoadOrderModuleList:           003126f8 . 0036bd60
    Ldr.InMemoryOrderModuleList:         00312700 . 0036bd68
            Base TimeStamp                     Module
          8f0000 4ce7979d Nov 20 17:40:45 2010 C:\Windows\System32\calc.exe
        77770000 4ec49b60 Nov 17 13:28:00 2011 C:\windows\SYSTEM32\ntdll.dll
        77490000 506dbd3e Oct 05 00:45:50 2012 C:\windows\system32\kernel32.dll
        75a30000 506dbd3f Oct 05 00:45:51 2012 C:\windows\system32\KERNELBASE.dll
        76240000 4fd2d1d9 Jun 09 12:32:25 2012 C:\windows\system32\SHELL32.dll
        75c30000 4eeaf722 Dec 16 15:45:38 2011 C:\windows\system32\msvcrt.dll
        76e90000 4ce7b9e2 Nov 20 20:06:58 2010 C:\windows\system32\SHLWAPI.dll
        75be0000 4ce7b80a Nov 20 19:59:06 2010 C:\windows\system32\GDI32.dll
        76020000 4ce7ba26 Nov 20 20:08:06 2010 C:\windows\system32\USER32.dll
        758e0000 4a5bda19 Jul 14 09:06:33 2009 C:\Windows\System32\LPK.dll
        75f60000 4ce7ba29 Nov 20 20:08:09 2010 C:\windows\system32\USP10.dll
        74090000 4f9235ab Apr 21 12:20:59 2012 C:\windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17825_none_72d273598668a06b\gdiplus.dll
        77200000 4ce7b96f Nov 20 20:05:03 2010 C:\windows\system32\ole32.dll
        773e0000 4ce7b9a2 Nov 20 20:05:54 2010 C:\windows\system32\RPCRT4.dll
        75df0000 4ce7b706 Nov 20 19:54:46 2010 C:\windows\system32\ADVAPI32.dll
        76000000 4a5bdb04 Jul 14 09:10:28 2009 C:\windows\SYSTEM32\sechost.dll
        770f0000 4e58702a Aug 27 12:18:50 2011 C:\windows\system32\OLEAUT32.dll
        745c0000 4a5bdb38 Jul 14 09:11:20 2009 C:\Windows\System32\UxTheme.dll
        74220000 4ce7b71c Nov 20 19:55:08 2010 C:\windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\COMCTL32.dll
        73710000 4ce7ba42 Nov 20 20:08:34 2010 C:\Windows\System32\WINMM.dll
        74ea0000 4a5bdb2b Jul 14 09:11:07 2009 C:\Windows\System32\VERSION.dll
        778b0000 4ce7b845 Nov 20 20:00:05 2010 C:\windows\system32\IMM32.DLL
        75e90000 4a5bda69 Jul 14 09:07:53 2009 C:\windows\system32\MSCTF.dll
        73d30000 4ce7ba3a Nov 20 20:08:26 2010 C:\Windows\System32\WindowsCodecs.dll
        651e0000 50910787 Oct 31 19:12:07 2012 C:\ProgramData\Tencent\TSVulFw\TSVulFW.DAT
        75de0000 4a5bdace Jul 14 09:09:34 2009 C:\windows\system32\PSAPI.DLL
        75ce0000 508b7cf0 Oct 27 14:19:28 2012 C:\windows\system32\WININET.dll
        76100000 508b7cdb Oct 27 14:19:07 2012 C:\windows\system32\urlmon.dll
        75a80000 4fc99664 Jun 02 12:28:20 2012 C:\windows\system32\CRYPT32.dll
        75940000 4ce7b8c9 Nov 20 20:02:17 2010 C:\windows\system32\MSASN1.dll
        77570000 508b7ba3 Oct 27 14:13:55 2012 C:\windows\system32\iertutil.dll
        757f0000 4ce7b73e Nov 20 19:55:42 2010 C:\Windows\System32\apphelp.dll
        73900000 3b7d84df Aug 18 04:55:59 2001 C:\windows\system32\JPWB.IME
        77180000 4ce7b82d Nov 20 19:59:41 2010 C:\windows\system32\comdlg32.dll
        73e60000 4a5bda07 Jul 14 09:06:15 2009 C:\Windows\System32\dwmapi.dll
        75840000 4a5bbf41 Jul 14 07:12:01 2009 C:\Windows\System32\CRYPTBASE.dll
        778d0000 4a5bd9b1 Jul 14 09:04:49 2009 C:\windows\system32\CLBCatQ.DLL
        10000000 4ffa45cd Jul 09 10:45:33 2012 C:\Users\guoyouhuang\AppData\Local\Youdao\Dict\Application\5.1.36.3166\WordStrokeHelper32.dll
        73610000 4e587028 Aug 27 12:18:48 2011 C:\Windows\system32\oleacc.dll
    SubSystemData:     00000000
    ProcessHeap:       00310000
    ProcessParameters: 00311b48
    WindowTitle:  'C:\Windows\System32\calc.exe'
    ImageFile:    'C:\Windows\System32\calc.exe'
    CommandLine:  'C:\Windows\System32\calc.exe'
    DllPath:      'C:\Windows\System32;;C:\windows\system32;C:\windows\system;C:\windows;.;C:\Program Files\Debugging Tools for Windows (x86)\winext\arcade;C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\TortoiseSVN\bin;D:\Program Files\Microsoft SDK\Bin\.;D:\Program Files\Microsoft SDK\Bin\WinNT\.;D:\Program Files\Vc6\Tools\WinNT;D:\Program Files\Vc6\MSDev98\Bin;D:\Program Files\Vc6\Tools;D:\Program Files\VC98\bin;D:\Program Files\Microsoft SDK\Bin\.;D:\Program Files\Microsoft SDK\Bin\WinNT\.;C:\Program Files\IDM Computer Solutions\UltraCompare\'
    Environment:  00310810
        =::=::\
        ALLUSERSPROFILE=C:\ProgramData
        APPDATA=C:\Users\guoyouhuang\AppData\Roaming
        Basemake=D:\Program Files\Microsoft SDK\Include\BKOffice.Mak
        Bkoffice=D:\Program Files\Microsoft SDK\.
        CommonProgramFiles=C:\Program Files\Common Files
        COMPUTERNAME=GUOYOUHUANG-PC0
        ComSpec=C:\windows\system32\cmd.exe
        configsetroot=C:\windows\ConfigSetRoot
        DXSDK_DIR=C:\Program Files\Microsoft DirectX SDK (June 2010)\
        FP_NO_HOST_CHECK=NO
        HOMEDRIVE=C:
        HOMEPATH=\Users\guoyouhuang
        INCLUDE=D:\Program Files\Microsoft SDK\Include\.;D:\Program Files\VC98\atl\include;D:\Program Files\VC98\mfc\include;D:\Program Files\VC98\include
        INETSDK=D:\Program Files\Microsoft SDK\.
        LIB=D:\Program Files\Microsoft SDK\Lib\.;D:\Program Files\VC98\mfc\lib;D:\Program Files\VC98\lib
        LOCALAPPDATA=C:\Users\guoyouhuang\AppData\Local
        LOGONSERVER=\\GM-CADILLAC
        MSDevDir=D:\Program Files\Vc6\MSDev98
        MSSdk=D:\Program Files\Microsoft SDK\.
        Mstools=D:\Program Files\Microsoft SDK\.
        NUMBER_OF_PROCESSORS=4
        OS=Windows_NT
        Path=C:\Program Files\Debugging Tools for Windows (x86)\winext\arcade;C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\TortoiseSVN\bin;D:\Program Files\Microsoft SDK\Bin\.;D:\Program Files\Microsoft SDK\Bin\WinNT\.;D:\Program Files\Vc6\Tools\WinNT;D:\Program Files\Vc6\MSDev98\Bin;D:\Program Files\Vc6\Tools;D:\Program Files\VC98\bin;D:\Program Files\Microsoft SDK\Bin\.;D:\Program Files\Microsoft SDK\Bin\WinNT\.;C:\Program Files\IDM Computer Solutions\UltraCompare\
        PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
        PROCESSOR_ARCHITECTURE=x86
        PROCESSOR_IDENTIFIER=x86 Family 6 Model 42 Stepping 7, GenuineIntel
        PROCESSOR_LEVEL=6
        PROCESSOR_REVISION=2a07
        ProgramData=C:\ProgramData
        ProgramFiles=C:\Program Files
        PSModulePath=C:\windows\system32\WindowsPowerShell\v1.0\Modules\
        PUBLIC=C:\Users\Public
        SESSIONNAME=Console
        SystemDrive=C:
        SystemRoot=C:\windows
        TEMP=C:\Users\GUOYOU~1\AppData\Local\Temp
        TMP=C:\Users\GUOYOU~1\AppData\Local\Temp
        USERDNSDOMAIN=TENCENT.COM
        USERDOMAIN=TENCENT
        USERNAME=guoyouhuang
        USERPROFILE=C:\Users\guoyouhuang
        VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\
        WINDBG_DIR=C:\Program Files\Debugging Tools for Windows (x86)
        windir=C:\windows
        windows_tracing_flags=3
        windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log


手工自己分析下:


 

直接分析ldr:

 

 +0x00c Ldr              : 0x77847880 _PEB_LDR_DATA

 

0:000> dt 0x77847880 _PEB_LDR_DATA
ntdll!_PEB_LDR_DATA
   +0x000 Length           : 0x30
   +0x004 Initialized      : 0x1 ''
   +0x008 SsHandle         : (null) 
   +0x00c InLoadOrderModuleList : _LIST_ENTRY [ 0x3126f8 - 0x36bd60 ]
   +0x014 InMemoryOrderModuleList : _LIST_ENTRY [ 0x312700 - 0x36bd68 ]
   +0x01c InInitializationOrderModuleList : _LIST_ENTRY [ 0x312798 - 0x36bd70 ]
   +0x024 EntryInProgress  : (null) 
   +0x028 ShutdownInProgress : 0 ''
   +0x02c ShutdownThreadId : (null) 


對比!peb的內容:

 

    Ldr                       77847880
    Ldr.Initialized:          Yes
    Ldr.InInitializationOrderModuleList: 00312798 . 0036bd70
    Ldr.InLoadOrderModuleList:           003126f8 . 0036bd60
    Ldr.InMemoryOrderModuleList:         00312700 . 0036bd68

一樣的~~~~,不一樣就不正常了!

爲什麼有三個list:其實三個都一樣,順序不同而已.

 

_LIST_ENTRY的結構如下:

 
0:000> dt _LIST_ENTRY
ntdll!_LIST_ENTRY
   +0x000 Flink            : Ptr32 _LIST_ENTRY
   +0x004 Blink            : Ptr32 _LIST_ENTRY


按MSDN解釋是:

Each item in the list is a pointer to an LDR_DATA_TABLE_ENTRY structure,雙向循環鏈表吧,從一個方向開始,不停的循環,就回到初始位了,就相當於遍歷了一次

 

0:000> dt _LDR_DATA_TABLE_ENTRY 
ole32!_LDR_DATA_TABLE_ENTRY
   +0x000 InLoadOrderLinks : _LIST_ENTRY
   +0x008 InMemoryOrderLinks : _LIST_ENTRY
   +0x010 InInitializationOrderLinks : _LIST_ENTRY
   +0x018 DllBase          : Ptr32 Void
   +0x01c EntryPoint       : Ptr32 Void
   +0x020 SizeOfImage      : Uint4B
   +0x024 FullDllName      : _UNICODE_STRING
   +0x02c BaseDllName      : _UNICODE_STRING
   +0x034 Flags            : Uint4B
   +0x038 LoadCount        : Uint2B
   +0x03a TlsIndex         : Uint2B
   +0x03c HashLinks        : _LIST_ENTRY
   +0x03c SectionPointer   : Ptr32 Void
   +0x040 CheckSum         : Uint4B
   +0x044 TimeDateStamp    : Uint4B
   +0x044 LoadedImports    : Ptr32 Void
   +0x048 EntryPointActivationContext : Ptr32 _ACTIVATION_CONTEXT
   +0x04c PatchInformation : Ptr32 Void
   +0x050 ForwarderLinks   : _LIST_ENTRY
   +0x058 ServiceTagLinks  : _LIST_ENTRY
   +0x060 StaticLinks      : _LIST_ENTRY
   +0x068 ContextInformation : Ptr32 Void
   +0x06c OriginalBase     : Uint4B
   +0x070 LoadTime         : _LARGE_INTEGER

可以看到頭部開始就是個_LIST_ENTRY

我們來做次循環查詢吧:

 

0:000> dt 0x77847880+0x00c _LIST_ENTRY
ole32!_LIST_ENTRY
 [ 0x3126f8 - 0x36bd60 ]
   +0x000 Flink            : 0x003126f8 _LIST_ENTRY [ 0x312788 - 0x7784788c ]
   +0x004 Blink            : 0x0036bd60 _LIST_ENTRY [ 0x7784788c - 0x354a80 ]

對比上面的顯示:

 

   +0x00c InLoadOrderModuleList : _LIST_ENTRY [ 0x3126f8 - 0x36bd60 ]

可以看出,windbg這裏是在後面括號裏顯示Flink和Blink,那麼我們向着Flink循環吧:

 

0:000> dt _LDR_DATA_TABLE_ENTRY 0x003126f8 
ole32!_LDR_DATA_TABLE_ENTRY
   +0x000 InLoadOrderLinks : _LIST_ENTRY [ 0x312788 - 0x7784788c ]
   +0x008 InMemoryOrderLinks : _LIST_ENTRY [ 0x312790 - 0x77847894 ]
   +0x010 InInitializationOrderLinks : _LIST_ENTRY [ 0x0 - 0x0 ]
   +0x018 DllBase          : 0x008f0000 
   +0x01c EntryPoint       : 0x00902d6c 
   +0x020 SizeOfImage      : 0xc0000
   +0x024 FullDllName      : _UNICODE_STRING "C:\Windows\System32\calc.exe"
   +0x02c BaseDllName      : _UNICODE_STRING "calc.exe"
   +0x034 Flags            : 0x4000
   +0x038 LoadCount        : 0xffff
   +0x03a TlsIndex         : 0
   +0x03c HashLinks        : _LIST_ENTRY [ 0x31382c - 0x7784a6a8 ]
   +0x03c SectionPointer   : 0x0031382c 
   +0x040 CheckSum         : 0x7784a6a8
   +0x044 TimeDateStamp    : 0x4ce7979d
   +0x044 LoadedImports    : 0x4ce7979d 
   +0x048 EntryPointActivationContext : (null) 
   +0x04c PatchInformation : (null) 
   +0x050 ForwarderLinks   : _LIST_ENTRY [ 0x312748 - 0x312748 ]
   +0x058 ServiceTagLinks  : _LIST_ENTRY [ 0x312750 - 0x312750 ]
   +0x060 StaticLinks      : _LIST_ENTRY [ 0x315768 - 0x313cf0 ]
   +0x068 ContextInformation : 0x777e0534 
   +0x06c OriginalBase     : 0
   +0x070 LoadTime         : _LARGE_INTEGER 0x0
0:000> dt _LDR_DATA_TABLE_ENTRY 0x312788
ole32!_LDR_DATA_TABLE_ENTRY
   +0x000 InLoadOrderLinks : _LIST_ENTRY [ 0x312ab0 - 0x3126f8 ]
   +0x008 InMemoryOrderLinks : _LIST_ENTRY [ 0x312ab8 - 0x312700 ]
   +0x010 InInitializationOrderLinks : _LIST_ENTRY [ 0x312bd8 - 0x7784789c ]
   +0x018 DllBase          : 0x77770000 
   +0x01c EntryPoint       : (null) 
   +0x020 SizeOfImage      : 0x13c000
   +0x024 FullDllName      : _UNICODE_STRING "C:\windows\SYSTEM32\ntdll.dll"
   +0x02c BaseDllName      : _UNICODE_STRING "ntdll.dll"
   +0x034 Flags            : 0x4004
   +0x038 LoadCount        : 0xffff
   +0x03a TlsIndex         : 0
   +0x03c HashLinks        : _LIST_ENTRY [ 0x32384c - 0x7784a680 ]
   +0x03c SectionPointer   : 0x0032384c 
   +0x040 CheckSum         : 0x7784a680
   +0x044 TimeDateStamp    : 0x4ec49b60
   +0x044 LoadedImports    : 0x4ec49b60 
   +0x048 EntryPointActivationContext : (null) 
   +0x04c PatchInformation : (null) 
   +0x050 ForwarderLinks   : _LIST_ENTRY [ 0x3127d8 - 0x3127d8 ]
   +0x058 ServiceTagLinks  : _LIST_ENTRY [ 0x3127e0 - 0x3127e0 ]
   +0x060 StaticLinks      : _LIST_ENTRY [ 0x3127e8 - 0x3127e8 ]
   +0x068 ContextInformation : (null) 
   +0x06c OriginalBase     : 0x77ec0000
   +0x070 LoadTime         : _LARGE_INTEGER 0x0
0:000> dt _LDR_DATA_TABLE_ENTRY 0x312ab0 
ole32!_LDR_DATA_TABLE_ENTRY
   +0x000 InLoadOrderLinks : _LIST_ENTRY [ 0x312bc8 - 0x312788 ]
   +0x008 InMemoryOrderLinks : _LIST_ENTRY [ 0x312bd0 - 0x312790 ]
   +0x010 InInitializationOrderLinks : _LIST_ENTRY [ 0x3134e0 - 0x312bd8 ]
   +0x018 DllBase          : 0x77490000 
   +0x01c EntryPoint       : 0x774dcd6f 
   +0x020 SizeOfImage      : 0xd4000
   +0x024 FullDllName      : _UNICODE_STRING "C:\windows\system32\kernel32.dll"
   +0x02c BaseDllName      : _UNICODE_STRING "kernel32.dll"
   +0x034 Flags            : 0x84004
   +0x038 LoadCount        : 0xffff
   +0x03a TlsIndex         : 0
   +0x03c HashLinks        : _LIST_ENTRY [ 0x31558c - 0x7784a640 ]
   +0x03c SectionPointer   : 0x0031558c 
   +0x040 CheckSum         : 0x7784a640
   +0x044 TimeDateStamp    : 0x506dbd3e
   +0x044 LoadedImports    : 0x506dbd3e 
   +0x048 EntryPointActivationContext : (null) 
   +0x04c PatchInformation : (null) 
   +0x050 ForwarderLinks   : _LIST_ENTRY [ 0x3136b8 - 0x3136b8 ]
   +0x058 ServiceTagLinks  : _LIST_ENTRY [ 0x312b08 - 0x312b08 ]
   +0x060 StaticLinks      : _LIST_ENTRY [ 0x312c80 - 0x312b40 ]
   +0x068 ContextInformation : 0x777e0534 
   +0x06c OriginalBase     : 0x77de0000
   +0x070 LoadTime         : _LARGE_INTEGER 0x1cdef13`ea902171
0:000> dt _LDR_DATA_TABLE_ENTRY 0x312bc8 
ole32!_LDR_DATA_TABLE_ENTRY
   +0x000 InLoadOrderLinks : _LIST_ENTRY [ 0x3133e8 - 0x312ab0 ]
   +0x008 InMemoryOrderLinks : _LIST_ENTRY [ 0x3133f0 - 0x312ab8 ]
   +0x010 InInitializationOrderLinks : _LIST_ENTRY [ 0x312ac0 - 0x312798 ]
   +0x018 DllBase          : 0x75a30000 
   +0x01c EntryPoint       : 0x75a37e90 
   +0x020 SizeOfImage      : 0x4b000
   +0x024 FullDllName      : _UNICODE_STRING "C:\windows\system32\KERNELBASE.dll"
   +0x02c BaseDllName      : _UNICODE_STRING "KERNELBASE.dll"
   +0x034 Flags            : 0x84004
   +0x038 LoadCount        : 0xffff
   +0x03a TlsIndex         : 0
   +0x03c HashLinks        : _LIST_ENTRY [ 0x31ba9c - 0x7784a690 ]
   +0x03c SectionPointer   : 0x0031ba9c 
   +0x040 CheckSum         : 0x7784a690
   +0x044 TimeDateStamp    : 0x506dbd3f
   +0x044 LoadedImports    : 0x506dbd3f 
   +0x048 EntryPointActivationContext : (null) 
   +0x04c PatchInformation : (null) 
   +0x050 ForwarderLinks   : _LIST_ENTRY [ 0x312c18 - 0x312c18 ]
   +0x058 ServiceTagLinks  : _LIST_ENTRY [ 0x312c20 - 0x312c20 ]
   +0x060 StaticLinks      : _LIST_ENTRY [ 0x312c58 - 0x312c58 ]
   +0x068 ContextInformation : 0x777e0534 
   +0x06c OriginalBase     : 0xdce0000
   +0x070 LoadTime         : _LARGE_INTEGER 0x1cdef13`ea902171
0:000> dt _LDR_DATA_TABLE_ENTRY 0x3133e8 
ole32!_LDR_DATA_TABLE_ENTRY
   +0x000 InLoadOrderLinks : _LIST_ENTRY [ 0x3134d0 - 0x312bc8 ]
   +0x008 InMemoryOrderLinks : _LIST_ENTRY [ 0x3134d8 - 0x312bd0 ]
   +0x010 InInitializationOrderLinks : _LIST_ENTRY [ 0x314578 - 0x3136f0 ]
   +0x018 DllBase          : 0x76240000 
   +0x01c EntryPoint       : 0x762c1621 
   +0x020 SizeOfImage      : 0xc4a000
   +0x024 FullDllName      : _UNICODE_STRING "C:\windows\system32\SHELL32.dll"
   +0x02c BaseDllName      : _UNICODE_STRING "SHELL32.dll"
   +0x034 Flags            : 0xc4004
   +0x038 LoadCount        : 0xffff
   +0x03a TlsIndex         : 0
   +0x03c HashLinks        : _LIST_ENTRY [ 0x316554 - 0x7784a688 ]
   +0x03c SectionPointer   : 0x00316554 
   +0x040 CheckSum         : 0x7784a688
   +0x044 TimeDateStamp    : 0x4fd2d1d9
   +0x044 LoadedImports    : 0x4fd2d1d9 
   +0x048 EntryPointActivationContext : (null) 
   +0x04c PatchInformation : (null) 
   +0x050 ForwarderLinks   : _LIST_ENTRY [ 0x313438 - 0x313438 ]
   +0x058 ServiceTagLinks  : _LIST_ENTRY [ 0x313440 - 0x313440 ]
   +0x060 StaticLinks      : _LIST_ENTRY [ 0x313cc8 - 0x3135d8 ]
   +0x068 ContextInformation : 0x777e0534 
   +0x06c OriginalBase     : 0x73800000
   +0x070 LoadTime         : _LARGE_INTEGER 0x1cdef13`ea9282d2


對比!peb的輸出:

 

    8f0000 4ce7979d Nov 20 17:40:45 2010 C:\Windows\System32\calc.exe
        77770000 4ec49b60 Nov 17 13:28:00 2011 C:\windows\SYSTEM32\ntdll.dll
        77490000 506dbd3e Oct 05 00:45:50 2012 C:\windows\system32\kernel32.dll
        75a30000 506dbd3f Oct 05 00:45:51 2012 C:\windows\system32\KERNELBASE.dll
        76240000 4fd2d1d9 Jun 09 12:32:25 2012 C:\windows\system32\SHELL32.dll

當然是一樣的~~~

下一步是怎麼直接得到進程的cmdline:我們注意到PEB0x10處的偏移

 

+0x010 ProcessParameters : 0x00311b48 _RTL_USER_PROCESS_PARAMETERS

dt一下試試:

 

0:000> dt 0x00311b48 _RTL_USER_PROCESS_PARAMETERS
ole32!_RTL_USER_PROCESS_PARAMETERS
   +0x000 MaximumLength    : 0xaf2
   +0x004 Length           : 0xaf2
   +0x008 Flags            : 0x2001
   +0x00c DebugFlags       : 0
   +0x010 ConsoleHandle    : (null) 
   +0x014 ConsoleFlags     : 0
   +0x018 StandardInput    : (null) 
   +0x01c StandardOutput   : (null) 
   +0x020 StandardError    : (null) 
   +0x024 CurrentDirectory : _CURDIR
   +0x030 DllPath          : _UNICODE_STRING "C:\Windows\System32;;C:\windows\system32;C:\windows\system;C:\windows;.;C:\Program Files\Debugging Tools for Windows (x86)\winext\arcade;C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\TortoiseSVN\bin;D:\Program Files\Microsoft SDK\Bin\.;D:\Program Files\Microsoft SDK\Bin\WinNT\.;D:\Program Files\Vc6\Tools\WinNT;D:\Program Files\Vc6\MSDev98\Bin;D:\Program Files\Vc6\Tools;D:\Program Files\VC98\bin;D:\Program Files\Microsoft SDK\Bin\.;D:\Program Files\Microsoft SDK\Bin\WinNT\.;C:\Program Files\IDM Computer Solutions\UltraCompare\"
   +0x038 ImagePathName    : _UNICODE_STRING "C:\Windows\System32\calc.exe"
   +0x040 CommandLine      : _UNICODE_STRING "C:\Windows\System32\calc.exe"
   +0x048 Environment      : 0x00310810 
   +0x04c StartingX        : 0
   +0x050 StartingY        : 0
   +0x054 CountX           : 0
   +0x058 CountY           : 0
   +0x05c CountCharsX      : 0
   +0x060 CountCharsY      : 0
   +0x064 FillAttribute    : 0
   +0x068 WindowFlags      : 0
   +0x06c ShowWindowFlags  : 0
   +0x070 WindowTitle      : _UNICODE_STRING "C:\Windows\System32\calc.exe"
   +0x078 DesktopInfo      : _UNICODE_STRING "Winsta0\Default"
   +0x080 ShellInfo        : _UNICODE_STRING ""
   +0x088 RuntimeData      : _UNICODE_STRING ""
   +0x090 CurrentDirectores : [32] _RTL_DRIVE_LETTER_CURDIR
   +0x290 EnvironmentSize  : 0x131e
   +0x294 EnvironmentVersion : 1


都出來了~~~~~~~~~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章