请看一下这个
% @& w: H; R H/ M& f' Y* Zhttps://www.chinaavg.com/read.php?tid=20978
$ d1 N; t! h' }3 c, V8 k) I/ q/ z7 c- G# ?
这是一段解vbf文件的代码
& _1 u# U5 o: S. v3 P$ ^! @int vxbg_extract(FILE *fd) {
$ G5 ~3 j0 c C5 o u32 offset,
- f! G( A/ u% d G0 g start,
( ^+ h ~* g7 h- T size;
- J6 u5 K) ^0 j$ [- U. l% O/ Z5 K3 c int i,
- T/ m) M7 M8 q: {- Q# _ c,
- s3 C5 d) T- z& j/ k" D* n! B files = 0;
; T3 `1 N+ M4 [) l6 H, y" r u8 fname[BUFFSZ + 1];
5 x- r8 Q# o7 v
5 r" \ b- j- q* U fseek(fd, 4, SEEK_SET);
4 [5 N1 O+ y9 {0 S8 j1 a if(FREAD(&offset, 4, fd)) goto quit;
1 Q7 N* O3 S$ d! v5 \* ?3 A2 C5 A2 S1 W
printf("\\n"
5 Y8 C4 P9 S* |1 M. d " offset size filename\\n"% Z4 [: V7 m. p4 q2 s; m" ~
" ----------------------------\\n");6 [& W/ @' _- `& Z6 z3 f: `
3 b1 I0 g+ |$ c" d1 j) ?
offset += 8;: t. Y8 V' u N( u5 F z
for(start = offset; ftell(fd) < start; offset += size) {
5 T0 K/ E$ E( ?) u7 S$ c for(i = 0; i < BUFFSZ; i++) {/ J. w( ]( M" j
c = fgetc(fd);0 B7 o$ P& Q5 _3 [4 \
fname = c;
8 M2 E' `2 _" a7 s0 v0 f9 ] F if(!c) break;; S0 e6 N+ i3 n9 k7 u" M: \0 d
if(c < 0) goto quit;
3 I( P: V1 }1 x2 K: l/ h' y* p% v }
/ K8 T6 x. d, w2 C, K if(FREAD(&size, 4, fd)) goto quit;
. U1 m9 l/ {# l. h# G
+ S) u% _. U- w, F: s6 m2 p printf(" %08x %-10u %s\\n", offset, size, fname);
% g7 [ b4 P0 Z) q if(!listonly) getfile(fd, fname, size, offset);
: H! \4 l& O) x: X# w files++;
) a1 c9 B( j: p+ j4 | d! v @ }3 Y. Q5 i; ?# s; l8 J- H
quit:6 m; r9 a4 h7 q. V' {
return(files);
$ Y! [9 s5 l7 q2 M4 s$ g} |