分享

windbg 命令集 总结

 clover_xian 2012-07-31

windbg 命令集 &总结

看到别人写的这个东西,对我初用Windbg者而言,实在是宝贵啊!

!strct eprocess

dt -v -r ntdll!_peb (windows2003下改为:dt -v -r nt!_peb)

dt _eprocess

dt -v -r _eprocess (加上-v -r显示详细结构)

dt nt!_driver_object

列出可以调试的驱动程序

lm t n   (以前是!drivers)

加入源代码调试

file->source file path

设置符号文件

file->symbol file path

给驱动程序下断点

设置好symbol file path和source file path

然后file->open source file打开调试驱动程序的源代码。

在对应的代码上按f9

下断点后,程序对应的行会变成红色。

 

注意:sys是通过checked environment生成

 

查看DeviceIoControl 的inputbuffer

通过上面的方法在npid=*((DWORD *)InputBuffer)下断点。然后,在windbg的watch上面加入nPid已经InputBuffer。查看到InputBuffer为 0xxxxx,然后在windbg上输入:dc 0xxxxx。就可以查看到InputBuffer对应的值。

 

产生如下错误:

*** Fatal System Error: 0x0000007e
                       (0xC0000005,0xF9FDB318,0xFA06EB88,0xFA06E884)

找到原因:Fatal System Error: 0x0000007e错误对应

Bug Check 0x7E: SYSTEM_THREAD_EXCEPTION_NOT_HANDLED

然后看0xC0000005对应

0xC0000005: STATUS_ACCESS_VIOLATION
A memory access violation occurred.

所以结论是:A memory access violation occurred.

 

!process命令

!process 0 0 查看系统全部进程信息 (在虚拟机器远程调试才行)

!process cid ParentCid        其中cid就是pid的十六进制表示

 

查看特定地址的eprocess结构内容

dt _eprocess 81bef448

 

 

1. 查 询符号
 
kd> x nt!KeServiceDescriptorTable*
8046e100 nt!KeServiceDescriptorTableShadow = <no type information>
8046e0c0 nt!KeServiceDescriptorTable = <no type information>
 
kd> ln 8046e100
(8046e100)   nt!KeServiceDescriptorTableShadow   | (8046e140)   nt!MmSectionExtendResource
Exact matches:
nt!KeServiceDescriptorTableShadow = <no type information>
 
2. 下 载系统文件的符号
 
symchk c:\winnt\system32\ntoskrnl.exe /s srv*c:\symbols*http://msdl.microsoft.com/download/symbols
 
SYMCHK: FAILED files = 0
SYMCHK: PASSED + IGNORED files = 1
 
3. 查 看 event 对象的信 号状态
 
!object \BaseNamedObjects
dt -b nt!_KEVENT xxxxxxxx
 
4. 查 看 LastError
 
!gle
 
5. 指 定进制形式,0x/0n/0t/0y 分 别表示 16/10/8/2 进 制
 
0x12345678+0n10
Evaluate expression: 305419906 = 12345682
 
6. 过 滤命令窗口输出信息
 
.prompt_allow -reg +dis -ea -src -sym
 
7. .formats 命 令
 
以多种格式显示表达式的值
0:000> .formats @eax
Evaluate expression:
Hex:     00181eb4
Decimal: 1580724
Octal:   00006017264
Binary: 00000000 00011000 00011110 10110100
Chars:   ....
Time:    Mon Jan 19 15:05:24 1970
Float:   low 2.21507e-039 high 0
Double: 7.80981e-318
 
8. 异 常处理相关
 
sx, sxd, sxe, sxi, sxn, sxr 几条命令可用来设置异常和事件的处理方式。比如:
0:000> sxe ld
可以在加载 dll 时中断 下来。
 
9. 内 核调试时切换进程
 
lkd> !process 0 0
lkd> .process xxxxxxxx
 
10. 可 在桌面上建立一个 WinDbg.exe 的 快捷方式,然后在该快捷方式的属性力设置如下命令行
 
C:\WinDBG\windbg.exe -c ".prompt_allow +dis -reg -ea -src -sym; .enable_unicode 1; .enable_long_status 1; .logopen /t c:\dbglog\dbglog.txt"
 
11. 本 机内核调试
 
通过File/Kernel Debug… 菜 单可以打开内核调试选择窗口,选择最后一个 Local 选项页,确定后可以以内核方式调试本地机 器。这时所有会挂起系统的命令都用不了了,但可以读写系统内存。另外,有一个方便的用途是用来查看系统结构,比如:dt nt!_EPROCESS

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多