现在经常要使用windbg调试程序,只有把windbg的命令都用熟了,才能提高调试的效率。windbg的命令实在是太多,因此,要记住需要一定时间,只有反复学习和练习这些命令,才能把他们烂熟于心。主要是记录一下自己经常要用到的windbg命令,并且不断更新。
- 反汇编命令 u
示例如下:
//反汇编地址为0x011f1400的后8行汇编代码
u 0x011f1400
//反汇编地址为0x011f1400的后20行汇编代码
u 0x011f1400 L20
//反汇编地址为0x011f1400的前8行汇编代码
ub 0x011f1400
//反汇编整个函数
uf 0x011f1400
- 镜像比较命令 !chkimg
通过!chkimg可以比较内存里加载的文件和符号服务器上的文件的差异。例如,可查询出当前的dll的api是否被hook了。示例如下,其中-d为显示比较的详情,从该命令的执行结果可以看出,一共有2个函数被hook了。
0:009> !chkimg ntdll -d
7747fd8c-7747fd90 5 bytes - ntdll!ZwEnumerateKey
[ b8 2f 00 00 00:e9 ff c5 96 88 ]
77480204-77480208 5 bytes - ntdll!ZwSetValueKey (+0x478)
[ b8 5d 00 00 00:e9 c7 c3 96 88 ]
10 errors : ntdll (7747fd8c-77480208)