这个问题Receive Windows Messages in a Service解决了我遇到的问题,并建议不要创建一个wndProc来避免破碎攻击。问题是我有一个Windows应用程序,我想转换为使用Asynchronous Winsock的服务,因此需要一个wndProc来运行。
鉴于我不关心显示窗口,以下是否可以防止碎片攻击?我按原样复制wndProc,但用简单的返回0替换默认处理程序(当前对DefWindowProc()的调用);
答案 0 :(得分:1)
除非标记为" interactive",每个服务都在自己的窗口工作站运行,因此对服务本身的破坏攻击不是问题,除非您的代码执行奇怪的操作,例如更改窗口站关联或弄乱窗口站和/或桌面上的权限。
换句话说,你不需要改变任何东西;只要确保你没有设置"互动"安装服务时标记。您提到的答案在这方面具有误导性。
(即使设置了" interactive"标志,在Windows Vista中以及稍后的会话0隔离时风险受到严格限制;只有在不受信任的代码在上下文中运行时才会发生破坏性攻击服务质量较低的服务,或者攻击者成功攻击特权较低的服务。)