【问题标题】:Visual patterns in memory?记忆中的视觉模式?
【发布时间】:2012-08-31 20:23:02
【问题描述】:

今天在运行 VMWare 的 Win 7 机器上开始远程调试 C++ 项目,惊讶地发现随机内存位置出现以下模式:

谁可以编写此代码(不是我!)以及出于什么原因?只是好奇是否有人见过这样的东西。

【问题讨论】:

  • 是的,同意。这些看起来像四个零的灰度颜色掩码。它可能只是旧位图缓冲区的剩余物。不要担心,除非你开始看到QQ=P 到处出现。然后,您应该怀疑 HAL9000 正在干扰您的应用程序。
  • 至少它不是一个捆绑了rootkit的黑客组织的标志。
  • 这是频率分析如何战胜混淆的一个很好的例子。

标签: c++ windows debugging memory


【解决方案1】:

它看起来像一个字体的渲染掩码(字体中的每个字符(字体+大小+样式)在内存中渲染一次,然后 blitted 到输出表面)使用 8bpp,这表明你有字体反- 启用锯齿。

我假设您的项目涉及 GUI,您可能正在查看 GDI 用于存储光栅化字体的共享内存区域。

如果不是,那么这可能只是前一个进程或操作系统组件的剩余内存,在被您的应用程序使用之前未清零。

【讨论】:

  • 也许他们把它归零得太好了。
【解决方案2】:

很难说。可能内存用于缓冲某些字体(在本例中为零),甚至缓冲打印机或屏幕内容。

【讨论】:

  • 不太可能来自屏幕或窗口缓冲区,因为它是 8bpp。
  • 好吧,假设是现代显示器,你是对的。我已更新我的答案以包括打印机。
  • 太棒了,谢谢!当然,我怎么能错过。当我第一次看到它时,我以为我要疯了:) 调试太多:)
  • 不,你都错了。我们生活在 Matrix 中,您已经找到了利用 Matrix 代码的方法。您所看到的是我们构建的现实的本质,就在您的眼前 - 除非您需要更改 IDE 的设置以使用黑底绿字。
猜你喜欢
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-23
  • 1970-01-01
相关资源
最近更新 更多