请看一下这个
7 ^/ a( J. y" ~* V& F% Phttps://www.chinaavg.com/read.php?tid=20978
" p- q$ f5 P" h( d$ D) L A$ q9 p+ P
" E4 V" O, B0 j: q这是一段解vbf文件的代码$ l, d, j" V' I0 h2 f, |
int vxbg_extract(FILE *fd) {' @8 G8 B- C6 L# R
u32 offset,% s9 t6 }8 V6 a# e6 i. o
start,
. i) ~7 k2 i5 J* p5 T* A size;
( t% L9 a# e" \" H/ x int i,
' H* }, C4 E; n9 l c,
9 T# h& C4 [$ O files = 0;) b' U' v$ y2 Y u+ k- W$ c, ~! }
u8 fname[BUFFSZ + 1];
3 |3 u+ ]0 _ R0 N4 G- [# p: B2 w
fseek(fd, 4, SEEK_SET);
6 q6 g- l( D2 t2 i5 l if(FREAD(&offset, 4, fd)) goto quit;
/ }) Z6 N: I/ f% d& H, j
$ | g8 W. o4 z* @- w! w printf("\\n"2 P* @1 x+ P0 a" s; H: j( Z
" offset size filename\\n"6 z7 R/ g8 x4 W5 d3 n+ R; _" N7 D
" ----------------------------\\n");
9 i% M5 P# B$ z$ \
: |/ E9 j. L n0 N# Z offset += 8;5 Y* P' [, w* ~6 p x3 d
for(start = offset; ftell(fd) < start; offset += size) {4 p! G: P3 Y2 J4 V7 P
for(i = 0; i < BUFFSZ; i++) {
) _. [& O7 Y: P+ x E% B3 n c = fgetc(fd);! u( z! ~' ^& f
fname = c;3 y7 f2 J( k: b7 o
if(!c) break;
X8 i! m; F: p2 l3 p/ c, Y. f if(c < 0) goto quit;
) X: X. M2 ~9 A4 B0 g }
& i/ T( r ?/ ~8 n9 t if(FREAD(&size, 4, fd)) goto quit;* r3 R& _# g3 @% ]: N. z' d
, Y& a' T9 e* w6 n
printf(" %08x %-10u %s\\n", offset, size, fname);
# Q9 }- d9 G3 _ W0 I; c, ^ if(!listonly) getfile(fd, fname, size, offset);
" e' [- n9 _: K files++;5 k$ O% i5 _8 x# r0 |( ^
}
/ ~ R0 ~0 P3 q2 gquit:
8 L7 S4 M m. s return(files);
& u0 }0 p2 y, k6 X} |