我们可以访问WinCE桌面并在Keysight DSOX1102G示波器上运行Doom

杰森·金(Jason Gin)博客文章“ 撕成碎片 ”的翻译

TL; DR:是的,在Keysight 1000 X系列示波器上,您实际上可以运行Doom! 但是,这并不容易。


是德科技DSOX1102G

示波器中应有任何自重的电子发烧友。 简而言之,示波器可以让您研究电路中的电信号波,而数字示波器(DSO)则是必不可少的,因为它们可以发现模拟示波器或万用表无法识别的罕见信号错误。

我的文章的主题是Keysight Technologies(以前为Agilent)的DSOX1102G,它们来自示波器的廉价产品线,与竞争对手相比,它们的价格质量比高。 像大多数示波器一样,此模型运行内置的Windows Embedded CE 6.0 OS(也称为Windows CE或WinCE),但是,像大多数WinCE应用程序一样,您几乎看不到其界面-它隐藏在特制的产品后面。用户界面。

阶段1:唤醒


当Keysight 1000-X系列于2017年初推出时,一位使用Hackaday的审阅者注意到在这些示波器上保存数据的方法有时会导致其崩溃和重新启动,并指出在加载之前,屏幕上会看到鼠标指针几秒钟。 。 他的帖子中有一个gif,他保存了一个导致崩溃的文件,我注意到动画的其中一个帧上有些奇怪的东西-在这里,您可以在黑屏前立即识别Windows任务栏,并显示错误。 有趣!



得益于是德科技的“示波器月”竞赛,我赢得了示波器冠军,这几个月来,直到我自己碰巧遇到一个屏幕故障,我才想到它。 就我而言,我发现在示波器的故障处理程序顶部可以看到Windows CE标头。 拖动标题留下一个标记,并最终挂起WinCE。 这种情况很少发生,因此,在偶然发现故障之后,我只是允许处理程序扫描文件系统并重新启动操作系统。

但是,我对此很感兴趣,并且我想了解很多有关底层WinCE系统发生了什么情况。 我发现示波器的USB端口很容易出错,仅将闪存驱动器插入该端口可能会导致崩溃。 但是,这还不足以收集必要的信息量,因为这是一种不可靠的方法。

因此,我开始搜索对WinCE桌面的访问。

最初,我尝试了一种纯粹的软件解决方案,试图创建一个.ksx固件更新文件(实际上,它只是一个.cab归档文件),该文件可能会关闭示波器程序并打开Windows资源管理器-它不起作用。 示波器软件发出了一条错误消息,提示无法打开该文件。 事实证明,即使我强迫它下载更新文件,这样的解决方案也行不通,因为在更新过程中示波器软件不会进入桌面。 遇到了第一个严重障碍后,我暂时放弃了好奇心,将示波器用于其预定目的。

阶段2:深入了解


由于我的好奇心,我曾经决定看一下示波器是否可以通过USB端口读写3.5英寸的软盘(或者,正如年轻人所说的打印的保存图标)-可以!但是,我注意到了一个奇怪的问题;示波器如果在Eureka上打开驱动器并将其留在USB端口中,它就会崩溃!我找到了一种可靠地导致崩溃的方法。

不幸的是,这里还有第二个严重障碍在等待着我。 仅当USB端口(驱动器)中包含单个设备时,才会发生此引导失败。 如果我使用包含驱动器的USB集线器,则不会失败。 这意味着我必须非常快速地在驱动器和带键盘的USB鼠标之间切换。 在启动过程中,急于尽快删除驱动器并将键盘和触摸板的组合插入USB的过程很累人又烦人。 我需要一个更好的解决方案-硬件解决方案。


我制造的USB专用A / B开关,用于快速更换设备

我使用旧的USB电缆,失效的USB集线器和DPDT开关,创建了USB A / B开关,以简化并加快设备之间的切换过程。 使用这种方法,我设法尝试与WinCE OS建立了短暂的联系,而任务栏在屏幕上可见,直到故障处理程序破坏了我的所有树莓。 使用三星Galaxy S9的慢动作拍摄中的魔术效果,我能够确定可以将击键发送到WinCE并对其进行处理-即使在系统屏幕保护程序上也可以! 我能够通过盲目按下按键来获取有关系统的信息,然后研究示波器软件崩溃时的响应。 然后我遇到了第二个障碍。

与WinCE进行非常短暂的交互的可能性很好,但是它没有用,因为在故障处理程序重新启动系统之前,我无法控制它。 处理程序紧紧地紧紧地紧紧紧紧地紧紧紧紧地紧紧紧紧地紧紧紧紧地紧紧紧紧地紧紧紧紧地紧扣在操作系统上。

阶段3:寻找立足点


再说一次,当我决定使用旧的Sony Clie PEG-NX73V (从2003年在PalmOS上手持)作为USB驱动器时,我经常玩的好奇心派上了用场。 它具有数据导入功能,可让您以与移动磁盘相同的方式将文件拖放到存储卡上。

就像USB驱动器一样,当我打开示波器而不拔出PDA时,就会发生系统崩溃。 但是,这次故障处理程序确定PDA文件系统是损坏的固件部分,并建议从外部USB闪存驱动器下载固件更新。



这种行为是不正常的,有时示波器软件仍在加载,并且WinCE出现了一个非常奇怪的窗口,鼠标指针亮蓝色,在屏幕上留下了痕迹。 但是,在这种奇怪的状态下,我设法将InfiniiVision示波器软件窗口拉到一边,然后试图拨开OS。 但是示波器软件的行为非常积极,每次在窗口外部单击后,都会重新获得焦点。 在对一个奇怪的涂装操作系统进行了大惊小怪之后,我得以解决它。 我无法查看文件系统,因为长时间无法从示波器软件窗口中进行控制,但是我能够调用系统属性对话框,该对话框被编写为示波器基于Windows CE 6.00,并且具有100 MB RAM。



然后,我决定通过EEVblog 论坛进行泛滥,人们在这里积极尝试破解示波器,以开拓更多可能性。 在那里,我发现该软件正在USB闪存驱动器的根目录中查找infiniiVisionStartupOverride.txt文件,如果存在,它正尝试从中下载示波器软件。 而且,尽管显然固件没有实际从闪存驱动器下载软件,但是此过程中断了示波器软件的启动,因此没有人从我这里获得操作系统控制权。 从那时起,一切都变得更加有趣-故障处理程序打开资源管理器窗口,并在文件名字段中输入“ *。*”,我能够开始在示波器和USB闪存驱动器的文件系统中翻阅! 这正是我获得WinCE控制所需要的。 但是,我遇到了另一个障碍:示波器在60秒后重新启动,因此我没有太多时间来研究操作系统。


通过闪存驱动器请求固件更新DSOX1102G和文件选择对话框


Windows CE任务管理器在固件恢复屏幕上显示正在运行的进程

复制了多个Windows CE工具(例如Windows CE任务管理器)后,我注意到当故障处理程序仍然可见时启动了两个有趣的过程-restoreInfiniiVision.exe和processStartupFolder.exe; 显然,第一个是故障处理程序,在示波器软件崩溃后,该处理程序无法让我访问WinCE。 使用iTaskMgr击败了第二个进程(WinCE Task Manager的免费版本不允许终止进程),我能够使示波器避免重新启动,而击败了第一个进程,我看到了一个干净的WinCE桌面-并在这里! 不幸的是,我无法还原任务栏,这就是为什么浏览操作系统非常不便的原因。

我在桌面上创建了一个新文件夹以打开资源管理器,最后我能够研究示波器的文件系统。 Total Commander / CE程序具有内置的文本编辑器(此版本的WinCE中未提供此功能)有很大帮助。


使用Total Commander / CE进入文件系统(尚无任务栏)

阶段4:完全控制


现在,设法进入天蓝色的桌面,获得完整的WinCE体验,我不得不还原任务栏。 谷歌搜索,爬上堆栈溢出,为此我抛出了一个小程序。 从资源管理器中打开它,我获得了完整版的WinCE桌面! 最后,我完全控制了基本操作系统!


自由-示波器上完整的WinCE桌面!

从那一刻起,我开始浏览文件系统,看看在那里可以找到什么有趣的工具。 命令行解释器不想启动,但是我在注册表中翻了翻,找到了值为0xFFFFFFFF的键HKEY_LOCAL_MACHINE \ Drivers \ Console \ OutputTo。 通过将其更改为0,我设法使命令提示符在桌面上可见,因此我制作了另一个小程序来做到这一点。

一切顺利,我制作了一个批处理文件,其中包含杀死示波器软件,启动文件夹处理程序,故障处理程序,还原任务栏并允许启动命令提示符所需的所有命令。 但是,我的PDA需要打开故障处理程序菜单,这意味着其他人将无法重现这种效果。

进一步摸索,我发现启动画面出现并且面板上的LED开始闪烁时,即使没有安装任何设备的软件,WinCE也会开始处理击键。 按下win + U将使示波器挂起,因为这会打开“开始”菜单并选择“挂起”选项(并且此后操作系统没有机会返回控制,因为示波器只有一个关闭电源按钮)。 考虑到这一点,我将文件重命名为a.bat,以便其名称更易于键入,并在通过win + R,命令\ usb \ a.bat并按Enter加载时尝试运行该文件。 但是结果是示波器只是在屏幕上显示了屏幕保护程序,尽管在后台WinCE还活着,而我只是看不到那里发生了什么。 事实证明,故障处理程序是演示OS桌面的必要组件,我只需要在批处理文件中添加几行即可启动然后停止故障处理程序。 通过添加这些最后的修饰,我能够(半自动)在台式机出现之前立即加载示波器,仅使用USB闪存驱动器,鼠标和键盘即可!

阶段4:是的,它运行DOOM!


获得了WinCE的使用权后,我终于能够回答以下问题:“ Doom是否开始了?” 而且,事实证明,它真的开始了! 启动示波器后,花了一年半的时间,但我终于达到了这个里程碑。


这不是骗局:您可以在Keysight 1000 X示波器上运行Doom!


《毁灭战士II》在我的DSOX1102G上运行! (每秒3帧)


在320×240的窗口中启动Doom可以每秒为游戏压缩足够的帧数。 看什么调色板!

在下一篇文章中,我将在铁板上用这个传奇的视频游戏玩更多游戏,这从来都不是游戏的目的。


末日行动分辨率为320×240,256色! 在示波器上!

下载文件


我上载了可能需要在示波器上尝试相同操作的文件-但是请记住,我不负责将其变成积木或其他不愉快的东西! 我仅在DSOX1102G上测试了所有这些功能,但是我怀疑具有固件恢复功能的1000 X系列和其他Keysight示波器的其他型号也可能工作。 示波器固件的制作使得所有WinCE都在RAM中运行并且在重新启动后不会保存,因此对破坏系统的OS进行的所有更改都不会使示波器变成砖头(带有固件的文件位于NAND闪存驱动器的目录中,该目录无法通过资源管理器打开,但是您只能按姓名拨号)。

闪存驱动器将需要格式化为FAT或FAT32,然后将Scope Liberator zip存档解压缩到其根目录中。 说明在readme.txt中。

如果您对返回任务栏和命令行解释器辅助程序的源代码感兴趣,我也会发布它们。

Source: https://habr.com/ru/post/zh-CN428265/


All Articles