Hacker News 中文摘要

RSS订阅

击败40年历史的加密狗保护机制 -- Defeating a 40-year-old copy protection dongle

文章摘要

作者帮助朋友破解了一个40年前的软件加密狗,该加密狗连接在Windows 98电脑的并行端口上,用于保护一款用古老RPG语言编写的会计软件。通过逆向工程,作者成功绕过了这个历史悠久的硬件保护措施。

文章总结

标题:破解40年前的软件加密狗——Dmitry Brant的技术探索

核心内容: 1. 考古发现 - 作者在帮助会计事务所迁移一套使用了40年的古老会计软件时,发现该软件需要连接并行端口的硬件加密狗才能运行 - 软件基于比COBOL更古老的RPG语言开发,最初运行在IBM System/3等中端计算机,后移植到MS-DOS系统

  1. 加密狗分析
  • 加密狗由"Software Security Inc"公司制造,标签已磨损,仅能辨认"Stamford, CT"和"RUNTIME"字样
  • 该公司的历史记录显示其1990年代曾参加SIGGRAPH会议,并拥有软件保护相关专利
  1. 技术破解过程
  • 通过磁盘镜像分析发现完整的RPG II编译器(Software West Inc开发)和会计软件源代码
  • 使用Reko反编译工具分析发现:
    • 编译器会向生成的可执行文件注入相同的加密保护逻辑
    • 保护程序通过BIOS数据区检测并行端口地址
    • 关键保护例程仅90字节大小,且输出结果为固定值
  1. 破解方法
  • 通过反汇编发现保护程序最终返回的BX寄存器值应为7606h
  • 采用暴力破解法测试256种可能,仅需修改4字节代码即可绕过保护
  • 破解后的编译器生成的可执行文件将自动继承破解后的保护逻辑
  1. 后续计划
  • 作者计划在去除个人身份信息后,将这套RPG II编译器作为计算历史文物公开
  • 呼吁任何了解Software West Inc公司背景的人士提供更多历史信息

技术细节保留: - 使用Reko工具进行反编译和代码分析的过程 - 并行端口通信的检测机制(BIOS数据区读取) - 具体破解方法(修改4字节代码为MOV BX,7606h和RETF) - 保护程序的固定返回值特性

删减内容: - 部分重复的技术分析过程 - 与主要破解过程无关的历史背景细节 - 部分图片描述文字(保留关键图片说明)

评论总结

这篇评论围绕软件加密狗技术展开讨论,主要观点如下:

  1. 怀旧与实用性

    • 多位用户回忆早期使用加密狗的经历(评论1/7/10)
    • "My father used to have a program like that...Good times. Horrible dongle"(评论1)
    • "We have old mission-critical Windows 2000 PC...with attached dongle"(评论7)
  2. 技术实现讨论

    • 关于简单加密机制的有效性(评论2/3/6)
    • "Seems like an appropriate amount of engineering"(评论2)
    • "Many cracks were even simpler...just alter the JE/JNE"(评论3)
    • 有用户指出恒定返回值假设不一定成立(评论6)
  3. 商业应用疑问

    • 对加密狗未普及的原因探讨(评论4)
    • "Why wasn't this more widely used? Clearly more effective than CDkey"(评论4)
  4. 破解技术分享

    • 用户分享80年代游戏破解经验(评论8)
    • "Changed executable header to point to correct start address"(评论8)
  5. 现代应用场景

    • 指出老旧系统仍在生产环境使用(评论5/10)
    • "Nice contrast to the infinite AI hype cycle"(评论5)
    • 提到通过模拟器延续旧软件使用(评论10)
  6. 硬件好奇

    • 对加密狗内部结构的好奇(评论9)
    • "Wonder if it's programmable or just simple circuit"(评论9)

不同观点保持平衡:既认可加密狗的有效性,也指出其技术局限性;既有怀旧情绪,也有现代解决方案讨论。