最近有空………
想把MsgEx.db解密来研究一下……
这里说一下它的存储格式吧……
1 | 19 '' |
2 | 21 '' |
3 | 48 '0' |
4 | 65 'A' |
5 | 48 '0' |
6 | 48 '0' |
7 | 48 '0' |
8 | 48 '0' |
9 | 70 'F' |
10 | 70 'F' |
11 | 48 '0' |
12 | 48 '0' |
13 | 56 '8' |
14 | 54 '6' |
15 | 48 '0' |
16 | 50 '2' |
17 | 23435 '宋' |
18 | 20307 '体' |
19 | 13 '/r' |
当年解密随便一条聊天记录,它都会以类似上面的字串作为终结。
其实这串字符是记录文字的格式。
1 | 19 '' |
2 | 21 '' |
据我推测,是起始的标记。
3 | 48 '0' |
4 | 65 'A' |
这2个字段比较特别,对于(3)来说,其实是1个16进制数,即二进制的 0000
其中,
第1个 0 代表 是否 粗体
第2个 0 代表 是否 倾斜
第3个 0 代表 是否 下划线
第4个 0 ,与下一个字有关,
对于(4),它是代表字体大小,当字体大小超过16时(包含16),用1个16进制数无法表示。
这时候,将第4个0会被标记为1,然后字体大小被表示为16+(4)的值
即不是粗体,不倾斜,没有下划线的 18号大小的字,会表示如下:
3 | 49 '1' |
4 | 50 '2' |
而
5 | 48 '0' |
6 | 48 '0' |
7 | 48 '0' |
8 | 48 '0' |
9 | 70 'F' |
10 | 70 'F' |
则代表字体的颜色……
剩下的
11 | 48 '0' |
12 | 48 '0' |
13 | 56 '8' |
14 | 54 '6' |
15 | 48 '0' |
16 | 50 '2' |
估计是字的编码……具体我也没了解……
接着就是
17 | 23435 '宋' |
18 | 20307 '体' |
代表字体的名称
最后的
19 | 13 '/r' |
其实是代表值 13 ,也就是 (3)-(10) 和 (17)-(19) 的字节数(汉字是2个byte的)的数量……
P.S. : 以上都是我自己观察研究得出的……可能有错……请大家指教……