《格蠹汇编》-第5章笔记
《格蠹汇编》
《格蠹汇编》-第5章笔记
烈火
2013-06-05, 23:14 下午
第五章 拯救"发疯"的Windows7
讲述内容:一Win7进入桌面时提示“Windows must now restart because the Power service terminated unexpectedly”,随后强制重启。利用WER机制,分析系统转储文件,定位栈缓冲区溢出错误。
关键点:
1、WinRE
在高级启动菜单中选择Repair Your System,可以进入到WinRE(Windows Recovery Environment) 的命令行方式下。使用Dir *.mdmp /s搜索系统分区可以找到WER机制产生的转储文件。
2、GS机制
“VC8编译器在编译可能发生缓冲区溢出的函数时,会定义一个特别的局部变量,该局部变量会被分配在栈帧中所有其他局部变量和栈帧指针与函数返回地址之间...我们将其称为Cookie变量。”
在函数返回前对于Cookie变量进行检验,如果其值发生变化,说明栈发生溢出,返回地址很可能被破坏。此时就会跳转到__report_gsfailure,抛出栈缓冲区溢出异常,再由UnhandledExceptionFilter接管异常的处理,最后终止当前进程,这也最终导致了系统服务的终止和Win7的重启。