拎胡冲 发表于 2009-5-3 22:13:20

浅析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的秘密,还有待于各位网友的深入研究。
有兴趣的朋友,可以加我QQ共同讨论86081166


以上内容仅供参考!

浪子尘埃 发表于 2009-5-3 22:14:24

冲哥出好东东了

rainhe 发表于 2009-5-3 22:15:52

加分了。

拎胡冲 发表于 2009-5-3 22:19:33

谢谢杜老师了·

浪子尘埃 发表于 2009-5-3 22:20:34

论坛高手如云

mahuafeng 发表于 2009-5-3 22:24:20

xxxxx谢谢休息休息休息休息休息休息休息休息休息休息休息休息

ijcl 发表于 2009-5-3 22:27:43

验证了我说access复合文挡的说法,抨击了某些人的无赖嘴脸,另外,mdf碎片程序一周左右将开始测试.

gaoshuang78 发表于 2009-5-3 22:53:42

支持一下,嘿嘿

nhqwsj 发表于 2009-5-4 09:01:00

好东西啊,兄弟

yufeng 发表于 2009-5-4 09:14:25

你太强了,继续能把都搞明白就好了   呵呵

mzzsm2g 发表于 2009-5-4 09:22:00

:30| :30| :30|

awolfs8888 发表于 2009-5-4 09:57:19

高手就是高手。。。。。。支持一下。。。。。。。

xiongdeyuan 发表于 2009-5-4 10:09:42

又看到冲哥的文章了

reeker 发表于 2009-5-4 15:01:55

精品!顶一下!

dgtan 发表于 2009-5-4 17:04:11

不錯,這樣的文章較難得...記下了.樓主有哪些參考文獻可以多發一些來...呵呵
页: [1] 2 3
查看完整版本: 浅析ACCESS数据库(MDB)结构