download
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2021-06-15
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望115点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1690回复:2

tdi filter取process full path , 關於windbg測試windows2003全路徑的問題

楼主#
更多 发布于:2007-11-26 19:41
我將windbg的測試過程貼上來  ,  環境  :  windows 2003 RC2  virtual machine

有幾個問題...

1. windbg.exe 與 conime.exe的PEB位址一樣, 為什麼會一樣?實際上去取全路徑, 只得到windbg.exe的全路徑.

2. 相同的方法去找ctfmon.exe的全路徑卻發生錯誤, 請各位大牛請多指教...(這個對我真的很難理解)

3. 在xp sp2並不會這樣, 請問位移量PEB_EPROCESS_OFFSET在windows2003有可能是一個變數嗎?

4. 有什麼做法可以解決在tdi filter取得全路徑的問題?當然我也考慮用_SE_AUDIT_PROCESS_CREATION_INFO來取得process name, 另外再對照symbolic name的磁碟代號.

請多多指教  謝謝

lkd> !sprocess
        .....
PROCESS 83727d88  SessionId: 0  Cid: 0488    Peb: 7ffdb000  ParentCid: 0168
    DirBase: 17f603e0  ObjectTable: e1247538  HandleCount:  81.
    Image: ctfmon.exe

PROCESS 83729bf0  SessionId: 0  Cid: 05a8    Peb: 7ffd8000  ParentCid: 0168
    DirBase: 17f602a0  ObjectTable: e175e950  HandleCount: 101.
    Image: windbg.exe

PROCESS 8344d2d8  SessionId: 0  Cid: 06d4    Peb: 7ffd3000  ParentCid: 0168
    DirBase: 17f602e0  ObjectTable: e16ed4e8  HandleCount:  52.
    Image: 12001.exe

PROCESS 8330b858  SessionId: 0  Cid: 0388    Peb: 7ffd8000  ParentCid: 06d4
    DirBase: 17f60340  ObjectTable: e144caa0  HandleCount:  48.
    Image: conime.exe

    
lkd> dt ntdll!_EPROCESS 8330b858
   +0x000 Pcb              : _KPROCESS
   +0x078 ProcessLock      : _EX_PUSH_LOCK
   +0x080 CreateTime       : _LARGE_INTEGER 0x1c8301c`7fd65b92
   +0x088 ExitTime         : _LARGE_INTEGER 0x0
   +0x090 RundownProtect   : _EX_RUNDOWN_REF
   +0x094 UniqueProcessId  : 0x00000388
   +0x098 ActiveProcessLinks : _LIST_ENTRY [ 0x808a61c8 - 0x8344d370 ]
   +0x0a0 QuotaUsage       : [3] 0x7f8
   +0x0ac QuotaPeak        : [3] 0x960
   +0x0b8 CommitCharge     : 0xb3
   +0x0bc PeakVirtualSize  : 0x1da1000
   +0x0c0 VirtualSize      : 0x1a6e000
   +0x0c4 SessionProcessLinks : _LIST_ENTRY [ 0xf799b010 - 0x8344d39c ]
   +0x0cc DebugPort        : (null)
   +0x0d0 ExceptionPort    : 0xe133f690
   +0x0d4 ObjectTable      : 0xe144caa0 _HANDLE_TABLE
   +0x0d8 Token            : _EX_FAST_REF
   +0x0dc WorkingSetPage   : 0x7d0a
   +0x0e0 AddressCreationLock : _KGUARDED_MUTEX
   +0x100 HyperSpaceLock   : 0
   +0x104 ForkInProgress   : (null)
   +0x108 HardwareTrigger  : 0
   +0x10c PhysicalVadRoot  : (null)
   +0x110 CloneRoot        : (null)
   +0x114 NumberOfPrivatePages : 0x7a
   +0x118 NumberOfLockedPages : 0
   +0x11c Win32Process     : 0xe16e31c0
   +0x120 Job              : (null)
   +0x124 SectionObject    : 0xe1320250
   +0x128 SectionBaseAddress : 0x01000000
   +0x12c QuotaBlock       : 0x833ff8d0 _EPROCESS_QUOTA_BLOCK
   +0x130 WorkingSetWatch  : (null)
   +0x134 Win32WindowStation : 0x0000004c
   +0x138 InheritedFromUniqueProcessId : 0x000006d4
   +0x13c LdtInformation   : (null)
   +0x140 VadFreeHint      : (null)
   +0x144 VdmObjects       : (null)
   +0x148 DeviceMap        : 0xe16f8fd0
   +0x14c Spare0           : [3] (null)
   +0x158 PageDirectoryPte : _HARDWARE_PTE_X86
   +0x158 Filler           : 0
   +0x160 Session          : 0xf799b000
   +0x164 ImageFileName    : [16]  "conime.exe"
   +0x174 JobLinks         : _LIST_ENTRY [ 0x0 - 0x0 ]
   +0x17c LockedPagesList  : (null)
   +0x180 ThreadListHead   : _LIST_ENTRY [ 0x832ed63c - 0x832ed63c ]
   +0x188 SecurityPort     : (null)
   +0x18c PaeTop           : 0xf7ad2340
   +0x190 ActiveThreads    : 1
   +0x194 GrantedAccess    : 0x1f0fff
   +0x198 DefaultHardErrorProcessing : 1
   +0x19c LastThreadExitStatus : 0
   +0x1a0 Peb              : 0x7ffd8000 _PEB
   +0x1a4 PrefetchTrace    : _EX_FAST_REF
   +0x1a8 ReadOperationCount : _LARGE_INTEGER 0x3
   +0x1b0 WriteOperationCount : _LARGE_INTEGER 0x3
   +0x1b8 OtherOperationCount : _LARGE_INTEGER 0xa6
   +0x1c0 ReadTransferCount : _LARGE_INTEGER 0x114
   +0x1c8 WriteTransferCount : _LARGE_INTEGER 0x15c
   +0x1d0 OtherTransferCount : _LARGE_INTEGER 0x8b0
   +0x1d8 CommitChargeLimit : 0
   +0x1dc CommitChargePeak : 0xb7
   +0x1e0 AweInfo          : (null)
   +0x1e4 SeAuditProcessCreationInfo : _SE_AUDIT_PROCESS_CREATION_INFO
   +0x1e8 Vm               : _MMSUPPORT
   +0x230 MmProcessLinks   : _LIST_ENTRY [ 0x8089ff68 - 0x8344d508 ]
   +0x238 ModifiedPageCount : 0
   +0x23c JobStatus        : 0
   +0x240 Flags            : 0x450801
   +0x240 CreateReported   : 0y1
   +0x240 NoDebugInherit   : 0y0
   +0x240 ProcessExiting   : 0y0
   +0x240 ProcessDelete    : 0y0
   +0x240 Wow64SplitPages  : 0y0
   +0x240 VmDeleted        : 0y0
   +0x240 OutswapEnabled   : 0y0
   +0x240 Outswapped       : 0y0
   +0x240 ForkFailed       : 0y0
   +0x240 Wow64VaSpace4Gb  : 0y0
   +0x240 AddressSpaceInitialized : 0y10
   +0x240 SetTimerResolution : 0y0
   +0x240 BreakOnTermination : 0y0
   +0x240 SessionCreationUnderway : 0y0
   +0x240 WriteWatch       : 0y0
   +0x240 ProcessInSession : 0y1
   +0x240 OverrideAddressSpace : 0y0
   +0x240 HasAddressSpace  : 0y1
   +0x240 LaunchPrefetched : 0y0
   +0x240 InjectInpageErrors : 0y0
   +0x240 VmTopDown        : 0y0
   +0x240 ImageNotifyDone  : 0y1
   +0x240 PdeUpdateNeeded  : 0y0
   +0x240 VdmAllowed       : 0y0
   +0x240 SmapAllowed      : 0y0
   +0x240 CreateFailed     : 0y0
   +0x240 DefaultIoPriority : 0y000
   +0x240 Spare1           : 0y0
   +0x240 Spare2           : 0y0
   +0x244 ExitStatus       : 259
   +0x248 NextPageColor    : 0xb48d
   +0x24a SubSystemMinorVersion : 0 ''
   +0x24b SubSystemMajorVersion : 0x4 ''
   +0x24a SubSystemVersion : 0x400
   +0x24c PriorityClass    : 0x2 ''
   +0x250 VadRoot          : _MM_AVL_TABLE
   +0x270 Cookie           : 0x7e1783b2
    
lkd> dt ntdll!_peb 0x7ffd8000
ntdll!_PEB
   +0x000 InheritedAddressSpace : 0 ''
   +0x001 ReadImageFileExecOptions : 0 ''
   +0x002 BeingDebugged    : 0 ''
   +0x003 BitField         : 0 ''
   +0x003 ImageUsesLargePages : 0y0
   +0x003 SpareBits        : 0y0000000 (0)
   +0x004 Mutant           : 0xffffffff
   +0x008 ImageBaseAddress : 0x01000000
   +0x00c Ldr              : 0x7c9b77e0 _PEB_LDR_DATA
   +0x010 ProcessParameters : 0x00020000 _RTL_USER_PROCESS_PARAMETERS
   +0x014 SubSystemData    : (null)
   +0x018 ProcessHeap      : 0x00090000
   +0x01c FastPebLock      : 0x7c9b7740 _RTL_CRITICAL_SECTION
   +0x020 AtlThunkSListPtr : (null)
   +0x024 SparePtr2        : (null)
   +0x028 EnvironmentUpdateCount : 1
   +0x02c KernelCallbackTable : 0x77e129b0
   +0x030 SystemReserved   : [1] 0
   +0x034 SpareUlong       : 0
   +0x038 FreeList         : (null)
   +0x03c TlsExpansionCounter : 0
   +0x040 TlsBitmap        : 0x7c9b8fd8
   +0x044 TlsBitmapBits    : [2] 0x3fff
   +0x04c ReadOnlySharedMemoryBase : 0x7f6f0000
   +0x050 ReadOnlySharedMemoryHeap : 0x7f6f0000
   +0x054 ReadOnlyStaticServerData : 0x7f6f0688  -> (null)
   +0x058 AnsiCodePageData : 0x7ffa0000
   +0x05c OemCodePageData  : 0x7ffa0000
   +0x060 UnicodeCaseTableData : 0x7ffd1000
   +0x064 NumberOfProcessors : 1
   +0x068 NtGlobalFlag     : 0
   +0x070 CriticalSectionTimeout : _LARGE_INTEGER 0xffffe86d`079b8000
   +0x078 HeapSegmentReserve : 0x100000
   +0x07c HeapSegmentCommit : 0x2000
   +0x080 HeapDeCommitTotalFreeThreshold : 0x10000
   +0x084 HeapDeCommitFreeBlockThreshold : 0x1000
   +0x088 NumberOfHeaps    : 9
   +0x08c MaximumNumberOfHeaps : 0x10
   +0x090 ProcessHeaps     : 0x7c9b8a20  -> 0x00090000
   +0x094 GdiSharedHandleTable : 0x003b0000
   +0x098 ProcessStarterHelper : (null)
   +0x09c GdiDCAttributeList : 0x14
   +0x0a0 LoaderLock       : 0x7c9b77a0 _RTL_CRITICAL_SECTION
   +0x0a4 OSMajorVersion   : 5
   +0x0a8 OSMinorVersion   : 2
   +0x0ac OSBuildNumber    : 0xece
   +0x0ae OSCSDVersion     : 0x200
   +0x0b0 OSPlatformId     : 2
   +0x0b4 ImageSubsystem   : 2
   +0x0b8 ImageSubsystemMajorVersion : 4
   +0x0bc ImageSubsystemMinorVersion : 0
   +0x0c0 ImageProcessAffinityMask : 0
   +0x0c4 GdiHandleBuffer  : [34] 0
   +0x14c PostProcessInitRoutine : (null)
   +0x150 TlsExpansionBitmap : 0x7c9b8fd0
   +0x154 TlsExpansionBitmapBits : [32] 1
   +0x1d4 SessionId        : 0
   +0x1d8 AppCompatFlags   : _ULARGE_INTEGER 0x0
   +0x1e0 AppCompatFlagsUser : _ULARGE_INTEGER 0x0
   +0x1e8 pShimData        : (null)
   +0x1ec AppCompatInfo    : (null)
   +0x1f0 CSDVersion       : _UNICODE_STRING "Service Pack 2"
   +0x1f8 ActivationContextData : 0x00080000 _ACTIVATION_CONTEXT_DATA
   +0x1fc ProcessAssemblyStorageMap : 0x00093978 _ASSEMBLY_STORAGE_MAP
   +0x200 SystemDefaultActivationContextData : 0x00070000 _ACTIVATION_CONTEXT_DATA
   +0x204 SystemAssemblyStorageMap : (null)
   +0x208 MinimumStackCommit : 0
   +0x20c FlsCallback      : 0x00093d28  -> (null)
   +0x210 FlsListHead      : _LIST_ENTRY [ 0x91f60 - 0xad558 ]
   +0x218 FlsBitmap        : 0x7c9b8fc0
   +0x21c FlsBitmapBits    : [4] 0xf
   +0x22c FlsHighIndex     : 3
    
lkd> dt ntdll!_RTL_USER_PROCESS_PARAMETERS 0x00020000
   +0x000 MaximumLength    : 0x1000
   +0x004 Length           : 0x784
   +0x008 Flags            : 0x6001
   +0x00c DebugFlags       : 0
   +0x010 ConsoleHandle    : (null)
   +0x014 ConsoleFlags     : 0
   +0x018 StandardInput    : (null)
   +0x01c StandardOutput   : 0x00010001
   +0x020 StandardError    : (null)
   +0x024 CurrentDirectory : _CURDIR
   +0x030 DllPath          : _UNICODE_STRING "C:\Program Files\Debugging Tools for Windows;C:\WINDOWS\system32;C:\WINDOWS\system;C:\WINDOWS;.;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem"
   +0x038 ImagePathName    : _UNICODE_STRING "C:\Program Files\Debugging Tools for Windows\windbg.exe"
   +0x040 CommandLine      : _UNICODE_STRING ""C:\Program Files\Debugging Tools for Windows\windbg.exe" "
   +0x048 Environment      : 0x00010000
   +0x04c StartingX        : 0
   +0x050 StartingY        : 0
   +0x054 CountX           : 0
   +0x058 CountY           : 0
   +0x05c CountCharsX      : 0
   +0x060 CountCharsY      : 0
   +0x064 FillAttribute    : 0
   +0x068 WindowFlags      : 0xc01
   +0x06c ShowWindowFlags  : 1
   +0x070 WindowTitle      : _UNICODE_STRING "C:\Documents and Settings\All Users\「開始」功能表\程式集\Debugging Tools for Windows\WinDbg.lnk"
   +0x078 DesktopInfo      : _UNICODE_STRING "WinSta0\Default"
   +0x080 ShellInfo        : _UNICODE_STRING ""
   +0x088 RuntimeData      : _UNICODE_STRING ""
   +0x090 CurrentDirectores : [32] _RTL_DRIVE_LETTER_CURDIR    
  
lkd> dt ntdll!_peb 0x7ffdb000
ntdll!_PEB
   +0x000 InheritedAddressSpace : ??
   +0x001 ReadImageFileExecOptions : ??
   +0x002 BeingDebugged    : ??
   +0x003 BitField         : ??
   +0x003 ImageUsesLargePages : ??
   +0x003 SpareBits        : ??
   +0x004 Mutant           : ????
   +0x008 ImageBaseAddress : ????
   +0x00c Ldr              : ????
   +0x010 ProcessParameters : ????
   +0x014 SubSystemData    : ????
   +0x018 ProcessHeap      : ????
   +0x01c FastPebLock      : ????
   +0x020 AtlThunkSListPtr : ????
   +0x024 SparePtr2        : ????
   +0x028 EnvironmentUpdateCount : ??
   +0x02c KernelCallbackTable : ????
   +0x030 SystemReserved   : [1] ??
   +0x034 SpareUlong       : ??
   +0x038 FreeList         : ????
   +0x03c TlsExpansionCounter : ??
   +0x040 TlsBitmap        : ????
   +0x044 TlsBitmapBits    : [2] ??
   +0x04c ReadOnlySharedMemoryBase : ????
   +0x050 ReadOnlySharedMemoryHeap : ????
   +0x054 ReadOnlyStaticServerData : ????
   +0x058 AnsiCodePageData : ????
   +0x05c OemCodePageData  : ????
   +0x060 UnicodeCaseTableData : ????
   +0x064 NumberOfProcessors : ??
   +0x068 NtGlobalFlag     : ??
   +0x070 CriticalSectionTimeout : _LARGE_INTEGER
   +0x078 HeapSegmentReserve : ??
   +0x07c HeapSegmentCommit : ??
   +0x080 HeapDeCommitTotalFreeThreshold : ??
   +0x084 HeapDeCommitFreeBlockThreshold : ??
   +0x088 NumberOfHeaps    : ??
   +0x08c MaximumNumberOfHeaps : ??
   +0x090 ProcessHeaps     : ????
   +0x094 GdiSharedHandleTable : ????
   +0x098 ProcessStarterHelper : ????
   +0x09c GdiDCAttributeList : ??
   +0x0a0 LoaderLock       : ????
   +0x0a4 OSMajorVersion   : ??
   +0x0a8 OSMinorVersion   : ??
   +0x0ac OSBuildNumber    : ??
   +0x0ae OSCSDVersion     : ??
   +0x0b0 OSPlatformId     : ??
   +0x0b4 ImageSubsystem   : ??
   +0x0b8 ImageSubsystemMajorVersion : ??
   +0x0bc ImageSubsystemMinorVersion : ??
   +0x0c0 ImageProcessAffinityMask : ??
   +0x0c4 GdiHandleBuffer  : [34] ??
   +0x14c PostProcessInitRoutine : ????
   +0x150 TlsExpansionBitmap : ????
   +0x154 TlsExpansionBitmapBits : [32] ??
   +0x1d4 SessionId        : ??
   +0x1d8 AppCompatFlags   : _ULARGE_INTEGER
   +0x1e0 AppCompatFlagsUser : _ULARGE_INTEGER
   +0x1e8 pShimData        : ????
   +0x1ec AppCompatInfo    : ????
   +0x1f0 CSDVersion       : _UNICODE_STRING
   +0x1f8 ActivationContextData : ????
   +0x1fc ProcessAssemblyStorageMap : ????
   +0x200 SystemDefaultActivationContextData : ????
   +0x204 SystemAssemblyStorageMap : ????
   +0x208 MinimumStackCommit : ??
   +0x20c FlsCallback      : ????
   +0x210 FlsListHead      : _LIST_ENTRY
   +0x218 FlsBitmap        : ????
   +0x21c FlsBitmapBits    : [4] ??
   +0x22c FlsHighIndex     : ??
Memory read error 7ffdb22c
  
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-11-27 11:38
怎么是繁体字,看着累,你在台湾公司?

>>1. windbg.exe 與 conime.exe的PEB位址一樣, 為什麼會一樣?實際上去取全路徑, 只得到windbg.exe的全路徑.

当然可能一样,不同的进程不同的地址空间,peb地址一样,并不代表指向的是同一块内存。
你取到是当前进程的全路径名。如果要取其他进程,先要切换进程地址空间

>>2. 相同的方法去找ctfmon.exe的全路徑卻發生錯誤, 請各位大牛請多指教...(這個對我真的很難理解)

什么错误?

>>3. 在xp sp2並不會這樣, 請問位移量PEB_EPROCESS_OFFSET在windows2003有可能是一個變數嗎?

不同的os版本,这个值可能不一样


>>4. 有什麼做法可以解決在tdi filter取得全路徑的問題?當然我也考慮用_SE_AUDIT_PROCESS_CREATION_INFO來取得process name, 另外再對照symbolic name的磁碟代號.
以上方法是可行的。
download
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2021-06-15
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望115点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-11-27 13:55
Re:tdi filter取process full path , 關於windbg測試w
>> 怎么是繁体字,看着累,你在台湾公司?

是的....簡繁體  看久也就習慣了^^....就跟英文看久了....不習慣也是要強迫習慣...- -...

>>当然可能一样,不同的进程不同的地址空间,peb地址一样,并不代表指向的是同一块内存。
>>你取到是当前进程的全路径名。如果要取其他进程,先要切换进程地址空间

聽君一席話...勝讀十年書...

此外這個問題我目前是解決了...方法如下

還是先從processid 下手  用PsLookupProcessByProcessId取得EPROCESS address

EPROCESS_PEB_OFFSET 就我的調試結果...xp sp2, w2k sp4 用 0x01B0 就可以了

w2k3 rc2 用0x01A0  (這個跟網路上的0x0190不一樣)

PEB_PROCESS_PARAMETER_OFFSET            0x0010
PROCESS_PARAMETER_FULL_IMAGE_NAME        0x003C

另外用__try {} __except(EXCEPTION_EXECUTE_HANDLER) {} 防止access invalid memory BSOD

這樣基本上我在DbgView是有看到正確的完整路徑名稱
游客

返回顶部