【发布时间】:2014-07-10 17:12:28
【问题描述】:
如何找出远程计算机上的 Visual C++ 安全检查失败的地方?
我被带到一个项目来协助并正在使用 Visual Studio 2013,它具有 /GS 安全检查来发现缓冲区溢出。这很棒,我不想关闭它们,但它们导致软件在特定计算机上“崩溃”,我正在努力寻找一种方法来知道在哪里。无法使用捕获和记录异常的常规工具。似乎不再支持 Watson 博士,我无法远程调试计算机。
如果堆栈未通过安全检查,我将不胜感激指向适当工具的指针。谢谢。
【问题讨论】:
-
/GS 违规被视为恶意软件攻击。立即崩溃到桌面,其他任何东西都会为恶意软件提供一个钩子来做一些令人讨厌的事情。诊断它们的唯一方法是附加调试器。它会在进程终止之前自动中断程序。调用堆栈显示违规发生的位置。如果您无法远程调试机器,那么这就是它的结束,您将不得不将它留给客户的 IT 人员。当然,这台机器实际上是恶意软件攻击的目标的可能性不为零:)
-
你可以在目标机器上enable local crash dump creation。有了故障转储后,/GS 故障通常很容易诊断。
-
@JamesMcNellis 这些转储是否可以在 Visual Studio 中以某种方式使用?如果是的话,这听起来像是解决方案。
标签: visual-c++