WinDbg内核调试笔记

在网上找的WinDbg单独安装包为dbg_x86_6.12.2.633.msi

环境配置

主机win7 + VMware虚拟机XP sp3(原版系统)

1. 进入XP系统,打开终端添加带调试的启动项:

bootcfg /copy /d "XP Professional with Debug" /id 1 

bootcfg /debug on /id 2 /port com1 /BAUD 115200  

2. 关闭xp系统,在其”虚拟机设置“中”添加“串行端口,选”输出到命名管道"

然后设置命名管道为\\.\pipe\com_1,选择“此终端是服务器”,“另一终端是一个应用程序”,勾上“轮询时主动放弃CPU占用“

再次启动xp系统,选择启动项中的”XP Professional with Debug“

3. 将WinDbg安装路径添加到系统环境变量

在终端输入:windbg -b -k com:port=\\.\pipe\com_1,baud=115200,pipe

按住ctrl+s,在弹出的窗口中输入在线符号链接:SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols

(按照这样设置,WinDbg将先从本地文件夹C:\Symbols中查找Symbol,如果找不到,则自动从网上下载Symbols)

此时就可以调试了

若虚拟机为win7或查看更详细的配置见:http://www.cnblogs.com/mvperic/archive/2010/07/25/1784790.html

---------------------

WinDbg常用命令

x [module]![symbol] —— 查找模块内的函数和全局变量,可以使用通配符*

dt 类型名 —— 打印类型信息

常见类型名:_EPROCESS, ETHREAD, _PEB, _TEB, _UNICODE_STRING, _DRIVER_OBJECT, _LIST_ENTRY, _FILE_OBJECT, _CONTEXT, ...

dd 地址/符号/寄存器 Ln —— 以双字形式打印内存数据,输出n组

db 地址/符号/寄存器 Ln —— 以单字形式打印内存数据,输出n组

da/du 地址/符号/寄存器 Ln —— 以ASCII/Unicode字符形式打印内存数据,输出n组

r —— 打印所有寄存器的值

lm —— 显示模块信息

g —— 继续执行

p[count] —— 单步执行count次

pa[addr] —— 单步执行到地址addr

pt —— 单步执行到下一个返回指令

t[count] —— 跟踪执行count次

ta[addr] —— 跟踪执行到地址addr

tt —— 跟踪执行到下一个返回指令

u[addr] —— 反汇编

uf[addr] —— 反汇编函数所有指令

bp<location> —— 下断点

bu<location> —— 下断点

bl [number] —— 列出断点

be [number] —— 使断点生效

bd —— 使断点失效

bc[number] —— 清除断点

bp nt!func "j poi(esp+8) = 0 ''; 'gc' " —— 设条件断点,当函数的第二个参数为0时停下

!process 0 0 —— 列出所有进程最简洁信息(第一个参数表示输出所有进程,第二个参数是详细级别)

!process addr 1 —— 列出EPROCESS地址为addr的进程信息

.process /r /p addr —— 切换到EPROCESS地址为addr的进程上下文

kb —— 显示调用栈

.hh [command] —— 查看命令帮助

!peb —— 显示当前进程环境块

!dlls —— 显示当前进程加载的dll模块

!handle —— 显示当前进程的所有句柄

!idt 2e —— 显示2e号中断服务

rdmsr 0x176 —— 读取msr[176]的值

更详细的参看:http://www.cnblogs.com/kekec/archive/2012/12/02/2798020.html

---------------------

WinDbg脚本下载:

http://www.laboskopia.com/php/outils.php

http://blogs.msdn.com/b/debuggingtoolbox/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值