tl; dr:我从互联网热潮中发现了一些古怪的软件,并将其恢复到正常工作状态。如果你留下来,我很想告诉你我是如何来到这里的故事,但如果你对更直接的描述更感兴趣,你可以直接前往互联网档案馆。自从我有了 Dreamcast,我就收集了它一生中所拥有的一些互联网和多媒体软件。我真的很喜欢它的各种网络浏览器 1 丰富多彩且富有创意的界面,并且发现他们进军 33.6kbps 调制解调器上的可下载内容的雄心壮志令人着迷。 2019 年,我碰巧在 eBay 上购买游戏,并以 1 美元的价格找到了 DreamFlyer 的副本。我对它知之甚少,而互联网似乎对 2 也知之甚少。想到将它添加到我挑选的收藏中是一件很有趣的事情。我之前曾尝试将我的 Dreamcast 设置为发送电子邮件,将 Dreamcast Live 的说明调整为适合我的电子邮件主机并感觉更好的东西,在 DreamPi 上运行邮件中继,它将从我的常规电子邮件中的文件夹中检索电子邮件主持。它与 Dreamcast 网络浏览器的电子邮件客户端配合得很好,玩起来很有趣,发现电子邮件在过去 20 年里发生了很大变化,但是一旦 DreamFlyer 出现,我就无法哄它发送电子邮件。我想要么它需要一个长期失效的服务器,要么就是不高兴。我想我基本上只是暂时忘记了 DreamFlyer。 2021年的生日,朋友给我发了一个世嘉主题的生日快乐,我的思绪立刻又回到了DreamFlyer。我决定用 DreamFlyer 中的一些东西来回复。毕竟,即使电子邮件在 2021 年没有用处,我也可以截屏并发送。我花了几分钟写传单,用各种邮票覆盖它,截取屏幕并回复。然后我想知道,如果我再次尝试通过电子邮件发送会怎样?所以我输入了我自己的电子邮件地址并点击发送。当它拨通我的 LAN 时,我等待着,然后我迅速地大张旗鼓地收到了一个消息框。它看起来不像我上次看到的错误消息。居然送了!跳到我的手机上,我刷新了我的收件箱,果然,有我的电子邮件,带有“tml”附件和这个页脚:
【附件资料】本邮件由SEGA Dreamcast的邮件软件“DreamFlyer”制作而成。 ● 如果您使用的是 Windows 95/98 或 Macintosh,请从以下网站下载显示软件(免费)。 http://www.dricas.com/dfhour/viewer/ * 联系方式:SEGA Enterprises Co., Ltd. “Dreamcast Support Center” 电话:0120-258-254 Dreamcast 的电子邮件软件。可从该 URL 获得适用于 Windows 和 Macintosh 的免费查看器软件,如果您需要更多信息,可以联系 SEGA Enterprises。整洁!我用十六进制编辑器检查了附件,它没有任何可识别的格式我可以破译3。此时我想看我的电脑查看电子邮件,所以我尝试浏览那个网站。自然,它不再在实时网络上,所以我转向了Internet Archive的Wayback Machine。令我惊讶的是我设法在 CrossOver 中将其设置为 LC_ALL 覆盖为 ja-JP。酷!我启动了它,并收到一条错误消息,抱怨程序已过期,我呃-哦!这是一个挫折,但我使用 Ghidr 副本启动虚拟机它不是最好的,但它的反汇编器迄今为止为我提供了最好的免费结果。我花了几个小时从调用 GetLocalTime 回溯,但最终没有任何明确的结果。后来我知道我尝试过 Ghidra字符串实用程序,但它并不真正知道如何识别这个二进制文件中的任何符号。最终我决定尝试搜索字符串数据,看看是否可以找到与错误消息相关的字符串并从那里开始工作。一个提供了macOS 默认不支持 ASCII 文本以外的任何东西,我很确定我需要 Shift JIS 支持。最终我在 Ghidra 中尝试了同样的事情,在滚动浏览字符串列表后,我在底部敲了一下金子。
在 0x8a71a 处,是 UTF-16 字符串 2001/8/1。我检查了自述文件,确实,它指出该程序将在 2001 年 7 月 31 日之后过期。当然,我心里想,这是为了提供信息,或者只是一个显示字符串,但我将其编辑为一个遥远的未来约会,启动 DreamFlyer,它奏效了!我能够查看我实际编写并从我的 Dreamcast 发送的电子邮件。在这一点上,我想知道页脚提到的 Macintosh 版本 - 我有一个可爱的 PowerBook G4 Titanium,从 Dreamcast 向它发送电子邮件会很方便,所以我搜索了 DreamFlyer for PC 站点的每个修订版。遗憾的是,尽管至少在一页上提到了它,但我只能在 ISAO.net 上找到该 Windows 版本的副本,直到 2001 年该站点更改为不再可用。不过,该消息提到用户可以移动到一个名为 PinkRabbit 的程序,并从 DreamFlyer 导入他们的消息,引导用户将他们的“tml”文件移动到 PinkRabbit 的“邮箱”文件夹中。我的好奇心被激起了,看起来 DreamFlyer 实际上是一个更大的生态系统的一部分!事实上,查看 DreamFlyer PC 版附带的自述文件显示,PinkRabbit 是一个完整的多媒体电子邮件软件系列,包括适用于 Windows 和 Macintosh 的 PinkRabbit 品牌软件,以及适用于 Windows 的 FINAL FANTASY VIII Mail、适用于 Windows 的 Trihoo Mail、Kumomail适用于 Windows 和 Macintosh,以及其他几个。发现这一点后,我将这些信息以及 DreamFlyer 的原始安装程序和我打过补丁的可执行文件的副本整理到 Internet 档案中。抛开这一点,我对这个更广泛的应用程序系列很感兴趣。互联网上几乎没有关于它的信息,甚至在 Wayback Machine 上搜索他们网站上的任何提示也都是空洞的。我尝试更广泛地搜索 PinkRabbit,在删减了很多不相关的搜索结果后,偶然发现了 Takamatsu Yoshiaki (ISBN4-88399-064-8) 的书「PinkRabbitで作る かわいい メール」(“用 PinkRabbit 制作的可爱电子邮件”) ,由 Subarusya 出版)。这本书最初附带一张 CD-ROM,其中包含 PinkRabbit 的两个变体的副本:Classic 和 CUTiE。我和我的妻子已经想从日本进口一些东西,我在雅虎拍卖上找到了一份 350 日元的副本。清单并不清楚是否包含 CD-ROM,但我想我必须尝试一下。至少,我们第一次在互联网上获得了封面的高质量扫描。进一步阅读 PinkRabbit 的网站显示,虽然 Macintosh 版本没有与 Windows 版本同时发布,但它从 1999 年初就已经可用了1999 年 12 月。
订单花了几个星期才通过本地邮件过滤然后传到国际邮件,但最终我在我手中找到了这本书。我轻轻地试验了一下,感觉里面有一张CD!果然,翻到封底,那是粉红色的荣耀。我在一些 OCR 翻译的帮助下仔细阅读了这本书。除了提供包含的文具和邮票的屏幕截图的全彩色部分外,它还揭示了更多有关原始功能的信息。它可以通过注册一个在线帐户免费获得,并有一个配套的在线服务,提供额外的邮票、邮票和文具供下载。还可以选择创建自己的贴纸或图章。整洁的!就像 DreamFlyer 一样,它没有供应商锁定;你可以把它指向你自己的电子邮件服务器就好了。 TransMediaLetter 文件格式是该链中唯一的专有位。 Classic 和 CUTiE 也被发现是该程序的两个变体,它们并没有太大的差异;不同之处在于主题、图形以及文具和邮票。 Classic 更中性一点,但仍然很可爱,而 CUTiE 则全押在糖果色上。启动安装了日语语言环境的 Windows 2000 机器,我弹出 CD。它自动播放网页,提供经典或 CUTiE 选择,以及 CD 中包含的其他文具目录。我安装了程序,启动了它,并没有惊讶地看到与 DreamFlyer 相同的到期消息。我不确定他们是否会这样做,但我想他们自己的版本也会过期是有道理的。根据我从 DreamFlyer 获得的知识,我很快就在 srabbit.exe 可执行文件中找到了类似的到期日期,即 0x900fa。这个版本的使用限制到 2003 年底。我和我在 DreamFlyer 上做的一样,再次打开它......收到了相同的到期消息!我检查并重新检查了我的工作,尝试更改另一个 prabbit.exe 可执行文件中的日期,但没有多少摆弄日期使其正常工作。奇怪的!查看提供的自述文件,我很快了解到,除了引用的 2003 年 12 月 31 日的到期日之外,它还包括一个 31 天的试用计时器。使用期限はインストール后31日です。2003年12月31日以降はご使用になれません。
建议用户可以简单地注册一个帐户并在发生这种情况时下载更新版本。不幸的是,这个注册系统在这个阶段早已不复存在,这个要求几乎保证没有副本幸存下来。嗯,这不会完全阻止我。 DreamFlyer 已经可以工作了,它显然是非常相似的代码,如果不一样的话,所以我稍后会回来。我转而将注意力转向 Macintosh 版本。打开我的 PowerBook G4 Titanium 上的 CD,显示了一对供安装人员使用的 StuffIt 自解压档案,以及与 Windows 版本类似的 HTML 目录。我安装了它,然后启动它。果不其然,尽管是苹果白金版的窗口边框,却有着和Windows版一样的限制,早就过期了。我很快发现 Macintosh 版本在应用程序的数据分支中也有到期日期,这次是 ASCII 字符串而不是 UTF-16。奇怪的是,将此字符串更改为一个遥远的未来日期解锁了应用程序的功能。在这一点上,我有点困惑,并且发现自己在逆向工程 Windows 应用程序方面有点超出自己的深度,于是我拨打了在线求助电话。与此同时,我检查了另一个版本,结果发现这两个变体在两个平台上都有相同的可执行文件,这会使修补更简单一些!宁次好心接了电话。将我的笔记连同 Windows 安装程序的副本一起发送,他着手对到期错误进行逆向工程。一路上我们发现了一些奇怪的东西,比如一个神秘的调试模式,它被一个 debmode.ini 文件和可执行文件一起激活,它似乎连接到 ftp.gao.co.jp 5 上的长期离线 FTP 服务器。没多久,忍二就找到了负责的套路。原来是在%WINDIR%中存储了一个名为SRABBIT.001的文件,并使用这个文件的创建日期来控制到期时间。此外,处理此问题的代码会将文件的创建时间增加 32,400 秒(或 9 小时),这显然是为了实现日本标准时区。这意味着在其他时区,Windows 上的试用期实际上不会在安装后的几个小时内开始。果然,将文件的创建时间调整几个小时就解锁了应用程序。太棒了,被 90 年代后期的时区错误挡在了 Windows 上。 😂 当然,这不是永久修复; 31 天的试用期仍然适用,这只是意味着它可以解决。进一步的调查最终揭示了导致此问题的例程正在从可执行文件 6 中的另一个 UTF-16 字符串中检索信息。这个字符串是 0x90182 处的字符串 SRABBIT.001,31。结果表明文件名,以及以天为单位的试用期的持续时间。
幸运的是,为了我们的目的,程序员在这个例程中编写了一个空检查,这意味着将它更改为表示一个空字符串(通过将第一个字节更改为空字节)阻止程序创建或检查 SRABBIT 的创建日期。 001 文件,并且表现得好像它根本不是试用版! Windows 锁定被打败了!有了这些知识,我又回到了 Macintosh 版本,启动了 Sherlock,并搜索了“SRABBIT”。很快我就被指向了应用程序旁边的 tmailbmp 文件夹。有我们的试验控制文件。那么,这些似乎很可能使用相同的代码!我将应用程序弹出到 HexEdit 中,发现 SRABBIT.001,31 字符串也存在于数据叉中,位于 0xefd1f。考虑到 Macintosh 作为 Pascal 优先系统的历史,这似乎不是以空字符结尾的字符串,这让我担心它可能需要更复杂的修补。我也找不到 Pascal 风格的长度指示器,并且在仅仅破坏可执行文件之前更改字节,但结果证明空字节工作得很好!两个版本都已解锁。 🎉 做完这一切后,Misty 将 PinkRabbit CD-ROM 提交给 Redump,并将副本放在 Internet Archive 上。我还贡献了提取和修补的副本,就像我在 DreamFlyer 中所做的一样。现在两者都可供任何人再次玩耍。深入研究这个 90 年代的人工制品,其中可爱是主要指令,这很有趣。我真的希望更多的软件专注于变得可爱,如果他们这样做,计算机会更有趣。鉴于可执行文件是相同的,PinkRabbit 只是在它存储的目录中查找资源文件。这意味着如果您将 Windows 版 DreamFlyer 中的 tmailbmp 文件夹复制到 Macintosh 版 PinkRabbit 中,Macintosh 版 PinkRabbit 可以成为 Macintosh 版 DreamFlyer!这使得世嘉的变体似乎从未得到其承诺的 Macintosh 版本这一事实更加令人费解。 1 虽然在技术上可分为基于 NetFront JV-Lite 的那些和基于 PlanetWeb 的那些,但每个地区都有自己的公式,欧洲有几个版本的 Dreamkey,北美有少数 Dreamcast Web 浏览器迭代。日本有一系列梦幻护照的迭代,具有不同程度的可爱:梦幻护照 3(我个人最喜欢的)、Hello Kitty 梦幻护照和樱花大战梦幻护照。不过,可能还有另一篇关于该内容的博客文章。 😅 3 自述文件提到了 Independent JPEG Group 的版权,但我在二进制文件中找不到任何 JPEG 图像的决定性标记。我怀疑他们要么滚动自己的容器,要么混淆内容。此外,如果您从参考段落跳到这里,则有轻微的剧透警告,但我让它正常工作,并且图像看起来非常像是 JPEG 压缩的。
4 多么可爱的网页介绍Macintosh 版本! COLABO 的某个人显然很关心。甚至还发布了将 DreamFlyer 与 iMac 外壳颜色相匹配的皮肤! 5 我还没有弄清楚这是做什么的,但我可能不得不启动一个 FTP 服务器,看看有一天它会是什么样子。也许他们以这种方式分发了测试版/调试版? 6 这些后来被证明是 Windows 字符串资源,我很遗憾没有早点拿出 Resource Hacker 🥲