Student 将 PDF 转换为功能性 Linux 仿真器
快速阅读: 据《技术点》称,上月初,一名高中生利用PDF的JavaScript功能,在PDF文档中运行了《毁灭战士》,随后又实现了Linux操作系统的运行。尽管性能受限,用户仍可通过Chromium内核浏览器体验。该项目拓展了PDF JavaScript工具的应用边界。阿丁2210发现,使用特定的Emscripten版本可编译C代码并运行,但存在性能瓶颈。对于低配置硬件,用户可尝试其ChromeOS RMA Shim引导加载程序。
上月初,有人利用PDF格式的JavaScript支持在本应是静态文本文档中运行了俄罗斯方块。不出意料,几天之后,一位高中生将这个漏洞升级了,使《毁灭战士》(Doom)能在PDF文件中运行。同一开发者现已增强代码,使其能够在该格式中运行整个Linux操作系统。在展示了一款能在PDF中运行的《毁灭战士》端口后不到一个月,这位高中生兼程序员“阿丁2210”成功地在这一流行文件格式中模拟了Linux。尽管性能有限,但该项目重新定义了PDF JavaScript工具的可能性。用户可以使用像Chrome、Edge和Opera这样的Chromium内核浏览器尝试它。源代码可以在开发者的GitHub页面找到。LinuxPDF在基于TinyEMU的RISC-V模拟器中运行。其内部工作原理与阿丁2210的DoomPDF非常接近。例如,输入重复了早期的俄罗斯方块PDF漏洞中的技巧,重用了《毁灭战士》端口的代码。用户可以在主屏幕下方点击虚拟按键,但大多数人可能更喜欢直接键盘控制,这通过解释文本字段中的输入实现。虽然PDF格式主要用于显示文本和图像,但它也可以运行JavaScript代码。Adobe Acrobat支持的功能包括3D渲染、显示器检测和HTTP请求。在浏览器中运行的PDF使用的是一个更为有限的版本,但足以运行游戏和操作系统。阿丁2210发现,一个针对asm.js而非WebAssembly的旧版Emscripten可以编译C代码并在文件格式中运行。与DoomPDF类似,Linux模拟也有性能问题。启动内核需要长达一分钟的时间——大约是传统Linux系统的100倍。据阿丁2210所说,不幸的是,由于Chromium使用了一个不支持JIT编译器的V8版本,这个问题无法解决。文件系统默认为32位。然而,用户可以通过在一个真实的Linux系统中克隆存储库、编辑“BITS”行并下载Emscripten版本1.39.20来构建64位版本。遗憾的是,运行64位版本会使性能差距翻倍。对低配硬件感兴趣的用户可以试试阿丁2210的ChromeOS RMA Shim引导加载程序。脚本集允许在不修改固件的情况下在Chromebook上运行完整的Debian系统。该项目还支持已注册的企业设备。
(以上内容均由Ai生成)