Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

《软件调试》答疑

帖子发起人: 小菜一号   发起时间: 2011-05-11 19:17 下午   回复: 3

Print Search
帖子排序:    
   2011-05-11, 19:17 下午
whxright 离线,最后访问时间: 2012/6/27 9:58:21 小菜一号

发帖数前500位
注册: 2011-05-11
发 贴: 2
Smile [:)] 请教关于R3与R0地址转换问题
Reply Quote
论坛的各位大大好,张老师好
在学习软件调试的过程中遇到了些问题,期待各位大大的解答
环境:
干净的 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的地址
或者这种方式不可行?

IP 地址: 已记录   报告
   2011-05-12, 07:31 上午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 请教关于R3与R0地址转换问题
Reply Quote
简单回答,LKD不可行。对于LKD,系统仍在正常运行,用户空间随时都可能切换,CR3会指向不同进程的页表...
可以考虑LiveKD,或者使用虚拟机做双机内核调试
IP 地址: 已记录   报告
   2011-05-12, 13:26 下午
whxright 离线,最后访问时间: 2012/6/27 9:58:21 小菜一号

发帖数前500位
注册: 2011-05-11
发 贴: 2
Re: 请教关于R3与R0地址转换问题
Reply Quote
张老师您好谢谢您的解答

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 也可能会切换么?

IP 地址: 已记录   报告
   2011-05-13, 06:21 上午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 请教关于R3与R0地址转换问题
Reply Quote
不会,何出此问?上面摘录的是两个不同进程的信息...
IP 地址: 已记录   报告
高端调试 » 图书 » 《软件调试》答疑 » Re: 请教关于R3与R0地址转换问题

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.