对UCDOS安装程序的解密 广 西 黄彦松 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文件就又可以正常运行了。(广西黄彦松)