Re: 请教关于R3与R0地址转换问题
《软件调试》答疑
请教关于R3与R0地址转换问题
小菜一号
2011-05-11, 19:17 下午
论坛的各位大大好,张老师好
在学习软件调试的过程中遇到了些问题,期待各位大大的解答
环境
:
干净的 xp sp3 windbg 本地内核调试中.....
现象
:
lkd>!process 0 0
...省略无关内容若干...
PROCESS 892f1ab0 SessionId: 0 Cid: 0f7c Peb: 7ffdd000 ParentCid: 0638
DirBase: 0acc0620 ObjectTable: e170f938 HandleCount: 52.
Image: NOTEPAD.EXE
...省略无关内容若干...
lkd>.process 892f1ab0
lkd>!peb
peb at 7ffda000
error 1 InitTypeRead( nt!_PEB at 7ffda000)...
lkd> dt nt!_PEB 7ffda000
+0x000 InheritedAddressSpace : ??
+0x001 ReadImageFileExecOptions : ??
+0x002 BeingDebugged : ??
+0x003 SpareBool : ??
+0x004 Mutant : ????
+0x008 ImageBaseAddress : ????
+0x00c Ldr : ????
+0x010 ProcessParameters : ????
+0x014 SubSystemData : ????
+0x018 ProcessHeap : ????
+0x01c FastPebLock : ????
+0x020 FastPebLockRoutine : ????
+0x024 FastPebUnlockRoutine : ????
+0x028 EnvironmentUpdateCount : ??
+0x02c KernelCallbackTable : ????
+0x030 SystemReserved : [1] ??
+0x034 AtlThunkSListPtr32 : ??
+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 : ??
Memory read error 7ffda208
疑问
:
(1).process 命令的作用.
.process 命令切换到应用程序的地址空间,那为什么我依然不能访问输入进程892f1ab0的地址0x7ffda000?
(2)除了通过.process切换地址空间,如何才能在不调试 NOTEPAD.EXE 的情况下查看 它的PEB,
也就是如何才能将一个PE独立地址空间内的地址转换为在lkd>提示符下可以访问的地址
也就是R3的地址如何转换成R0的地址
或者这种方式不可行?
Re: 请教关于R3与R0地址转换问题
格蠹老雷
2011-05-12, 07:31 上午
简单回答,LKD不可行。对于LKD,系统仍在正常运行,用户空间随时都可能切换,CR3会指向不同进程的页表...
可以考虑LiveKD,或者使用虚拟机做双机内核调试
Re: 请教关于R3与R0地址转换问题
小菜一号
2011-05-12, 13:26 下午
张老师您好谢谢您的解答
lkd> !process 0 0
........省略无关数据若干.....
PROCESS 88a47c30 SessionId: 0 Cid: 0f50 Peb: 7ffde000 ParentCid: 067c
DirBase: 0b0003c0 ObjectTable: e380c838 HandleCount: 171.
Image: plugin-container.exe
........省略无关数据若干.....
lkd> .process /r 871b9da0
Implicit process is now 871b9da0
lkd> dt -r nt!_KPROCESS 888c4da0
........省略无关数据若干.....
+0x018
DirectoryTableBase
: [2] 0xb000380
........省略无关数据若干.....
DirectoryTableBase
也可能会切换么?
Re: 请教关于R3与R0地址转换问题
格蠹老雷
2011-05-13, 06:21 上午
不会,何出此问?上面摘录的是两个不同进程的信息...