对UCDOS安装程序的解密

Author: 广 西 黄彦松 Date: 1993-04-23

        观察死循环状态,光标在不停闪动,估计死循环位于显示上。首先,要找到显示子程序。运行DOS的debug,用命令T、G,通过跟踪、设置断点运行install.exe,发现死循环入口CALL1AA2,分析1AA2子程序,其中一段如下:
        ……
        :1AEF  MOV  SI,38FC
        :1AF2  CMP  SI,39EC
        :1AF6  JZ    1AA2
        :1AF8  CMP  WORD  PTR[SI],+00
        :1AFB  JZ    1B02
        :1AFD  ADD  SI,+30
        :1B00  JMP  1AF2
        …  …
        如[38FC]、[392C]、[395C]、[398C]、[39BC]的值均不为00,则在1AA2-1B00之间不断循环显示。由此可知,install.exe程序是通过对这五个字的读写来控制运行.每运行一次,该程序就将其中的一个字置为非00,直到全为非00,就不再继续执行,从而达到系统只能安装五次的目的。
        要使它能继续正确运行,就必须将这五个字全部恢复为00。为此,可用寻找对应关键字的方法,用d命令查看[38FC]的内容,记下几个字节内容作为关键字,依次运行
        REN  INSTALL.EXE  INSTALL.AAA
        DEBUG
        INSTALL.AAA
        -S0000FFFF  关键字
        3BFC
        E3BFC
        E3C2C
        E3C5C
        E3C8C
        E3CBC
        W
        Q
        COPY  INSTALL.AAA  INSTALL.EXE
        置install.exe文件中相应的五个字为00。这样,install.exe文件就又可以正常运行了。(广西黄彦松)