Windbg调试栈溢出错误

Windbg载入dump文件,根据提示存在栈缓冲区溢出漏洞

使用kn命令查看栈帧信息,其中Wer开头的函数表示Windows Error Report

8号栈帧位于kernel32.dll中UnhandleExceptionFilter函数,用于未处理异常的操作

其下边的__report_gsfailure通常就是导致异常的函数,位于umpo.dll中

根据错误提示,存在一个GS机制错误,函数UmpoAlpcSendPowerMessage存在缓冲区溢出

GS cookie的值位于[ebp-4],dd查看0a[栈帧地址-4]处的数据

Cookie = 0x640064   ebp = 0x640064  ret addrs = 0x6a002e

此处值多次重复,更像是ascii编码值,不像地址值

计算并查看出错的栈空间内容,0a号栈帧减去09号栈帧地址

0x9afb30 – 0x9af924 = 20c 在此基础上再减去cookie和ebp的值 20c-8 = 204

使用命令db查看内容

栈中内容为某路径下的一个超长jpg图片路径和名称

第一个红框值为cookie = 0x00640064

篮框内容为 ebp = 0x00640064

第二个红框为 ret addrs = 0x006a002e

所以函数接收了如此长的参数后发生缓冲区溢出,触发GS机制,引发异常处理。

您可能还喜欢...