windbg命令总结

0 基本操纵
前面的路径可以随便,后面的网址是微软的符号服务器的地址
SRV*D:\localsymbols*http://msdl.microsoft.com/download/symbols
r 用来显示当前的寄存器值
g 是恢复执行
g 地址 是执行到指定的地址
1 进程切换
!wow64exts.sw 用这个命令可以实现32位和64位的来回切换
2 模块操作
lmf 列举模块
lmf m ntdll.dll 列举指定模块
!dh ntdll.dll 模块制定信息

模块加载断点 sxe ld:MSCOMCTL.OCX
加载dll命令
.load.load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll
3地址操作
!address edi 查看这个地址的一些信息
4.系统信息
!peb 查看peb 基本信息
!teb 查看teb 基本信息
dt _PEB @$peb 详细显示PEB的信息
5插件使用
!py mona 使用 mona
!py mona sehchain 查看 seh链条 好慢啊 ,直接FS[0]是不是很快
如 .formats 命令可以以不同的形式来显示一个值
例如

6断点操作
bp 内存断点
可以设置激活断点所需要的次数
bp 01234567 3 也就是说两次触发该断点被忽略,第三次才会断下来
bp kernal32!WinExec 可以对函数进行下断点
bu 命令是针对某个符号下断点。 比如 bu MyApp!SomeFunction 。 在代码被修改之后, 该断点可以随着函数地址改变而自动更新到最新位置
bm 命令也是针对符号下断点。 但是它支持匹配表达式。 很多时候你下好几个断点。 比如,把MyClass 所有的成员函数都下断点: bu MyApp!MyClass::* , 或者把所有以CreateWindow开头的函数都下断点: bu user32!CreateWindow* 。
ba 命令就是针对数据下断点的命令, 该断点在指定内存被访问时触发。 命令格式为
ba Access Size [地址]
Access 是访问的方式, 比如 e (执行), r (读/写), w (写)
Size 是监控访问的位置的大小,以字节为单位。 值为 1、2或4,还可以是 8(64位机)。
比如要对内存0x0483DFE进行写操作的时候下断点,可以用命令 ba w4 0x0483DFE

设置硬件断点
ba<类型 ><大小 ><地址 ><放行的次数 (默认为1)>
上面的<类型>可以是:
1: ‘e’ 执行断点
2: ‘r’ 内存读取/写入访问断点
3:‘w’ 内存写入断点
<大小> 指定需要监视的范围大小(如果执行断点的话,大小总是1)
<地址>指定需要设置断点的地址
<放行的次数>指定激活断点需要的次数

bl 可以列举出所有的断点
bd <断点的编号> 可以让断点失效
bc <断点的编号> 可以删除一个断点
bc * 可以删除所有的断点
7栈操作
查看堆栈 k kb
8堆操作
dt _HEAP 地址 详细显示一个堆结构
!heap -h 显示当前进程的所有堆
!heap 0x001c0000 -v 显示一个堆的具体信息
dt ntdll!_HEAP 001C0000 显示堆头结构体
9.基本概念
寄存器和伪寄存器
windbg支持个别的伪寄存器,其中保存了某些值,伪寄存器通常带有前缀‘$’

当要使用寄存器和伪寄存器的时候,最后在前面加上前缀@ 这个前缀是告诉windbg接下来的部分是一个寄存器而不是一个符号,如果不加上前缀@的话,首先会尝试将这个
名称当做一个符号来解析
例子 同样的伪寄存器还有 teb peb $thread
存在的伪寄存器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值