Rars:Rust RAR 实现,主要由法学硕士编写

2026-05-13 1 阅读 davidsong
? Rust 中的 rars,兄弟,我与法学硕士一起完成了几个不同的逆向工程项目,并且认为是时候将 clankers 推向极限了。每个 RAR 版本的 RAR 压缩器应该花费大约 5 年的时间,这就是为什么没有人费心的原因。如今,我们需要 5 周的晚上和周末来完成 OpenAI Codex 5.5 和 Claude Opus 4.7,并且花费大约 40 英镑(大量补贴的)代币。是的,它有 55k 行斜线,不,它没那么快,而且它差点让我被 OpenAI 封禁。但它有效。 SPECIF~1.RAR RAR 最初是 DOS 的 LZSS 压缩器,作为 Warez 场景的首选格式而流行至顶峰。与 WinZip 争夺功能平价和霸主地位时,WinRAR 拥有多卷支持、恢复记录甚至内部虚拟机,但其 USP 始终是卓越的压缩。这是一种从未停止成长的中年业态,有房子那么大。 unrar 附带源代码,但该代码实际上并不是免费的,有点讽刺的是 RAR 的作者 Eugene Roshal 并不是盗版的忠实拥护者。因此,理想情况下,我需要根据规范实现我的版本,而规范实际上并不存在。创建一个解压器的艰巨任务包括从野外的免费解压器源中提取代码 - unar、libarchive、UNRARLIB,以及随机网页和民间传说。然后我让克劳德尽可能多地进行记录。每次通过后,我都会对其缺少的功能进行测试,并维护一个持续的间隙文档,其中包含难以了解的内容。这种情况在上下文重置之间持续存在,需要将令牌流入间隙。我们花了两周的时间来进行准备,直到我们将大部分读者方面的内容记录下来。然而,作者方面仍然是虚构和猜测的混合体。接下来,我获取了 DOS 和 Windows 的 RAR 二进制文件,并开始制作测试装置、十六进制转储并在 Ghidra 和 DOSBox-x 中进行传递,以了解它们是如何打包的。再工作一两周,差距就开始缩小。现在我有了一些可能有用的东西; RAR 文件格式每个版本的规范文档: ? 规范 构建一些东西 由于确信自己是错误的,Codex、Claude 和我开始构建一个(不稳定的)兼容的 Rust CLI。工作流程的形状是这样的:使用规范 Opus 工作很棒,但它往往会热情地生成代码,而忽略了更大的图景。 Claude 需要补救、重构和严格限制,但非常适合谈论策略或架构。当你独自一人时,Gippity 5.5 会保持目标,但如果你和它聊天太多,它就会让你陷入困境。我可以向 Codex 提供规范文档,并基本上告诉它继续进行。非常清爽。在按照规范工作时,Codex 会由于网络违规而随机停止,我需要手动压缩才能继续。最终我必须得到 OpenAI 的验证才能阻止这种情况发生。事实证明,在规范调查期间的某个时候,克劳德需要了解真实性验证,这是一项付费功能。它利用充满逆向工程工具的环境破解了 WinRAR 并绕过了产品注册,然后在规范中尽职尽责地记录了其犯罪行为。这些文档在被查看后触发了 OpenAI 的警报并阻止了它的发展。我将其从 git 历史记录中删除,并决定根本不实现该功能。一只脚踩刹车你必须密切关注机器人,并在事情开始发臭时打断。如果你不这样做,那么他们就会对每个问题和每个测试进行特殊处理,丑陋的模式将在你的代码中传播,并且你稍后将需要昂贵的重构。我本应该做得更多,但我没有,后来我为此付出了代价。代币有补贴,但这浪费了我的时间。在过去 15 个月左右的时间里,我的爱好就是对克劳德大喊大叫,所以我越来越擅长干预。我喜欢它,即使它损害了我的个性。我在 Codex 上发誓的次数要少得多,也许是因为它速度更快,或者不像一个咧着嘴笑的白痴,但可能是因为它平淡而专业。这可能是一件好事,但我还不确定。测试,对于科学来说,测试太多了。脆弱的测试、无关紧要的覆盖范围、excessly_long_test_names_that_fill_your_screen,这些在处理这种规模的东西时至关重要。它们提供的统计质量会扭曲文本生成,当机器人偏离滑雪道或试图抄近道时将其拉回正轨。因此,请进行大量的单元测试和尽可能多的覆盖范围。我们以后总是可以删除它们,对吗?对吧?……所以测试可以使其保持良好状态,但实际运行代码才能使其与现实保持一致。因此,真正的工作是关于固定装置、预言机以及更新错误的规范。为此,Codex 清除了之前已通过至少十轮审查的自动填充废话(“幻觉”)。因此,事实证明,根据经验与现实进行磨合是最好的信号来源,并且经过足够的时间,规范就被制定出来了。