请看一下这个4 \; v$ C1 Y, j3 b
https://www.chinaavg.com/read.php?tid=20978
5 X# y0 l' V/ R
1 e& ~* L$ Y/ c* R7 h9 W这是一段解vbf文件的代码
9 l+ t% M2 ?8 E! M3 Hint vxbg_extract(FILE *fd) {" ~( z I/ [" h9 p- N3 c
u32 offset,3 k- V* H" S4 ?" _" V/ ~( `9 V
start,
" t, }( j+ b2 W0 a0 E' a size;
" u* f1 A; x9 y6 H% c4 ~, A int i,2 U X; R0 |, I
c,
* n* ~- E1 D+ p4 u files = 0;
# P6 `! `' d. b0 m- X5 @3 L, n/ Q u8 fname[BUFFSZ + 1];
' z q& A6 f8 a, I: j i1 m3 o( q$ e( {+ y+ F, w
fseek(fd, 4, SEEK_SET);
) d% l6 q4 K3 J) G* ?/ ~, L' q! } if(FREAD(&offset, 4, fd)) goto quit;9 B* B0 k& l& J9 ?! c I
6 Q4 g1 Z& ^; C z( Q D4 f0 p
printf("\\n"
7 K/ y$ u% l8 v1 E2 C4 O. f5 @ " offset size filename\\n"4 a" b* p& P( F& r$ L
" ----------------------------\\n");& C+ H# c: `* x2 q
; f1 b' ~% u1 F! g$ O% k0 m- Q
offset += 8;
F* U/ |, D5 O1 D8 X/ C for(start = offset; ftell(fd) < start; offset += size) {2 i; c: P* u* [
for(i = 0; i < BUFFSZ; i++) {, Z8 k' S, ?* F2 w8 g# N% c3 L
c = fgetc(fd);
X( L9 j. o: L; v3 E) B4 h fname = c;
" b9 l$ y6 t% Z- c0 D$ q if(!c) break;
4 H' V3 P% S% @- Z2 f1 B" p if(c < 0) goto quit;% G$ F5 N$ x" U; v9 K5 {5 i
}- M) D2 z. t- y6 G7 B7 G
if(FREAD(&size, 4, fd)) goto quit;9 \+ h& ]4 W6 ]; {
H5 C% W! a/ x1 n. P) F1 } printf(" %08x %-10u %s\\n", offset, size, fname);. m0 L; i* m# z) o3 a
if(!listonly) getfile(fd, fname, size, offset);
: W. I% n, a; D files++;
. O/ X) ?( N: F }
& [9 G- d" l q* [: \quit:
% Z. d. a" K1 q9 {/ I' y return(files);
, x {5 ?9 S( A4 i6 @} |