windbg符号链接的问题.还有KeServiceDescriptorTableShadow内存块查找时问号的情况

来源:互联网 发布:java bigdecimal 乘法 编辑:程序博客网 时间:2024/06/04 17:56

最近配置windbg比较郁闷,搞了几天才搞定,自己的经验希望能帮助大家.也方便自己以后查阅

首先介绍几个命令:

lm 列出加载模块信息 如下

0: kd> lm
start    end        module name
80800000 80a28000   nt         (export symbols)       ntkrnlmp.exe


Unloaded modules:
f58aa000 f58d5000   kmixer.sys
f7da6000 f7da7000   drmkaud.sys
f5a6d000 f5a7a000   DMusic.sys
f58d5000 f58f8000   aec.sys 
f5a8d000 f5a9b000   swmidi.sys
f7c15000 f7c17000   splitter.sys
f7853000 f785e000   imapi.sys
f7833000 f783c000   HIDCLASS.SYS
f74ef000 f74f2000   HidUsb.sys
f7ba7000 f7bab000   KbdHid.sys
f79cb000 f79d0000   usbohci.sys
f79c3000 f79c8000   Cdaudio.SYS
f7b9f000 f7ba2000   Sfloppy.SYS


!sym noisy 开启详细调试信息

0: kd> !sym noisy
noisy mode - symbol prompts on


然后配置路径加载驱动符号:

 打开文件->符号文件路径->添加你的文件路径.可以在微软网站下载符号(建议全部下载脱机情况下也能用)http://msdn.microsoft.com/enus/windows/hardware/gg463028

设置好路径加载 输入  .reload  加载符号 

bf800000 bf9c5e80   win32k   T (no symbols)       //- 妈的win32k.sys没有加载

强制运行 .reload /f win32k.sys //- /f选项强制加载也不成


搜了下往上资料设置网络自动下载路径:  

打开文件->符号文件路径->添加你的文件路径用分号和之的路径分隔开SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols 

若发现符号不能自动下载说明你的windbg版本和你现在使用的系统版本不符(http://msdn.microsoft.com/en-US/windows/hardware/hh852360)这个网站下载windbg 注意这里面不只是windbg而已,而且包括源文件和一些相关的工具

比较大。我们重新加载之.  若发现c:\MyLocalSymbols文件下多了很多文件说明下载成功.我们开下加载情况

若发现其中只加载了部分符号 其他显示为deferred  我们可以用  .reload /i

start    end        module name
80800000 80a28000   nt         (pdb symbols)          d:\symbols\exe\ntkrnlmp.pdb
80a28000 80a48d00   hal        (pdb symbols)          d:\symbols\dll\halmacpi.pdb
bf000000 bf011600   dxg        (pdb symbols)          d:\symbols\sys\dxg.pdb
bf012000 bf026b80   vmx_fb   T (no symbols)           
bf800000 bf9c5e80   win32k     (pdb symbols)          c:\mylocalsymbols\win32k.pdb\CC2837A766214B4A86F05D51DC8EC5302\win32k.pdb
f548c000 f54cca80   HTTP       (pdb symbols)          d:\symbols\sys\http.pdb
f55e5000 f563c600   srv        (pdb symbols)          c:\mylocalsymbols\srv.pdb\B71D43221C284A288535837C8BDEA3302\srv.pdb
f56dd000 f5725e80   sogounetopt   (no symbols)           
f58f8000 f590c480   wdmaud     (pdb symbols)          d:\symbols\sys\wdmaud.pdb
f59d5000 f59ec780   hgfs       (no symbols)           
f5a09000 f5a0b500   ProtectorA   (no symbols)           
f5a9d000 f5aabd80   sysaudio   (pdb symbols)          d:\symbols\sys\sysaudio.pdb
f5c81000 f5c84900   ndisuio    (pdb symbols)          d:\symbols\sys\ndisuio.pdb
f5d5d000 f5d74900   dump_atapi   (pdb symbols)          d:\symbols\sys\atapi.pdb
f5d9d000 f5dc3000   BAPIDRV    (no symbols)           
f5dc3000 f5e32c80   mrxsmb     (pdb symbols)          c:\mylocalsymbols\mrxsmb.pdb\8BBCE1B6ABFA41FBA89E2F1C45B4E0A52\mrxsmb.pdb
f5e33000 f5e65b00   qutmdrv    (no symbols)           
f5e8e000 f5eb8e80   rdbss      (pdb symbols)          d:\symbols\sys\rdbss.pdb
f5eb9000 f5edad00   afd        (pdb symbols)          c:\mylocalsymbols\afd.pdb\0975A36674EA47B7A3C42DEC1731798F2\afd.pdb

发现win32k加载成功了 


我们继续找影子表的内容:

0: kd> dd KeServiceDescriptortableShadow
8088b4e0  8080d8a0 00000000 0000011c 8083a0bc
8088b4f0  bf99ce00 00000000 0000029b bf99db10
8088b500  00000000 00000000 00000000 00000000
8088b510  00000000 00000000 00000000 00000000
8088b520  8080d8a0 00000000 0000011c 8083a0bc
8088b530  00000000 00000000 00000000 00000000
8088b540  00000000 00000000 00000000 00000000
8088b550  00000000 00000000 00000000 00000000


bf99ce00 为影子表的地址:

我们继续查看下:

0: kd> dd bf99ce00
bf99ce00  ???????? ???????? ???????? ????????
bf99ce10  ???????? ???????? ???????? ????????
bf99ce20  ???????? ???????? ???????? ????????
bf99ce30  ???????? ???????? ???????? ????????
bf99ce40  ???????? ???????? ???????? ????????
bf99ce50  ???????? ???????? ???????? ????????
bf99ce60  ???????? ???????? ???????? ????????

bf99ce70  ???????? ???????? ???????? ????????


我们在用户态下给他下个断点: bp NtUserPostMessage 

0: kd> bp NtUserPostMessage
WARNING: Software breakpoints on session addresses can cause bugchecks.
Use hardware execution breakpoints (ba e) if possible.

告诉会引起bug 有可能的话让我们用硬件断点。不你妈管了 F5跑起来 ,在虚拟机上开个我的电脑断下来继续查看


1: kd> dd bf99ce00
bf99ce00  bf939134 bf94a6a7 bf86febb bf942269
bf99ce10  bf94bcbe bf9393c8 bf93946d bf831689
bf99ce20  bf94b5e5 bf937533 bf94bbdd bf910121
bf99ce30  bf8ff4d3 bf80992d bf94baaf bf94d2ab
bf99ce40  bf8fddd0 bf876f9c bf94bb8d bf94d3de
bf99ce50  bf81c82c bf8e5895 bf8ac916 bf85a039
bf99ce60  bf91135c bf80e2e8 bf8e553d bf94d0a3
bf99ce70  bf94dfae bf813a94 bf80c889 bf8da236

终于大功告成了!








原创粉丝点击