利用DEBUG恢复数据库文件 重庆 冯中明 1995-04-14 1.设损坏库文件名ERROR.DBF,将损坏库文件拷贝作备份即: C〉COPY ERROR.DBF AERROR.DBF 2.C〉DEBUG ERROR.DBF -R CX XXX0 -R BX XXX1;以上两步是将文件长度值转化为16进制数值。 -S 100 (XXX0+XXX1) 00 XXX2;(记该值为A1) 3.求库结构字段个数及每个字段的长度 利用-D 100 A1查询 100+(2i+1)×10地址处的16进制值;记下所有的值,并将其转化为10进制数,记各字段长度为x1,x2,x3,...,xn。其中I为1,2,3,…直到100+(2i+1)×10≤A1。 令Y=x1+x2+...+xn;Z=(n+1)×32+1(Y为数据库字段和,Z为空库文件长度)。 4.求记录个数 利用公式:记录长度=(待修复库文件长度-Z)/(Y+1),令其为B。 5.将B、V转化成16进制,分别记为B1、Y1。 6.C〉DEBUG ERROR.DBF 利用-E104,E105,E106,E107依次将其修改成B1对应值(注意低位字节在前,高位字节在后)。 利用-E108,E109将其值分别修改成Y1对应值。 -S 100 (XXX0+XXX1) 1A XXX3 -E XXX3 XXXX:XXX3 1A,00 -W -Q 7.进入数据库系统,利用USE ERROR BROW 可以发现所有记录全都恢复了!综上所述,可以看到,它既给我们提供了一起恢复数据文件的方法,也为我们提供了一种对数据库文件加密的方法,有兴趣的朋友可以逆着上述步骤返回去,便可以得到验证结果。 上述方法DBASEⅢ、FOXBASE+数据库系统和PC/XT、AT,AST 386/33上通过。本方法也可用PCTOOLS(PCSHELL)来实现。(重庆 冯中明)