市中心的道格·布朗 » 我如何在 2013 年修复了臭名昭著的蛇怪 II Windows“黑屏”错误

主要观点:近期发现旧软件在新 Windows 版本中出现的漏洞故事,作者 12 年前修复了 Basilisk II 中的一个漏洞,该漏洞在新 Windows 版本中更易出现,通过添加调试跟踪输出等方法找出问题根源为 ROMBaseHost 地址分配问题,将 Unix 版本代码移植到 Windows 后解决,此问题并非 Windows 过错,是连续两次调用 malloc 可能导致地址顺序问题,回顾 2013 年的提交发现当时对 Git 操作不熟练。
关键信息:

  • 多个关于旧软件在新 Windows 版本中漏洞的故事,如《侠盗猎车手:圣安地列斯》《乐高岛》《席德·梅尔的阿尔法半人马座》等。
  • Basilisk II 是受欢迎的 68k Mac 模拟器,在 Windows 10 上运行,曾出现启动时黑屏问题,在 Vista、7 更常见,Mac OS X 和 Linux 无此问题。
  • 修复过程中尝试多种方法,如在虚拟机中测试、调整兼容性模式等,最终发现是 0x7119 指令相关问题及 ROMBaseHost 地址分配差异导致。
  • 移植 Unix 版本代码到 Windows 解决问题,解释了不同寻址模式及地址差异对模拟机的影响。
    重要细节:
  • Silent 的文章MattKC 的视频等。
  • Basilisk II 源代码中相关函数及代码片段,如 InstallSlotROM()、VideoDriverControl()等。
  • 不同操作系统及版本下的测试结果对比,如 Windows 2000、XP、Vista、7 等。
  • 调试过程中的各种发现,如 redraw_func()、video_refresh_window_vosf()等函数的调用情况。
阅读 5
0 条评论