Windbg在应用层调试漏洞时的应用

  主要记录一些在应用层调试漏洞的技巧,不会写一些基本的命令,只记录比较有用的平时难以想到的调试方法。

  

1、!address eax

查看对应内存页的属性,如果poc触发异常之后就可以用这个指令看一下触发异常的内存地址的情况

2、dc 0x4232390

以DWORD为组织单位查看内存,比dd命令的优点是可以显示ascii码的情况。

3、 ub 0x532930

反汇编给定地址之前的指令,一般对于栈回溯中得到的地址使用这一条命令。因为可以看到回溯函数的调用

4、kb、kv和kp

都是栈回溯,但是kb只显示3个参数,而kp显示所有参数。kv则有额外的调用约定

5、x 函数名

匹配指定模板的符号,可以用来搜索函数

6、断点命令之bp、bu、ba

bp是对地址下断点、bu是对符号下断点。如果符号位置变了(比如在一个dll中),bu会随符号而改变bp不会。ba是对数据下断点,指定访问模式e执行、w写、r读,支持对1、2、4、8个字节,格式为 ba 访问模式 字节数 地址。

bl列出断点、bc删除断点。

7、针对模块的sxe ld:和lmm

lmm可以搜索模块的信息,sxe ld:当模块加载后断下。

8、dds 地址

以地址为基准搜索附近的函数地址,如果有则显示符号和地址。

9、设置记录断点

bp xxxx ".echo 'Here: ';r eip ;gc"  这样断在XXXX的时候就会输出你指定的寄存器的值

10、ln列出附近的符号

在不知道中断处的含义时,可以用ln查看该地址或附近的地址符号。(因为虚函数表是有符号的,所以用来分析对象类型有奇效)

11.在满足条件时中断下来

".if(){}.else{g;}"

12.jscript与jscript9

jscript9!Js::Math::Cos是jscript9的

jscript!Cos

!heap也有一些很好用的命令
!heap -stat 显示进程中所有堆的信息,通过这个命令可以找到堆喷分配内存块所属的堆
!heap -a HEAP_HANDLE 显示指定句柄的堆的情况
!heap -stat -h HEAP_HANDLE 可以看到堆中块的分布情况
!heap -flt s size 显示所有指定大小的块
!heap -p -a 堆分配记录
原文地址:https://www.cnblogs.com/Ox9A82/p/5704122.html