Windbg配置和常用命令(不断更新)
时间:2010-10-05 来源:YangNas
符号路径配置的两种方法:
1. 在Windbg的File -> Symbol File Path... 里输入如下内容
srv*c:\symbols*http://msdl.microsoft.com/download/symbols
然后选中reload复选框,最后点选OK.
2. 或者可以在Windbg运行时以输命令的方式设置符号路径:
.symfix c:\symbols
.reload
以上这两种设置方法是等同的.
常用调试命令:
1. x : 以通配符的方式检查一个模块内的符号地址
例如: x nt!Psp* (显示内核里所有以Psp开头的内核符号)
2. lm : 显示所有已加载的模块列表
3. dd : 显示一个地址起始的32位整数值(默认显示32个整数,每行4个,共8行)
例如: dd 1014db0 L1 (L1表示只显示一个整数)
4. du : 显示UNICODE形式的字符串
5. .formats <数字> : 以各种进制显示这个数字
6. !process 0 0 : 打印系统中所有进程(只在内核调试下有效)
!process <EPROCESS> : 显示一个进程的关键信息
7. !dd : 显示物理地址(只在内核调试下有效)
8. 使用Windbg在内核调试下调试用户进程.
!process 0 0 列出所有进程
.process /p <EPROCESS> 切换到应用进程的地址空间
.reload /f /user 重新加载此进程用户空间的符号信息
.process /i /p <EPROCESS> 以入侵且禁止缓存映射地址的方式重新切换地址空间
bp <xxx> 下应用层断点
9. bl : 查看已设置的断点列表
10. bc : 取消一个断点
11. ba : 设定一个内存访问断点
例如: ba w1 0042201c
ba r2 0042201c
12. r : 显示寄存器的值
13. u : 反汇编,例如: u 401500 L9 反汇编当前地址以后的9条指令
14. ub: 向前反汇编,例如: ub 4014f9 L2 反汇编当前地址之前的两条指令
15. k : 显示栈回溯
16. kp: 显示栈回溯并且显示每个函数被调用时的参数信息
17. g : 继续执行程序
18. dt: 显示类型结构命令
例如,在内核调试下:
dt _EPROCESS <某进程的EPROCESS首地址>
19. 在内核调试下显示一个进程的PEB信息
.process <EPROCESS> 先切换到某个进程的上下文
dt _PEB <PEB地址> 显示进程的环境块信息
20. ln [address] : 显示指定地址的类型信息,或临近address的符号的类型信息.address为可选.
21. ~* kp : 显示所有线程的栈回溯
22. ~* : 显示所有线程(同时也显示出线程的启动函数的地址)
23. dt ntdll!*create* : 显示一个模块内的所有结构体类型名
24. !handle : 查看句柄(表)
25. uf <function address> : 反汇编函数
26. !peb [address] : 显示一个进程的进程块信息
27. !object 查看内核对象,格式如下:
Usage: !object [-p] | [[<Path>] | [<Address>] | [0 <TypeName>]]
28. t : 单步跟入. tc: 单步跟入直到一个call为止.
tct: 单步跟入直到一个call或ret为止. tt: 单步步入直到一个ret为止.
29. p : 单步步过. pc,pct,pt根据推理同上.
29. bu kernel32!BaseProcessStart : 设置一个延迟的以后再落实的断点
注: 上面这个命令常用来调试那些加壳的程序。