林登布鲁克的冒险 Adventures of Natalie Brooks 解包器 ( g+ H1 Q* Y$ y) y9 c1 c; z
要配合QuickBMS使用。 3 l$ B/ c2 x, u; ^! c. J- y" D
$ S7 n0 B* m" o-----------------------------------------------------------------
! `3 k+ A2 L" _2 l& ^+ k: }2009.1.11 第1次更新
! Y/ H# H. j o9 W+ w& G
x* g6 j ^! L我大致看了一下,觉得肥牛分析的还有些问题。 / r) {4 T2 |6 u
我先纠正第1个问题。文件的结构应该是这样的:
9 x# g' J9 S( G: O* h, z- m字体文件名长度 4bytse 7 J2 g0 L/ H+ x9 H: J U, d
字体文件名 nbytes 4 J3 V5 b' o9 f; \# G) y1 S0 T- O
字体高度 4bytse
5 [; ^* m. V5 m9 x# q. l$ G字体数 4bytse 6 R- k% b8 G' x/ l
字模数据 字体数X24 bytes # m8 }" F, j! |& S4 Y
尾部未知数据 nbytes : b C9 r9 X n' {3 z1 U: c
3 d& P% v& q1 `6 x. u- v; F" a7 s, m; O# F
肥牛可能只分析了1个字体文件,正好那个文件的字体高度是0x18. 所以误认为那是每条记录的字节数。其实再看看其他文件,应该会发现那是字体高度的可能性最大。
4 c# e5 R0 x- R3 J2 F1 L- r4 ]. a* L# C$ |, F6 y7 _/ a% k* x) t
------------------------------------------------------------------ 8 \0 P; Q7 P7 i& `5 j
2009.1.11 第2次更新
9 C9 C$ n2 E, Y# w肥牛说字符是按照ASCII码的顺序排列。我不知道是怎样看出来的?
& O) M% I; S9 C据我观察字符并不是按照ASCII码的顺序排列。
& K" C% y" y$ T% A K% }0 u7 S& p. ?) v' v, Y
首先,我们估计在每条记录的24个字节中,有4个字节记录了这个字符的编码。 4 b8 Y7 ~7 @9 V: N, |
我们知道A这个字幕,ascii码和utf-8是0x41,utf-16码是0x41 0x00.
/ V1 o* J: C- r# e$ Q8 |: O如果A-Z按顺序排列的话,我们会在字体定义文件中发现等间距(24byts)的 1 v( P0 m g9 K
0x41,0x42....这样的数据。但是实际上文件中并没有发现,
1 G, v) v1 `1 R所以字符应该不是按照ASCII码的顺序排列。2 M5 W% {' ?' V6 r j1 C
0 v/ \3 P9 g: E另外,肥牛说索引文件会长度由26K变成了1M以上。4 W. Y+ i8 B6 s$ _; t! f3 J) r) l) g
我不知道肥牛是如何算出来的,每条记录24bytes,汉字算它9000个字。# D' k# ^$ ]# D- e: ^; H
算下来也就216K左右。远小于1M。 |