xiand.ai
科技

技术人员破解运行近四十年的RPG会计软件硬件加密狗

一位技术人员成功逆向分析并绕过了一个用于保护一个运行在Windows 98环境下的老旧RPG语言会计软件的硬件加密狗(Dongle)。该软件系统运行在IBM中端机后移植到MS-DOS环境,并通过LPT并行端口与加密设备通信,研究者通过逆向汇编最终确定了验证码。这一工作揭示了上世纪80年代企业级软件的保护机制细节。

La Era

Engineer Bypasses 40-Year-Old Hardware Dongle Protecting Legacy RPG Accounting Software
Engineer Bypasses 40-Year-Old Hardware Dongle Protecting Legacy RPG Accounting Software
Publicidad
Publicidad

近日,技术研究人员Dmitry Brant成功解除了一个困扰某会计事务所近四十年的软件访问限制,该限制源于一个老旧的硬件加密狗,该加密狗用于保护一套基于RPG(Report Program Generator)语言开发的会计软件。

该会计系统运行在一个仍在使用Windows 98的PC机上,并通过DOS控制台窗口执行,其核心依赖于连接至并行端口的硬件加密设备才能启动和运行,这在早期的企业级软件中极为常见。

研究人员通过对原始硬盘进行镜像并尝试在模拟器中运行,发现加密逻辑内置于RPG II编译器(RPGC.EXE)中,编译器在生成所有可执行文件时都会注入相同的防盗版检查,这解释了加密狗上可能存在的“RUNTIME”字样。

使用Reko等工具对编译器的反汇编分析显示,加密验证例程位于一个仅有0x90字节的代码段内,并且该例程通过读写并行端口的I/O端口进行通信,具体涉及BIOS数据区的并行端口地址检测。

关键发现是,该验证例程在执行完毕后,其返回结果(存储在BX寄存器中)似乎是一个恒定值,表明无论与加密狗的交互过程如何复杂,最终的输出值是固定的,这为绕过提供了基础。

研究人员首先尝试修补代码,强制BX寄存器返回一个测试值,随后通过汇编分析确定高位字节(BH)必须为0x76,这意味着只需暴力破解低位字节(BL)即可。

通过编写脚本在DosBox中进行自动化测试,研究人员成功地对BL寄存器的256种可能性进行了穷举,最终确定正确的“魔术数字”为0x06,从而使BX寄存器最终值为0x7606,成功绕过了硬件验证。

这项工作不仅使客户能够迁移其遗留数据,也为研究上世纪软件保护技术提供了宝贵的案例,展示了早期软件安全措施的脆弱性与技术人员的逆向工程能力。

Publicidad
Publicidad

评论

评论存储在您的浏览器本地。

Publicidad
Publicidad