您将如何从 virtualbox 虚拟机中检索 BSOD 文本??
由于 BSOD 是文本,它应该存储在 VM 的内存空间中的某个地方,并且可能是定义明确的地方。
我有几个虚拟机已配置为在蓝屏上停止而不是重新启动,并且代码已到位以定期拍摄屏幕截图。
此时我的计划是区分两个图像,如果没有差异(即屏幕上没有变化)并且 4 个角的像素都是蓝色(和右边的蓝色),那么我们尝试提取在 BSOD 文本的文本中,搜索“* STOP:”序列的文本以确认它是 BSOD。
我最初计划使用一种快速而复杂的 OCR 解决方案来从图像本身提取文本,但是如果我们能够相对轻松地从内存中提取文本,我们就可以消除 OCR 错误的可能性。
我仔细阅读了手册和 API 引用,但没有看到任何似乎立即适用的东西。
是否可以从 Virtual Box 主机访问 guest 内存并直接从内存中检索 BSOD 文本?
更新
澄清一下,我目前考虑了 4 种不同的选择
1) 对 windows 调试协议(protocol)进行逆向工程,并至少构建一个基本的调试器来监听 vm 的串行端口
2) 对 Virtualbox 保存的状态文件进行逆向工程,并从 VESA 内存区域中提取文本,我怀疑在将 VM 保存在 BSOD 后存储在该文件中
3) 在使用 API 检索的输出图像上运行 OCR
4) 使用 API 调用或通过创建扩展以某种方式访问/公开来直接访问 guest 内存
这是在 Solaris 主机上运行的,有些主机可能只有一个可用的 Windows 虚拟机,它可能会启动,也可能不会启动。此 VM 可以是任何相对较新的 Windows 版本(XP、2003、2003 R2、2008、Vista、2008 R2)。我可以生成任意数量的基于 Linux 的 VM,但是由于许可问题,我无法生成额外的 Windows VM。到目前为止,我的想法是直接从 guest 内存中检索它是最容易实现的,也许我在这方面弄错了,上述方法之一,或者我没有想到的方法,会更容易实现
最佳答案
如果您只是想获取信息,为什么不启用内核调试并通过其中一个虚拟串行端口公开它呢?我相信您应该能够通过 I/O 端口使用 Windows 调试工具 (WinDbg) 或内核调试器 (KD)。因为这是一个虚拟机,唯一的独特要求是虚拟串行端口应该映射到主机上的命名管道,然后主机上的调试器(或其他虚拟机,因为你的主机不是 Windows)应该配置为进行通信在那根 pipe 上。你的命令看起来像这样:
windbg -k com:port=\\.\pipe\<pipe_name>,pipe
kd -k com:port=\\.\pipe\<pipe_name>,pipe
传奇人物 Mark Russinovich 有一篇很棒的博文,描述了他如何使用调试器改变 BSOD 屏幕的颜色。希望这会为您提供一些关于使用这些工具的更多见解,并缩小范围并让您到达正确的区域以提取您正在寻找的信息。
这里有一些引用资料可以帮助您入门:
知识库文章 151981:如何使用零调制解调器电缆设置远程调试 session
http://support.microsoft.com/kb/151981
任何其他颜色的蓝屏
http://blogs.technet.com/b/markrussinovich/archive/2010/12/14/3374820.aspx
Windows 调试工具
http://msdn.microsoft.com/en-us/windows/hardware/gg463009
关于windows - 从 VM 检索 BSOD 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9928951/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token
我有这个代码:context"Visitingtheusers#indexpage."dobefore(:each){visitusers_path}subject{page}pending('iii'){shouldhave_no_css('table#users')}pending{shouldhavecontent('Youhavereachedthispageduetoapermissionic错误')}它会导致几个待处理,例如ManagingUsersGivenapractitionerloggedin.Visitingtheusers#indexpage.#Noreason
我在目录“C:\DocumentsandSettings\test.exe”中有一个文件,但是当我用单引号编写命令时`C:\DocumentsandSettings\test.exe(我无法在此框中显示),用于在Ruby中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我也使用过系统、IO.popen和exec命令,但所有的努力都是徒劳的。exec命令还使程序退出,这是我不想发生的。提前致谢。 最佳答案 反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby会将空格解
我一直在玩一个脚本,它在Chrome中获取选定的文本并在Google中查找它,提供四个最佳选择,然后粘贴相关链接。它以不同的格式粘贴,具体取决于当前在Chrome中打开的页面-DokuWiki打开的DokuWiki格式,普通网站的HTML,我想要我的WordPress所见即所得编辑器的富文本。我尝试使用pbpaste-Preferrtf来查看没有其他样式的富文本链接在粘贴板上的样子,但它仍然输出纯文本。在文本编辑中保存文件并进行试验后,我想出了以下内容text=%q|{\rtf1{\field{\*\fldinst{HYPERLINK"URL"}}{\fldrsltTEXT}}}|te
我使用“newapp_name”创建了一个新的Rails应用程序,我正在尝试编辑.gitignore文件,但在我的应用程序文件夹中找不到它。我在哪里可以找到它?我安装了Git。 最佳答案 .gitignore位于项目的root中,而不是app子目录中。首先打开终端并进入您的目录。您需要使用ls-a来显示stash文件。然后使用打开.gitignore 关于ruby-on-rails-尝试打开.gitignore以在文本编辑器中对其进行编辑,但在OSXMountainLion上找不到文件位