一、调试工具使用方式
- WinDbg常用命令:
- 执行 lm 命令,可以看到进程中有几个模块。
- 执行~命令列一下线程。
- 用!heap 命令列一下堆。
- 执行!address 命令可以列出用户态空间中的所有区域。
- 搜索吧!就从当前进程用户态空间的较低地址开始搜,找文章里的一句有特色的话:0:045> s -u 10000 L80000 “当年在交大”, 前几次尝试,什么都没找到,看来要扩大搜索范围:0:045> s -u 10000 L8000000 “当年在交大” ,延迟一刹那后,“刷刷”地出来很多结果。搜到了!这让人很高兴,说明数据还在内存里。
但是仔细看看搜索的结果后,又有点怀疑。因为 WinDbg 不支持中文显示,所以有点不确认上面搜到的信息。为了确认,执行 r 命令,观察 ESP 寄存器的值:0:043> r esp ,esp=02c9ffcc 。然后使用内存编辑命令在栈上输入上面的中文字符,再用内存观察命令查看,证实上面搜索到的结果是对的,5f53 就是“当”字的编码,4ea4 5927 就是“交大”。
- 接下来的目标是将数据从内存堆保存到文件,WinDbg 已经帮我们准备好了一条命令:0:045> .writemem c:\dumps\blog.txt 07288600 L2000。