wnving 发表于 2009-5-3 22:50:24

浅析ACCESS数据库(MDB)结构

拎胡冲                                       QQ:86081166                      ACCESS2003
                                 
在与网友讨论ACCESS的时候,曾有网友提出ACCESS是复合文档,这种说法有一定的道理,如下图,在MDB文件当中,也有象WORD和EXCEL一样的文件头,同样, MSAT 、SAT以及root entry都是存在的,只是位置发生了偏移,并非如EXCEL一样在偏移512=0。那么ACCESS是不是就是复合文档呢?

再进一步分析发现,MDB文件与SQL SEVER以及 ORACLE等大型数据的存贮方式一样,采用分页存贮,每8个扇区为一页。而ACCESS分:数据库定义页、数据页、表定义页、中级索引页、叶索引页、点阵图页.那么可以看到,ACCESS综合了复合文档和数据库的两种特性于一体。从二进制的结构来看,ACCESS为数据库。
现在我们就按照数据库的结构来分析这个MDB,前面介绍过,ACCESS已知的五种类型页。每个类型页的第一个字节如下:(就不再一一截图)
0x00数据库定义页
0x01数据页
0x02表定义页
0x03中级索引页
0x04叶索引页
0x05点阵图页

0x00为数据库定义页,也就是我们常说的“文件头”所在的页,逻辑为第一页,第一个扇区,以下是文件头的结构:


偏移512=0为00H,是MDB文件的开始,颜色标注的为固定值5374616E64617264204A6574204442H,(按照RAW方式恢复文件时,可搜索此固定值)。在偏移0x14位置为ACCESS的版本,此处为JET4,即我们常说的OFFICE2003 此处的数值会根据版本的不同会有不同的变化,现在的OFFICE2007此处的数值为02,我们暂且称他为JET5。以上的分析,或许能帮你修复一些简单的MDB文件错误。
但由于OFFICE文档的格式一直是微软公司的技术秘密,至今未向外界公布,而且采用了OLE/COM技术,数据结构非常复杂,要完全揭开OFFICE的秘密,还有待于各位网友的深入研究。

mahuafeng 发表于 2009-5-3 23:31:05

谢谢休息休息休息休息休息休息休息休息休息休息休息休息系系系

xiongdeyuan 发表于 2009-5-4 09:18:00

x谢谢啊

lhx0915 发表于 2009-5-4 10:46:51

谢谢,认真的顶一下(38:

reeker 发表于 2009-5-5 14:28:56

大侠就大侠!得再顶!

zhl-009 发表于 2009-5-6 11:11:54

认真的看一下在顶!!!。。。。

wang1231968 发表于 2009-5-9 17:54:57

顶一下。。。。。。。

recall_hy 发表于 2009-5-15 09:28:47

帅呆了~
学习下~

tiangtan 发表于 2009-5-16 23:09:21

学习了。学习了。学习了。

chfeng 发表于 2009-6-3 08:58:57

帅呆了~
学习下~
页: [1] 2 3
查看完整版本: 浅析ACCESS数据库(MDB)结构