Usage of Windbg

windbg 基本命令收集

Command Usage Example
lm 显示加载的module lm v
ln 查看附近的符号文件 ln eax
dps 查看符号 dps eax
gu 执行到当前函数结束时停下 gu
p 单步步过 p p2
t 单步步入 t t2
b 设置断点 ba bp

几个使用的命令与设置

Command Usage Command Usage
pageheap XXXX XXX
x X X
X X X

x

windbg的x命令用户显示所有上下文中匹配指定模板的符号, 用户寻找相应的断点位置
即x 后面跟着一个正则表达式, 然后显示所有匹配的符号,

1
2
3
0:011> x mshtml!Alternate*
69bd6e80 mshtml!AlternateFontNameIfAvailable = <no type information>
697cfd9d mshtml!AlternateFontName = <no type information>

*代表零个或多个字符
?代表一个字符
+d代表一个或多个字符

x还有个作用, 在函数断下来后输入x, 会自动打印出当前的局部变量

b

ba 设置内存断点
ba Access Size
Access 包括 e (执行), r (读/写), w(写)

1
ba r4 0x0033c558

pageheap

正常页堆 , 它在已分配的内存的后面放上几个守护字节(Guard Bytes), 类似于security cookie,再跟上一个标记为PAGE_NOACCESS的内存页。这样,已分配内存的后面如果被重写了,那么守护字节就会被改变,于是当 内存被释放 时,PageHeap就会引发一个AV。
完全页堆 , 当分配一块内存时,通过调整内存块的分配位置,使其结尾恰好与系统分页边界对齐,然后在边界处再多分配一个 不可访问的页作为保护区域。
因此一般UAF的洞开启页堆之后很大可能上可以定位到释放的位置, 而不是重新使用触发的AV.

用gflag.exe开启和关闭,加/full表示开启完全页堆

1
2
3
4
gflags /p /enable calc.exe /full
gflags /I calc.exe +hpa
gflags /p /disable calc.exe /full
gflags /I calc.exe -hpa

IE开启页堆和堆栈跟踪
1
gflags.exe /i iexplore.exe +ust +hpa

ust(user stack trace)

内存对齐 about ActiveX
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×