您现在的位置是:探索 >>正文
win10于堆栈的缓冲区溢出怎么解决
探索458人已围观
简介Win10的堆栈缓冲区溢出,说白了就是程序往栈上写数据时越界了。这问题在Win10上特别烦人,因为系统自带的各种缓解机制——比如GS、DEP、ASLR——有时候反而让情况更隐蔽。你要是真遇上了,别慌, ...
Win10的于溢出堆栈缓冲区溢出,说白了就是堆栈的缓程序往栈上写数据时越界了。这问题在Win10上特别烦人,冲区因为系统自带的解决各种缓解机制——比如GS、DEP、于溢出ASLR——有时候反而让情况更隐蔽。堆栈的缓你要是冲区真遇上了,别慌,解决先搞清楚是于溢出哪个进程在闹腾。
最常见的堆栈的缓场景是浏览器或Office插件崩了。我见过一个案例,冲区某企业内网用的解决老版IE加载ActiveX控件,一打开特定页面就报“0xc0000409”(STATUS_STACK_BUFFER_OVERRUN)。于溢出这错误码其实是堆栈的缓Windows的快速失败机制,说明系统检测到栈被踩了。冲区这时候你去看Windows事件日志,能找到具体的模块名。多数情况下,是第三方控件没做边界检查。
解决思路分两层。第一层是应急,第二层是根治。应急手段很简单——更新软件。别笑,八成问题就是版本太老。Win10的更新策略虽然被骂,但安全补丁确实管用。你把出问题的那个程序升级到最新版,或者干脆卸载重装,大概率能消停一阵。要是还不行,就用系统自带的“应用程序验证器”(AppVerifier)跑一遍,它能帮你定位到底哪次写入越界了。这工具很糙,但直接,跑完会告诉你具体是哪个函数调用栈出了问题。
根治就得看代码了。如果你是自己写程序,那得检查所有memcpy、strcpy这类函数。Win10的编译器默认开了/GS,会在栈帧里放个cookie,但那只防连续覆盖。你要是用索引越界去写数组,GS照样拦不住。我建议你开/analyze静态分析,或者用AddressSanitizer(ASan)动态检测。VS2019以上版本都支持ASan,跑一遍就能看到精确的溢出位置。
还有种情况是驱动导致的。Win10内核驱动要是写坏了栈,那直接蓝屏,错误码通常是“SYSTEM_SERVICE_EXCEPTION”或者“KERNEL_STACK_INPAGE_ERROR”。这种你得用WinDbg抓dump文件,敲`!analyze -v`看堆栈回溯。有一次我帮人调一个USB网卡驱动,就是它的回调函数里用了固定大小缓冲区去接收超长数据包。解决方法是改用动态分配,或者至少加个长度校验。
最后说个野路子。要是你被这问题折磨得不行,又暂时找不到根因,可以试试关闭该进程的堆栈随机化(强制ASLR关闭)。在注册表里给那个exe设置`HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management`下的`MoveImages`键值,改成0。但这是下策,会降低系统安全性,只适合临时调试用。别问我怎么知道的——上次我这么干,第二天就被安全团队约谈了。
总之,堆栈溢出不是玄学,是纪律问题。要么你的输入没验证,要么你的拷贝没限长。Win10只是把问题暴露得更明显罢了。多花十分钟检查代码边界,比事后折腾系统强得多。
Tags:
上一篇:在线看盗版电影的网站
下一篇:关键词推广
相关文章
国内有哪些收集漏洞的平台
探索国内真正能打的企业漏洞平台,掰着手指头数也就那么几家。别被网上那些打着“漏洞众测”旗号的野鸡网站忽悠了,交上去的漏洞要么石沉大海,要么被白嫖了报告还得不到一分钱。 最硬核的当属国家信息安全漏洞共享平台 ...
【探索】
阅读更多百家楽网址
探索百家楽网址这五个字,在搜索引擎里敲下去,跳出来的页面比赌场里的老虎机还花哨。我试过,真的。那些域名后缀从.com到.io,从.vip到.top,像夜市地摊上甩卖的杂牌T恤,印着各种山寨Logo。有的页 ...
【探索】
阅读更多娄底第三方房屋质量检测公司
探索娄底街头的楼盘像春笋一样冒出来,但真正敢在新房里睡第一晚的人不多。我见过一对小夫妻,收房时欢天喜地,入住三个月后却发现客厅天花板渗水,墙皮像得了皮肤病一样往下掉。物业推给开发商,开发商说是装修公司的问 ...
【探索】
阅读更多