rt
用来维护一些旧的程序... ...

解决方案 »

  1.   

    网上搜wry.dll文件(实际上就是dbf文件)格式,下文为转载:我分析了这个文件的格式,目前如下结论:格式如下:A。文件头,共8字节
    B。若干条记录的结束地址+国家和区域
    C。按照从小到大排列的若干条起始地址+结束地址偏移,定长,7字节
    D。所有的IP都是用4字节整数记录的,并且遵照Intel次序,高位在后,低位在前。
    E。所有偏移量都是绝对偏移,就是从文件最开头计算。
    F。除了文件头用了两个4字节偏移,其余偏移量都用3字节。
    G。所有的偏移量也是低位在前,高位在后
    H。采用了一些字符串压缩技术1。文件头,共8字节
    FirstStartIpOffset:4          第一个起始IP的绝对偏移
    LastStartIpOffset:4          最后一个起始IP的绝对偏移2。起始地址+结束地址偏移记录区
    每条记录7字节,按照起始地址从小到大排列StartIp:4           起始地址,整数形式的IP
    EndIpOffset:3    结束地址绝对偏移3。结束地址+国家+区域记录区EndIP:4
    国家+区域记录:不定长4。国家+区域记录,有几种形式
    4.1。
    国家字符串,以 0x0 结束
    区域字符串,以 0x0 结束4.2。
    Flag:1                           标识取值:  0x1,后面没有Local记录
                                                        0x2,后面还有Local记录
    sCountryOffset:3            实际的字符串要去这个偏移位置去找
    LocalRec:不定长,可选     根据Flag取值而定。这个记录也类似Country,可能采用压缩4.3 LocalRec结构一
    flag:1                           还不是十分了解这个flag含义,取值 0x1 or 0x2
    sLocalOffset:34.4 LocalRec结构二
    sLocal:不定长                普通的C风格字符串注意:sCountryOffset指向的位置可能依然是4.2格式的,不知道为什么这样设计。
    Flag取0x1时,sCountryOffset指向的位置可能是Flag为0x2,这时,LocalRec也在这里寻找。现在不明白当记录Local的位置遇到0x2的标志意味着什么。在qqwry.dat中,似乎存在一些错误。
    个别的记录Local会被写为:
    0x2,0x0,0x0,0x0 
    根据规则,应该到文件最开头去寻找,可是,文件最开头显然不是记录这些的。愿意跟我探讨,请到我的论坛
    http://strongc.51.net/d2x/bbs/