Re: 请教关于《软件调试》中从虚拟地址解析物理地址的问题。谢谢。
Windows内核调试
请教关于《软件调试》中从虚拟地址解析物理地址的问题。谢谢。
阿木
2010-08-03, 23:00 下午
按照书上的步骤,通过虚拟地址查看内容,正常,dbg输出如下:
0:002> x calc!g*
01014f08 calc!ghwndTimeOutDlg = <no type information>
01014d9c calc!g_fHighContrast = <no type information>
0100514d calc!GetKeyColor = <no type information>
01014ef8 calc!gfExiting = <no type information>
0100518d calc!GetHelpID = <no type information>
01014c70 calc!ghnoPrecNum = <no type information>
01014c08 calc!ghnoParNum = <no type information>
01014038 calc!gszSep = <no type information>
01014eec calc!ghcurOld = <no type information>
01014d38 calc!g_ahnoChopNumbers = <no type information>
01014f00 calc!ghCalcDone = <no type information>
01014db0 calc!gpszNum = <no type information>
01014f0c calc!gnPendingError = <no type information>
01014000 calc!gnDecGrouping = <no type information>
01014dc0 calc!gcio = <no type information>
01014d98 calc!ghnoLastNum = <no type information>
01014f04 calc!ghDogThread = <no type information>
01014d80 calc!g_hDecMenu = <no type information>
01014f48 calc!gbinexact = <no type information>
01014d7c calc!g_hHexMenu = <no type information>
01014efc calc!ghCalcStart = <no type information>
01014da0 calc!g_fLayoutRTL = <no type information>
01014db8 calc!gbRecord = <no type information>
010149d8 calc!gcIntDigits = <no type information>
01014d6c calc!g_hwndDlg = <no type information>
01014d4c calc!gbUseSep = <no type information>
01014d94 calc!ghnoMem = <no type information>
010044b4 calc!GroupDigits = <no type information>
01014f4c calc!gllfact = <no type information>
01014d90 calc!ghnoNum = <no type information>
01014064 calc!gldPrevious = <no type information>
0:002> dd 01014db0
01014db0 000bf898 00000000 00000001 00000000
01014dc0 00000000 ffffffff 00000000 00000000
01014dd0 00000009 00320031 00340033 00360035
01014de0 00380037 00000039 00000000 00000000
01014df0 00000000 00000000 00000000 00000000
01014e00 00000000 00000000 00000000 00000000
01014e10 00000000 00000000 00000000 00000000
01014e20 00000000 00000000 00000000 00000000
0:002> dd 000bf898
000bf898 00320031 00340033 00360035 00380037
000bf8a8 002e0039 00000000 00000000 00000000
000bf8b8 00050002 00080174 000bf8d0 000bf8f0
000bf8c8 00020004 000c017a ffffffff 00000001
000bf8d8 00000000 00000001 00000000 00000000
000bf8e8 00040005 0008017e 00000001 00000004
000bf8f8 00000000 00000000 0b59df02 35b5056e
000bf908 00002771 00000000 00050002 00080141
0:002> du 000bf898
000bf898 "123456789."
0:002> .formats 000bf898
Evaluate expression:
Hex: 000bf898
Decimal: 784536
Octal: 00002774230
Binary: 00000000 00001011 11111000 10011000
Chars: ....
Time: Sat Jan 10 09:55:36 1970
Float: low 1.09937e-039 high 0
Double: 3.87612e-318
然后另起dbg进行本地内核调试,却是无法查看页目录表项,这是为什么?dbg输出如下:
******************************************************************************************
PROCESS 886d7da0 SessionId: 0 Cid: 0c78 Peb: 7ffda000 ParentCid: 0278
DirBase: 0a580460 ObjectTable: e3f1c458 HandleCount: 51.
Image: calc.exe
******************************************************************************************
lkd> !dd 0a580460
# a580460 330a3801 00000000 45d64801 00000000
# a580470 2d065801 00000000 27922801 00000000
# a580480 76181801 00000000 65f42801 00000000
# a580490 724c3801 00000000 79d40801 00000000
# a5804a0 7b8a6801 00000000 7af27801 00000000
# a5804b0 7a828801 00000000 7bc65801 00000000
# a5804c0 63ad8801 00000000 41659801 00000000
# a5804d0 49d9a801 00000000 71397801 00000000
!dd出来的内容,为什么中间会有00000000的呢?而不像书上演示的,从330a3801解析不出物理地址。
请大家指教。谢谢。
Re: 请教关于《软件调试》中从虚拟地址解析物理地址的问题。谢谢。
格蠹老雷
2010-08-04, 09:24 上午
应该是因为你的系统启用了PAE,请参考下面的文章:
http://advdbg.org/blogs/advdbg_system/articles/627.aspx
Re: 请教关于《软件调试》中从虚拟地址解析物理地址的问题。谢谢。
阿木
2010-08-05, 23:18 下午
查看到了,谢谢。