预编译头和 ASLR 有什么问题?
我在几个网站上读到预编译头和地址空间布局随机化不兼容。是什么让他们不兼容?需要做什么才能修复它?
我的问题与操作系统无关,我听说这是带有 grsecurity 的 Linux 和较新的 Windows 版本上的问题。 (我不知道还有什么有ASLR。)
I read it on several sites that precompiled headers and address space layout randomization is incompatible. What makes them incompatible? What would it take to fix it?
My question is OS independent I heard this is a problem on linux with grsecurity and on newer windows versions. (And I don't know what else has ASLR.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
预编译头与 ASLR 不兼容。
ASLR 破坏了旧版本 Visual C++ 编译器使用的用于实现预编译头的特定技术。有 Visual C++ 团队博客上的一篇文章,其中详细介绍了该问题并解释了如何修复该问题。 Visual C++ 2008 SP1 有一个可用的热补丁,而该问题在 Visual C++ 2010 中不存在。Linux
上可能也有类似的问题,我不太清楚。我不是 Linux、Linux 安全或 GCC 方面的专家。
Precompiled headers are not incompatible with ASLR.
The particular technique used to implement precompiled headers that was used by older versions of the Visual C++ compiler was broken by ASLR. There is an article on the Visual C++ Team Blog with details on the problem and an explanation of how it was fixed. There is a hotpatch available for Visual C++ 2008 SP1 and the problem is not present in Visual C++ 2010.
There may have been a similar problem on Linux, I don't really know. I'm no expert on Linux, Linux security, or GCC.