[[[[[[[[[[[[]]]]]]]]]]]]
x kernerl32!k* 显示模块kernerl32中所有以k开头的函数
dv 显示局部变量值
dv /i/t/v 显示局部变量的类型,值相关信息。
x <module>!* / ? 显示指定模块的符号
x argc 查看变量argc的值。
dt argc 查看变量值
dt _PEB 7ffdd00 将内存地址7ffdd00开始的内容以PEB结构的方式显示出来。
dd 12000 L4 查看地址12000 后面的四个字
dds 12000 L100 查看堆栈上地址12000开始,后面的100个dword的内容,如果有调试符号,会将符号显示。此方法来追踪堆栈。(先看ebp,再用此方法)
dd ebp + 4, 返回地址, ebp + 8 第一个参数
[[[[[[[[[]]]]]]]]]
.kill 杀死调试进程
.restart 重新调试
[[[[[]]]]]]]]]]]]]]
k 显示调用堆栈
,kn加序号而已。
kb 显示前三个参数。第一个参数ebp+8;第二个ebp+0x0C;第三个ebp+0x10;dd ebp+0x14是第四个参数
kp 显示函数参数类型,数值
kp f f开关显示相邻栈基之差,从而可以推断出栈的健康状况。
[[[[[[[[[[]]]]]]]]]]
| 显示进程
~显示线程
~0 s 切换到 0号线程
[[[[[[[[[]]]]]]]]]
dv 显示函数参数&局部变量,注意,dv是跟栈帧相关的,对不同的栈帧显示不同的局部变量。
@1, kn 显示所有栈帧
@2, .frame选择想要查看的栈帧
@3, dv /i/v/t显示该栈帧里局部变量信息
@3, dv /i /V /t 显示变量基于栈帧的地址
如果没有私有符号,dv是不能显示变量信息的。
vc 生成的调试符号*.pdb windbg不认识,需要设置为c++/General/DebugInfo= C7 compatible
=====
sympath + c:\nasm 添加符号搜索路径
.sympath 显示符号搜索路径
//显示一定范围内存
!db L 32 : results in 32 bytes being displayed (as hexadecimal bytes),
//查看pe信息
!dh [Options] Address : 查看模块pe信息
!dh -f : display file headers
!dh -s : section headers
!dh -a : all header informations
查看结构体成员
dt nt!_EPROCESS
查看当前的irql
!irql
查看Verifier 检测统计信息
!verifier
查看某个内存地址属于那一个模块
!pool 地址
!lmi Address : 查看模块的主要信息
!pcr 可以查看当前执行的线程及irql, 等信息
//
Why doesn't the WinDBG command !irql always return the correct IRQL for my target?
[Answer by Jake Oshins, jakeo_at_windows_dot_microsoft_dot_com. Workaround provided by James Antognini, antognini_at_mindspring_dot_nospam_dot_com, 27 August 2003]
!irql currently only produces useful results on a crashdump, not a live system. To retrieve the current IRQL on a live system you should instead use the !pcr command.
!processfield:列出EPROCESS的成员
该命令前的!号,意味着它来自于调试器的扩展模块―kdextx86.dll。该命令可显示内核用来代表一个进程的EPROCESS结构(该结构并没有正式的说明文档)的成员及其偏移量。
尽管该命令仅列出了成员的偏移量,但你也能很容易的猜出其正确的类型。例如,LockEvent位于0x70处,其下一个成员的偏移量为0x80。则该成员占用了16个字节,这与KEVENT结构非常类似。