-
-
Notifications
You must be signed in to change notification settings - Fork 38
/
VXDLIB_UTF8.txt
479 lines (379 loc) · 21.8 KB
/
VXDLIB_UTF8.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
FREEWARE:
This software may NOT be distributed or bundled with any product
that is sold for commercial profit without the explict permission
of the author. In cases where the author has consented, the PKUNZIP(tm)
authentication message which normally reads :
Authentic files Verified! # EYC098
Tenth Planet Software International
will additionally indicate the commercial entity to which permission
has been granted. If authentication is not present, please contact
the author to obtain a bona fide copy.
Disclaimer:
The author hereby disclaims all warranties relating to this software,
whether express or implied, including without limitation any implied
warranties of merchantability or fitness for a particular purpose.
The author will not be liable for any special, incidental,
consequential, indirect or similar damages due to loss of data or any
other reason, even if the author or an agent of the author has been
advised of the possibility of such damages. In no event shall the
author's liability for any damages ever exceed the price paid for
the software, regardless of the form of the claim. The person
using the software bears all risk as to the quality and performance
of the software.
VxDLIB:
This tool was primarily designed to extract Windows Virtual Device
Drivers (VxDs) from W3 (WIN386.EXE) & W4 (VMM32.VXD) format archive
files. The W4 format is unique to Windows '95 and is a compressed W3
image, the compression algorithm is the same as that used by DoubleSpace
(aka DriveSpace) and MRCI (Microsoft's Realtime Compression Interface),
and uses a Lempel Ziv (LZ) technique to replace repeating data patterns.
This tool can also unpack a W4 file so that tools like Andrew Schulman's
W3MAP can work as they did with Windows 3.xx. Unpacking the file will
also allow you to examine the file with regular hex editors. Unpacked
files will typically take up far more space, my copy of VMM32.VXD went
from 0.7MB to 2.0MB. A temporary file is created during pack/unpack
operations, so this program should be run from the directory where the
W3/W4 file resides. Files can be packed, or repacked, using this tool.
I have been able to achieve higher compression ratios than Microsoft's
DEVLIB tool by finding the best match in the history buffer rather than
just a good one. Compression speeds are markedly slower than DEVLIB,
this is because I'm lazy and wrote this tool in C, not highly optimized
assembler as Microsoft did, and not because I'm an Electronics Engineer!
If you found this tool to be mildly useful or entertaining please send
me some Email, positive feedback is always good to get and makes writing
FREEWARE worth while. If you didn't like this tool, discard it, and keep
your sentiments to yourself.
Clive Turvey, October 7, 1996.
DeKalb, IL., USA & Southampton, ENGLAND.
Email : [email protected]
URL : http://www.tbcnet.com/~clive
------------------------------------------------------------------------------
VxDLIB v1.01 (c) Copyright Tenth Planet Software Intl., C Turvey 1995-1996.
All rights reserved. Non-Commercial use only.
==== === This FREEWARE product was written by Clive
\\ / th Turvey, an English Electronics Engineer.
\\ /
\\ / Planet It is designed to replace the DEVLIB utility
\\/ Software provided by Microsoft in the Win95 DDK.
/\\ International
/ \\ If you like the software, or find a problem
/ \\ CIS 74011,1732 post some Email to [email protected]
/ \\
=== ====
Usage : VxDLIB <-l[ist]> <W3/W4 file>
VxDLIB <-d[ump]> <W3/W4 file>
VxDLIB <-p[ack]> <W3/W4 file>
VxDLIB <-u[npack]> <W4 file>
VxDLIB <-e[xtract]> <W3/W4 file> <VxD>
Example of list command, W4 files will be decompressed into a temporary W3
file first.
C:\>VxDLIB -l VMM32.VXD
VxDLIB v1.01 (c) Copyright Tenth Planet Software Intl., C Turvey 1995-1996.
All rights reserved. Non-Commercial use only.
Unpacking VMM32.VXD to VxDLIB.$$$
100% complete
Listing VxDLIB.$$$
vxds:
VMM VDD VFLATD VMOUSE VSHARE VWIN32 VFBACKUP
VCOMM COMBUFF VCD VPD IFSMGR IOS SPOOLER
VFAT VCACHE VCOND VCDFSD INT13 VXDLDR VDEF
DYNAPAGE CONFIGMG EBIOS VMD DOSNET VPICD VTD
REBOOT VDMAD VSD V86MMGR PAGESWAP DOSMGR VMPOLL
SHELL PARITY BIOSXLAT VMCPD VTDAPI PERF VKD
42 total vxd(s)
C:\>
Example of dump command, W4 files will be decompressed into a temporary W3
file first.
C:\>VxDLIB -d VMM32.VXD
VxDLIB v1.01 (c) Copyright Tenth Planet Software Intl., C Turvey 1995-1996.
All rights reserved. Non-Commercial use only.
Unpacking VMM32.VXD to VxDLIB.$$$
100% complete
Dumping VxDLIB.$$$
vxds:
VMM : LE header offset 14400, size 8E55
VDD : LE header offset 65000, size 18F6
VFLATD : LE header offset 78000, size 38A
VMOUSE : LE header offset 7A000, size D55
VSHARE : LE header offset 83000, size 5C3
VWIN32 : LE header offset 87000, size 1136
VFBACKUP : LE header offset 95000, size 711
VCOMM : LE header offset 99000, size 8B7
COMBUFF : LE header offset A2000, size 27B
VCD : LE header offset A5000, size 6EB
VPD : LE header offset AB000, size 392
IFSMGR : LE header offset B1000, size 37EE
IOS : LE header offset DA000, size 177C
SPOOLER : LE header offset EB000, size 60E
VFAT : LE header offset F2000, size DB3
VCACHE : LE header offset 101000, size 5F2
VCOND : LE header offset 106000, size 9E8
VCDFSD : LE header offset 114000, size 343
INT13 : LE header offset 11A000, size 356
VXDLDR : LE header offset 11D000, size 52F
VDEF : LE header offset 126000, size 20D
DYNAPAGE : LE header offset 129000, size 45B
CONFIGMG : LE header offset 130000, size 181A
EBIOS : LE header offset 146000, size 225
VMD : LE header offset 14B000, size 305
DOSNET : LE header offset 14E000, size 259
VPICD : LE header offset 152000, size DE6
VTD : LE header offset 15E000, size 585
REBOOT : LE header offset 166000, size 367
VDMAD : LE header offset 16C000, size C32
VSD : LE header offset 177000, size 1C0
V86MMGR : LE header offset 179000, size 1424
PAGESWAP : LE header offset 191000, size 1CF
DOSMGR : LE header offset 195000, size 18D0
VMPOLL : LE header offset 1B0000, size 3FD
SHELL : LE header offset 1B8000, size 1164
PARITY : LE header offset 1CC000, size 198
BIOSXLAT : LE header offset 1CF000, size 21D
VMCPD : LE header offset 1D4000, size 2F0
VTDAPI : LE header offset 1D8000, size 385
PERF : LE header offset 1DD000, size 4F7
VKD : LE header offset 1E3000, size C27
42 total vxd(s)
C:\>
Example of pack command, W4 files will be decompressed into a temporary W3
file first and then recompressed. The compression algorithm was written to
pack the file as tightly as possible, so the resultant file will be smaller
than that created by Microsoft's DEVLIB utility.
C:\>VxDLIB -p VMM32.VXD
VxDLIB v1.01 (c) Copyright Tenth Planet Software Intl., C Turvey 1995-1996.
All rights reserved. Non-Commercial use only.
Unpacking VMM32.VXD to VxDLIB.$$$
100% complete
Packing VxDLIB.$$$ to VMM32.VXD
100% complete
Size of library: 2031616
Size of compressible portion: 1949696
Size of chunk map: 952
New size of compressible portion: 660607 (33% of original)
New size of library: 743495 (36% of original)
C:\>
Example of the unpack command, W4 files will be decompressed into a W3 file
of the same name via a temporary file that is renamed to match the original
after the original is deleted. The W3 file can then be examined with tools
like W3MAP.
C:\>VxDLIB -u VMM32.VXD VMM.VXD
VxDLIB v1.01 (c) Copyright Tenth Planet Software Intl., C Turvey 1995-1996.
All rights reserved. Non-Commercial use only.
Unpacking VMM32.VXD to VxDLIB.$$$
100% complete
C:\>
Example of extract command, W4 files will be decompressed into a temporary W3
file first and then the specified VxD will be extracted. The extracted VxD
can then be examined by the likes of V Communications' Sourcer. Multiple VxDs
can be extracted using wildcards, like V?D, VC* or V?O*.
C:\>VxDLIB -e VMM32.VXD VMM.VXD
VxDLIB v1.01 (c) Copyright Tenth Planet Software Intl., C Turvey 1995-1996.
All rights reserved. Non-Commercial use only.
Unpacking VMM32.VXD to VxDLIB.$$$
100% complete
Extracting VMM.VXD from VxDLIB.$$$
VMM.VXD 00014400 00065000 00050C00
C:\>VxDLIB -e VMM32.VXD V?O*.VXD
VxDLIB v1.01 (c) Copyright Tenth Planet Software Intl., C Turvey 1995-1996.
All rights reserved. Non-Commercial use only.
Unpacking VMM32.VXD to VxDLIB.$$$
100% complete
Extracting V?O*.VXD from VxDLIB.$$$
VMOUSE.VXD 0007A000 00083000 00009000
VCOMM.VXD 00099000 000A2000 00009000
VCOND.VXD 00106000 00114000 0000E000
C:\>
------------------------------------------------------------------------------
Technical Stuff:
Wx VxD Library EXE Header
00h ┌──────────────────┐ <──┐
│ DOS 2 Compatible │ │
│ EXE Header │ │
1Ch ├──────────────────┤ │
│ unused │ │
├──────────────────┤ │
3Ch │ Offset to │ ├── VMM32 DOS Portion
│ Wx VxD Library │ │
│ EXE Header │ │
40h ├──────────────────┤ │
│ VMM32 DOS Stub │ │
│ Loader Program │ │
│ Reloc. Table │ │
└──────────────────┘ <──┘
xxh ┌──────────────────┐ <──┐
│ W3 Header │ │
├──────────────────┤ │
│ VxD Table │ │
├──────────────────┤ │
│ First VxD │ │
│ Linear Executable│ ├── W3 VxD Library
├──────────────────┤ │
.... │
├──────────────────┤ │
│ Final VxD │ │
│ Linear Executable│ │
└──────────────────┘ <──┘
or
xxh ┌──────────────────┐ <──┐
│ W4 Header │ │
├──────────────────┤ │
│ Chunk Table │ │
├──────────────────┤ │
│ First Compressed │ │
│ Chunk │ ├── W4 VxD Library
├──────────────────┤ │
.... │
├──────────────────┤ │
│ Final Compressed │ │
│ Chunk │ │
└──────────────────┘ <──┘
W3 Header
┌─────┬─────┬─────┬─────┐
00h │ 'W' '3' │OS-Lo OS-Hi│
├─────┴─────┼─────┴─────┤
04h │ VxD Count │ - 0 - │
├───────────┼───────────┤
08h │ - 0 - │ - 0 - │
├───────────┼───────────┤
0Ch │ - 0 - │ - 0 - │
├───────────┴───────────┴───────────────────────┐
10h │ VxD #1 Name padded to 8 bytes with spaces │
├───────────────────────┬───────────────────────┘
18h │ VxD #1 LE File Offset │
├───────────────────────┤
1Ch │ VxD #1 LE Header Size │
├───────────────────────┴───────────────────────┐
10h │ VxD #2 Name padded to 8 bytes with spaces │
├───────────────────────┬───────────────────────┘
18h │ VxD #2 LE File Offset │
├───────────────────────┤
1Ch │ VxD #2 LE Header Size │
├───────────────────────┤
.....
├───────────────────────┴───────────────────────┐
xxh │ VxD #x Name padded to 8 bytes with spaces │
├───────────────────────┬───────────────────────┘
│ VxD #x LE File Offset │
├───────────────────────┤
│ VxD #x LE Header Size │
└───────────────────────┘
W4 Header
┌─────┬─────┬─────┬─────┐
00h │ 'W' '4' │OS-Lo OS-Hi│
├─────┴─────┼─────┴─────┤
04h │ Chunk Size│Chunk Count│
├─────┬─────┼───────────┤
08h │ 'D' 'S' │ - 0 - │
├─────┴─────┼───────────┤
0Ch │ - 0 - │ - 0 - │
├───────────┴───────────┤
10h │ Chunk #1 File Offset │
├───────────────────────┤
14h │ Chunk #2 File Offset │
├───────────────────────┤
.....
├───────────────────────┤
xxh │ Chunk #x File Offset │
├───────────────────────┤
Chunk #1 │ Compressed Chunk #1 │
.....
│ │
├───────────────────────┤
Chunk #2 │ Compressed Chunk #2 │
.....
│ │
├───────────────────────┤
.....
├───────────────────────┤
Chunk #x │ Compressed Chunk #x │
.....
│ │
└───────────────────────┘
EOF
OS : Indicated the Windows version, 0x0400, Windows 4.0
Chunk Size : This WORD defines the size of the chunks. The loader expects
the chunk size to be 8K. This is much like the concept of a disk cluster.
I originally called chunks, clusters until I found that Microsoft refers
to them as chunks in DEVLIB (Win95 DDK).
Chunk Count : This WORD defines the number of chunks contained in the file.
The loader verifies this is less than 1024
Chunk # File Offset : This DWORD defines an absolute file offset from the
beginning of the EXE file to the start of the compressed chunk, the loader
expects the chunks are consecutive order, the size of the final chunk is
deterined using the file length
The first Compressed chunk follows immediately after the last Chunk # File
Offset entry.
Data encoded as either a Raw Byte or Depth usually followed by Count, a depth
of 0 and 4415 are special cases which require no count component. The depth of
0 indicates the end of the compressed chunk, and a depth of 4415 defines a 512
byte boundary has been reached, the first byte is not counted as a 512 byte
boundary.
MSB...............................LSB
┌─────────────┬───┐
│a b c d e f g 0 1│ Raw 1abcdefg, No Depth or Count
├─────────────┼───┤
│a b c d e f g 1 0│ Raw 0abcdefg, No Depth or Count
└─────────────┴───┘
Depth or
┌───────────────┐
│0 0 0 0 0 0 0 0│ Quit, No Count
┌───────┼───────────┬───┤
│ Count │a b c d e f 0 0│ abcdef (1..63)
┌─────┴─┬─────┴─────────┬─┴───┤
│ Count │a b c d e f g h 0 1 1│ 64 + abcdefgh (64..319)
┌───────┼───────┴───────────────┼─────┤
│ Count │a b c d e f g h i j k m 1 1 1│ 320 + abcdefghijkm (320..4414)
└───────┼───────────────────────┴─────┤
│1 1 1 1 1 1 1 1 1 1 1 1 1 1 1│ Sector Break, No Count
└─────────────────────────────┘
Count
┌─┐
│1│ 2
┌─┬─┴─┤
│a 1 0│ 3 + a (3..4)
┌───┼─┴───┤
│a b 1 0 0│ 5 + ab (5..8)
┌───┴─┬─┴─────┤
│a b c 1 0 0 0│ 9 + abc (9..16)
┌───┴───┬─┴───────┤
│a b c d 1 0 0 0 0│ 17 + abcd (17..32)
┌───┴─────┬─┴─────────┤
│a b c d e 1 0 0 0 0 0│ 33 + abcde (33..64)
┌───┴───────┬─┴───────────┤
│a b c d e f 1 0 0 0 0 0 0│ 65 + abcdef (65..128)
┌───┴─────────┬─┴─────────────┤
│a b c d e f g 1 0 0 0 0 0 0 0│ 129 + abcdefg (129..256)
┌───┴───────────┬─┴───────────────┤
│a b c d e f g h 1 0 0 0 0 0 0 0 0│ 257 + abcdefgh (257..512)
└───────────────┼─────────────────┤
│0 0 0 0 0 0 0 0 0│ Quit - Illegal Encoding
└─────────────────┘
------------------------------------------------------------------------------
I have finished writing Windows Source Version 3, which is now available
from V Communications Inc.
What is Windows Source?
Windows Source is an add-on to V Communications' Sourcer disassembler
which preprocesses executable, dynamic link library, device drivers and
VxD files for Windows 3.x, Windows '95 & Windows NT. It also provides
support for OS/2 1.x, 2.x & Warp.
Where possible symbolic debug information included in separate .SYM,
.DBG files, or included in Codeview or COFF debugging sections.
Windows Source Web Page : http://www.tbcnet.com/~clive/vcomwinp.html
------------------------------------------------------------------------------
For more information about V Communications software :
Sourcer, Bios Preprocessor, Windows Source,
V Communications, Inc., 4320 Stevens Creek Blvd.,
Suite 120, San Jose, CA 95129-9944.
Orders: 800-648-8266 (USA & Canada)
Phone : 408-296-4224
Fax : 408-296-4441
BBS : 408-296-5334
URL : http://www.v-com.com
Email : [email protected]
These tools are highly recommended, be sure to let them know Clive Turvey
sent you.
------------------------------------------------------------------------------
Andrew Schulman's Unauthorized Windows 95 updates along with this software
can be found at :
http://www.ora.com