http://blog.csdn.net/wesley2005/article/details/51501514

目录:

(1) u命令(反汇编)

(2) dt命令(查看数据结构)

(3) ln命令(查找就近的符号)

(4) x命令(显示模块的符号)

(5) k命令(显示调用栈)

(6) d命令(以数据方式显示)

(7) b命令(断点)

(8) lm lmvm (显示模块信息)

(9) .reload (重加载模块)

(10) !process !thread .process .thread (查看进程线程信息)

(11) !object (查看对象信息)

(12) !devnode (查看设备对象)

(13) g命令 (继续执行)

(14) operators (MASM)(汇编下的操作符,poi,by,&等,条件断点最有用)

(15) e命令 (写内存数据)

(16) !ca命令 (查看session的ControlArea)

(17) r命令 (查看修改寄存器)

详细

(1)u命令(反汇编)

uf ICSF!SfDirectoryControl

可以查看整个函数的汇编代码

u ICSF!SfDirectoryControl ICSF!SfDirectoryControl+0X30

可以看到30个字节的汇编指令

ub ICSF!SfDirectoryControl L30

可以查看SfDirectoryControl 之上的30字节的汇编指令

(2)dt命令(查看数据结构)

dt nt!_IRP -r2
可以查看二级结构,

从而知道IoGetCurrentIrpStackLocation宏实际取的是_IRP.Tail(0x040).Overlay(0x000).CurrentStackLocation(0x020)。

也就是说,IRP+0X60里存放的就是_IO_STACK_LOCATION的地址

实例:

dt nt!_IRP poi(ebp+0x0c) -r2               *注释:dispatch中,ebp+0ch存放的就是IRP参数的地址

显示结果(省略一部分):

+0x040 Tail             : __unnamed
      +0x000 Overlay          : __unnamed
         +0x000 DeviceQueueEntry : _KDEVICE_QUEUE_ENTRY
         +0x000 DriverContext    : [4] (null) 
         +0x010 Thread           : 0x822934d8 _ETHREAD
         +0x014 AuxiliaryBuffer : 0x8225bc30 "???"
         +0x018 ListEntry        : _LIST_ENTRY [ 0x0 - 0x0 ]
         +0x020 CurrentStackLocation : _IO_STACK_LOCATION
         +0x020 PacketType       : 0x822f29ac
         +0x024 OriginalFileObject : 0x822ecde8 _FILE_OBJECT
然后,就可以得到irpSp的地址0x822f29ac了。

(3)ln命令(查找就近的符号)

0: kd> ln 804e23a2
(804e23a2)   nt!IopfCallDriver   |  (804e2417)   nt!KiInsertTimerTable
Exact matches:

(4)x命令(显示模块的符号)

x nt!*

则显示nt的所有符号

(5)k命令(显示调用栈)

kd

直接显示所有的栈情况

kb

显示前3个参数

kp

显示调用栈,及所有参数值和它们的类型

kc

只显示调用栈的模块名和地址(不显示调用栈的地址)

(6)d命令(以数据方式显示)

da

显示ascii码

dc

按单字节显示字符

db

按单字节显示

dd

按4字节显示

dD

按8字节显示(64位下常用)

df

按浮点显示

dp

按4字节或者8字节显示(取决于是32位系统还是64位系统)

dw

按2字节显示

dW

按2字节显示字符

dyb

按二进制位显示(一字节一组)

dyd

按二进制位显示(4字节一组)

(7)b命令(断点)

bp 0040108c

bp Myexe!main+5c

bp source.c:31

在指定地址下断点

bp Myexe!main+5c "j 0!=eax 'dd @eax;gc';'gc'")

下条件断点,如何写表达式可参考本博文的operators (MASM)

bl

显示所有断点

bc 1

bc 1-4

bc *

删除断点

bd 1

bd 1-4

bd *

使断点失效

ba r4 DSPD!g_Global

下硬件断点

bu DSPD!DriverEntry

下延迟断点(在驱动镜像加载时,下断点)

bm DSPD!openf*

下模糊断点

(8)lm lmvm (显示模块信息)

lm

显示所有加载模块

lmvm DSPrivateData64

显示指定模块的详细信息

(9) .reload (重加载模块)

.reload DSPrivateData64.sys

.reload /f /i DSPrivateData64.sys    (/f强制加载, /i忽略pdb不匹配)

.reload /u DSPrivateData64.sys       (卸载模块)

(10) !process !thread .process .thread(查看进程线程信息)

!process 0 0

显示所有进程

!process 0x843423 0

显示进程信息

.process 0x843423

切换到指定进程

.process /i 0x843423

输入g命令后切换到指定进程

.thread 0x87668432

切换到指定线程

!thread 0x87668432 0

查看线程信息

(11) !object (查看对象信息)

!object \

查看指定对象的信息

(12) !devnode (查看设备对象)

!devnode 0 1

查看所有的设备对象

(13) g命令 (继续执行)

g    

继续执行

gu

执行到本函数返回

(14)operators(MASM)(汇编操作符,poi,by,&等,条件断点最有用)

可查看windbg帮助的operators (MASM)

poi(@ebp) 

地址(ebp)指向的指针。在kernel调试下,是目标机环境。user调试下,是编译环境。

by(0x8423D435)

地址指向的字节

$vvalid(AddressLength)

指定范围的内存是否有效

& ! | 等,$scmp等

(15)e命令 (写内存数据)

eb 0x838de64c 1

向指定地址内存按单字节写入

ew (2字节)

ed (4字节)

ep (指针)

eq (8字节)

ea (ASCII字符串)

eu (UNICODE字符串)

eza (ASCII字符串,NULL结尾)

ezu (UNICODE字符串,NULL结尾)

(16) !ca命令 (查看section的ControlArea)

kd> !ca ff8636e8

ControlArea @ff8636e8
  Segment:    e1b74548    Flink              0   Blink:               0
  Section Ref        0    Pfn Ref           6c   Mapped Views:        1
  User Ref           1    Subsections        5   Flush Count:         0
  File Object ff86df88    ModWriteCount      0   System Views:        0
  WaitForDel         0    Paged Usage      380   NonPaged Usage       e0
  Flags (10000a0) Image File HadUserReference

(17) r命令 (查看修改寄存器)

kd>reax

eax=00000000

查看寄存器,也可以用,r@eax等

kd>reax=1

eax=00000001

设置寄存器的值

常在断点中使用,比如

kd> bp vDiskBus!InitManager+0xb3 " r@eax=0;gc"

学习使用常用的windbg命令(u、dt、ln、x)相关推荐

  1. 入门学习Linux常用必会命令实例详解

    Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正理解Linux系统, ...

  2. Markdown学习,Windows常用快捷键,Dos命令,编译运行

    Markdown学习 标题 三级标题 四级标题 字体 Hello world! Hello world! Hello world! Hello world! 引用 选择狂神说Java 分割线 图片 [ ...

  3. 学习Windows2008——常用工具及命令(包括核心版部分命令)

    2019独角兽企业重金招聘Python工程师标准>>> 常用工具: 系统兼容性检测:http://technet.microsoft.com/en-us/windowsvista/a ...

  4. Linux操作系统学习 | Linux常用命令

    文章目录 操作系统 1.桌面操作系统 2.服务器操作系统 3.嵌入式操作系统(Linux) 4.移动设备操作系统(iOS.Android(基于Linux)) 一.虚拟机 二.Linux操作系统的发展史 ...

  5. 【Linux】Linux入门学习之常用命令二

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

  6. 【Linux】Linux入门学习之常用命令一

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

  7. 【Linux】Linux入门学习之常用命令三

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

  8. 【Linux】Linux入门学习之常用命令四

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

  9. Git学习系列之一些常用的Git命令收录更新ing

    不多说,直接上干货!  前言 对于Git工具,有必要整理和总结一些常用实用的命令. http://p.primeton.com/articles/53cce3a3e138236138000026 ht ...

最新文章

  1. java memcachedclient_memcached client — memcached client for java使用 | 学步园
  2. 框架写mysql插入为空_学习springMVC框架配置遇到的问题-数据写入不进数据库时的处理办法...
  3. linux mysql 备份脚本_linux 之mysql备份脚本
  4. 1292 - Incorrect datetime valuemysql插入非法的时间数据解决方案
  5. Stone Game, Why are you always there? HDU - 2999(sg定理)
  6. 对于C++指针的详细理解
  7. 借助 OpenGL* ES 2.0 实现动态分辨率渲染
  8. 没有web.xml如何使用 Maven打war包?
  9. Windows应用程序组成及编程步骤
  10. 谷粒商城:秒杀系统设计与编写
  11. VOC数据集格式介绍
  12. 2020学而思笔记小初课程百度云网盘分享下载
  13. CSS网页布局中易犯的10个小错误
  14. C语言动态规划和文件操作练习——通讯录
  15. 我用Python爬取美食网站3032个菜谱并分析,没有我不会做的菜!
  16. <figure> <figcaption>筆記
  17. excel自动化的第一个实用例子(宿舍分饭)
  18. python_split()函数使用方法
  19. Mac - 通过 Script 实现更换桌面壁纸
  20. Day 07 类、魔方方法

热门文章

  1. JavaSpring框架有哪些优势?
  2. UI交互设计师在准备简历时应该注意什么?
  3. C++进阶教程之文件和流
  4. 基于OpenCV的计算机视觉入门(1)图片操作入门
  5. docker 安装portainer、gogs、redis、mongodb、es、rabbitmq、mysql、jenkins、harbor
  6. C# 、.NET、ASP.NET MVC积累
  7. 宏、函数、宏和函数的区别
  8. Ubuntu12.04上编译PlateGatewayQt
  9. Nginx 与 PHP-Fpm的安装过程遇到的问题
  10. Leetcode 129. 根到叶子结点数字之和