利用脚本可以自动设置断点,并暂停之后处理事务是核心。不用一对一检查
1.先编写代码 windbgTest.cpp ,编译后一定要保留windbgTest.pdb 文件,代码如下
#include "stdafx.h"
int main(int argc, char* argv[])
{
char buf[][5]={
{"buf1"},
{"buf2"},
{"buf3"}};
for(int i=0;i<3;i++)
{
printf("%s\n",buf[i]); //要检查输出内容
}
return 0;
}
2.编写windbg 脚本 SRCIPT_WINDBGTEST_DEBUG.TXT , 内容如下
$$===================================================================
$$ $$><D:\!Prog\winDBG\windbgTest\SRCIPT_WINDBGTEST_DEBUG.txt
$$ 测试结束后 .logclose
$$===================================================================
.logopen D:\!Prog\winDBG\windbgTest\windbgTest.log
bp windbgTest!printf "da edx;g" <----暂停后要做的事务
3.打开windbg,用户模式打开windbgTest.exe,命令窗口中
输入$$><D:\!Prog\winDBG\windbgTest\SRCIPT_WINDBGTEST_DEBUG.txt
然后正常运行就可以自动记录 printf 函数中的内容
最后不要忘记关闭日志文件 windbg命令窗口中输入 .logclose
CommandLine: D:\!Prog\winDBG\windbgTest\Debug\windbgTest.exe
Symbol search path is: D:\WinDDK\Symbols_Full
SRV*D:\WinDDK\Symbols_Dynamic* http://msdl.microsoft.com/download/symbols
Executable search path is:
ModLoad: 00400000 00426000 windbgTest.exe
ModLoad: 7c920000 7c9b6000 ntdll.dll
ModLoad: 7c800000 7c91e000 C:\WINDOWS\system32\kernel32.dll
(f30.598): Break instruction exception - code 80000003 (first chance)
eax=00241eb4 ebx=7ffd6000 ecx=00000001 edx=00000002 esi=00241f48 edi=00241eb4
eip=7c92120e esp=0012fb20 ebp=0012fc94 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202
ntdll!DbgBreakPoint:
7c92120e cc int 3
0:000> $$><D:\!Prog\winDBG\windbgTest\SRCIPT_WINDBGTEST_DEBUG.txt <---手动输入
Opened log file 'D:\!Prog\winDBG\windbgTest\windbgTest.log'
*** WARNING: Unable to verify checksum for windbgTest.exe
0:000> g <---自动记录printf的内容
0012ff70 "buf1"
0012ff75 "buf2"
0012ff7a "buf3"
eax=00000000 ebx=00000000 ecx=7c800000 edx=7c99e120 esi=7c92de6e edi=00000000
eip=7c92e514 esp=0012fe54 ebp=0012ff50 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll!KiFastSystemCallRet:
7c92e514 c3 ret
0:000> .logclose
Closing open log file D:\!Prog\winDBG\windbgTest\windbgTest.log
4.打开log文件验证结果
Opened log file 'D:\!Prog\winDBG\windbgTest\windbgTest.log'
*** WARNING: Unable to verify checksum for windbgTest.exe
0:000> g
0012ff70 "buf1"
0012ff75 "buf2"
0012ff7a "buf3"
eax=00000000 ebx=00000000 ecx=7c800000 edx=7c99e120 esi=7c92de6e edi=00000000
eip=7c92e514 esp=0012fe54 ebp=0012ff50 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll!KiFastSystemCallRet:
7c92e514 c3 ret
0:000> .logclose
Closing open log file D:\!Prog\winDBG\windbgTest\windbgTest.log
下载测试代码包括脚本 http://files.cnblogs.com/nlsoft/windbgTest.rar
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课