@isopodlabs/binary_libs 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/pe.js CHANGED
@@ -23,75 +23,25 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.DLLImports = exports.COFFSymbol = exports.COFF = exports.PE = exports.DATA_DIRECTORY = exports.DIRECTORIES = exports.Section = exports.pe_stream = void 0;
26
+ exports.DLLImports = exports.PE = exports.DATA_DIRECTORY = exports.DIRECTORIES = exports.pe_stream = exports.COFFSymbol = exports.COFF = exports.Section = void 0;
27
27
  exports.ReadExports = ReadExports;
28
28
  exports.ReadImports = ReadImports;
29
29
  exports.ReadResourceDirectory = ReadResourceDirectory;
30
- const binary = __importStar(require("@isopodlabs/binary"));
30
+ const bin = __importStar(require("@isopodlabs/binary"));
31
+ const clr_1 = require("./clr");
31
32
  class MyDate extends Date {
32
33
  constructor(x) { super(x * 1000); }
33
34
  valueOf() { return this.getTime() / 1000; }
34
35
  toString() { return super.toString(); }
35
36
  }
36
- const uint16 = binary.UINT16_LE;
37
- const uint32 = binary.UINT32_LE;
38
- const uint64 = binary.UINT64_LE;
39
- const TIMEDATE = binary.as(uint32, MyDate);
37
+ const uint16 = bin.UINT16_LE;
38
+ const uint32 = bin.UINT32_LE;
39
+ const uint64 = bin.UINT64_LE;
40
+ const TIMEDATE = bin.as(uint32, MyDate);
40
41
  //-----------------------------------------------------------------------------
41
42
  // COFF
42
43
  //-----------------------------------------------------------------------------
43
- const DOS_HEADER = {
44
- magic: uint16,
45
- cblp: uint16,
46
- cp: uint16,
47
- crlc: uint16,
48
- cparhdr: uint16,
49
- minalloc: uint16,
50
- maxalloc: binary.asHex(uint16),
51
- ss: uint16,
52
- sp: uint16,
53
- csum: uint16,
54
- ip: uint16,
55
- cs: uint16,
56
- lfarlc: uint16,
57
- ovno: uint16,
58
- };
59
- const EXE_HEADER = {
60
- res: binary.ArrayType(4, uint16),
61
- oemid: uint16,
62
- oeminfo: uint16,
63
- res2: binary.ArrayType(10, uint16),
64
- lfanew: binary.INT32_LE,
65
- };
66
- //-----------------------------------------------------------------------------
67
- // PE
68
- //-----------------------------------------------------------------------------
69
- class pe_stream extends binary.stream {
70
- pe;
71
- constructor(pe, data) {
72
- super(data);
73
- this.pe = pe;
74
- }
75
- get_rva() { return this.pe.GetDataRVA(uint32.get(this))?.data; }
76
- }
77
- exports.pe_stream = pe_stream;
78
- const RVA_STRING = {
79
- get(s) { return binary.utils.decodeTextTo0(s.get_rva(), 'utf8'); },
80
- put(_s) { }
81
- };
82
- const RVA_ARRAY16 = {
83
- get(s) { return binary.utils.to16(s.get_rva()); },
84
- put(_s) { }
85
- };
86
- const RVA_ARRAY32 = {
87
- get(s) { return binary.utils.to32(s.get_rva()); },
88
- put(_s) { }
89
- };
90
- const RVA_ARRAY64 = {
91
- get(s) { return binary.utils.to64(s.get_rva()); },
92
- put(_s) { }
93
- };
94
- const MACHINE = binary.asEnum(uint16, {
44
+ const MACHINES = {
95
45
  UNKNOWN: 0x0,
96
46
  AM33: 0x1d3,
97
47
  AMD64: 0x8664,
@@ -113,7 +63,8 @@ const MACHINE = binary.asEnum(uint16, {
113
63
  SH5: 0x1a8,
114
64
  THUMB: 0x1c2,
115
65
  WCEMIPSV2: 0x169,
116
- });
66
+ };
67
+ const MACHINE = bin.asEnum(uint16, MACHINES);
117
68
  const FILE_HEADER = {
118
69
  Machine: MACHINE,
119
70
  NumberOfSections: uint16,
@@ -167,52 +118,152 @@ const SECTION_CHARACTERISTICS = {
167
118
  MEM_READ: 0x40000000,
168
119
  MEM_WRITE: 0x80000000,
169
120
  };
170
- class Section extends binary.ReadClass({
171
- Name: binary.StringType(8),
121
+ class Section extends bin.ReadClass({
122
+ Name: bin.StringType(8),
172
123
  VirtualSize: uint32,
173
- VirtualAddress: binary.asHex(uint32),
124
+ VirtualAddress: bin.asHex(uint32),
174
125
  SizeOfRawData: uint32,
175
- PointerToRawData: binary.asHex(uint32),
176
- PointerToRelocations: binary.asHex(uint32),
177
- PointerToLinenumbers: binary.asHex(uint32),
178
- NumberOfRelocations: binary.INT16_LE,
179
- NumberOfLinenumbers: binary.INT16_LE,
180
- Characteristics: binary.asFlags(uint32, SECTION_CHARACTERISTICS)
126
+ PointerToRawData: bin.asHex(uint32),
127
+ PointerToRelocations: bin.asHex(uint32),
128
+ PointerToLinenumbers: bin.asHex(uint32),
129
+ NumberOfRelocations: bin.INT16_LE,
130
+ NumberOfLinenumbers: bin.INT16_LE,
131
+ Characteristics: bin.asFlags(uint32, SECTION_CHARACTERISTICS)
181
132
  }) {
182
133
  data;
183
134
  constructor(r) {
184
135
  super(r);
185
136
  try {
186
- this.data = new binary.MappedMemory(r.buffer_at(+this.PointerToRawData, this.SizeOfRawData), +this.VirtualAddress, this.flags);
137
+ this.data = new bin.MappedMemory(r.buffer_at(+this.PointerToRawData, this.SizeOfRawData), BigInt(this.VirtualAddress.value), this.flags);
187
138
  }
188
139
  catch (e) {
189
140
  console.log(e);
190
141
  }
191
142
  }
192
143
  get flags() {
193
- return binary.MappedMemory.RELATIVE
194
- | (this.Characteristics.MEM_READ ? binary.MappedMemory.READ : 0)
195
- | (this.Characteristics.MEM_WRITE ? binary.MappedMemory.WRITE : 0)
196
- | (this.Characteristics.MEM_EXECUTE ? binary.MappedMemory.EXECUTE : 0);
144
+ return bin.MappedMemory.RELATIVE
145
+ | (this.Characteristics.MEM_READ ? bin.MappedMemory.READ : 0)
146
+ | (this.Characteristics.MEM_WRITE ? bin.MappedMemory.WRITE : 0)
147
+ | (this.Characteristics.MEM_EXECUTE ? bin.MappedMemory.EXECUTE : 0);
197
148
  }
198
149
  }
199
150
  exports.Section = Section;
151
+ class COFF {
152
+ static check(data) {
153
+ const header = bin.read(new bin.stream(data), FILE_HEADER);
154
+ return MACHINES[header.Machine] !== undefined;
155
+ }
156
+ header;
157
+ opt;
158
+ sections;
159
+ constructor(data) {
160
+ const file = new bin.stream(data);
161
+ this.header = bin.read(file, FILE_HEADER);
162
+ if (this.header.SizeOfOptionalHeader) {
163
+ console.log("COFF: SizeOfOptionalHeader", this.header.SizeOfOptionalHeader);
164
+ }
165
+ this.sections = Array.from({ length: this.header.NumberOfSections }, () => new Section(file));
166
+ }
167
+ }
168
+ exports.COFF = COFF;
169
+ // these appear in libs:
170
+ const SYMBOL = {
171
+ a: uint16, //0
172
+ b: uint16, //0xffff
173
+ c: uint16, //0
174
+ Architecture: MACHINE, // 0x14C for x86, 0x8664 for x64
175
+ Id: uint32,
176
+ Length: uint32,
177
+ //union {
178
+ // Hint: uint16,
179
+ // Ordinal: uint16,
180
+ Value: uint16,
181
+ //}
182
+ Type: uint16,
183
+ Symbol: bin.NullTerminatedStringType(),
184
+ Module: bin.NullTerminatedStringType(),
185
+ };
186
+ class COFFSymbol extends bin.ReadClass(SYMBOL) {
187
+ static check(data) {
188
+ const test = bin.read(new bin.stream(data), SYMBOL);
189
+ return test.a === 0 && test.b === 0xffff && test.c === 0 && test.Architecture != 'UNKNOWN';
190
+ }
191
+ constructor(data) {
192
+ super(new bin.stream(data));
193
+ }
194
+ }
195
+ exports.COFFSymbol = COFFSymbol;
196
+ //-----------------------------------------------------------------------------
197
+ // PE
198
+ //-----------------------------------------------------------------------------
199
+ class pe_stream extends bin.stream {
200
+ pe;
201
+ constructor(pe, data) {
202
+ super(data);
203
+ this.pe = pe;
204
+ }
205
+ translate_rva(addr) { return this.pe.GetDataRVA(addr); }
206
+ get_rva() { return this.pe.GetDataRVA(uint32.get(this))?.data; }
207
+ }
208
+ exports.pe_stream = pe_stream;
209
+ const RVA_BLOB = {
210
+ get(s) { return s.get_rva(); },
211
+ put(_s) { }
212
+ };
213
+ const RVA_STRING = {
214
+ get(s) { return bin.utils.decodeTextTo0(s.get_rva(), 'utf8'); },
215
+ put(_s) { }
216
+ };
217
+ const RVA_ARRAY16 = {
218
+ get(s) { return bin.utils.to16(s.get_rva()); },
219
+ put(_s) { }
220
+ };
221
+ const RVA_ARRAY32 = {
222
+ get(s) { return bin.utils.to32(s.get_rva()); },
223
+ put(_s) { }
224
+ };
225
+ const DOS_HEADER = {
226
+ magic: uint16,
227
+ cblp: uint16,
228
+ cp: uint16,
229
+ crlc: uint16,
230
+ cparhdr: uint16,
231
+ minalloc: uint16,
232
+ maxalloc: bin.asHex(uint16),
233
+ ss: uint16,
234
+ sp: uint16,
235
+ csum: uint16,
236
+ ip: uint16,
237
+ cs: uint16,
238
+ lfarlc: uint16,
239
+ ovno: uint16,
240
+ };
241
+ const EXE_HEADER = {
242
+ res: bin.ArrayType(4, uint16),
243
+ oemid: uint16,
244
+ oeminfo: uint16,
245
+ res2: bin.ArrayType(10, uint16),
246
+ lfanew: bin.INT32_LE,
247
+ };
248
+ const NoInfo = {
249
+ read: (pe, data) => data
250
+ };
200
251
  exports.DIRECTORIES = {
201
252
  EXPORT: { read: (pe, data) => ReadExports(new pe_stream(pe, data.data)) },
202
253
  IMPORT: { read: (pe, data) => ReadImports(new pe_stream(pe, data.data)) },
203
- RESOURCE: { read: (pe, data) => ReadResourceDirectory(new binary.stream(data.data), data) },
204
- EXCEPTION: {}, // Exception Directory
205
- SECURITY: {}, // Security Directory
206
- BASERELOC: {}, // Base Relocation Table
207
- DEBUG_DIR: {}, // Debug Directory
208
- ARCHITECTURE: {}, // Architecture Specific Data
209
- GLOBALPTR: {}, // RVA of GP
210
- TLS: {},
211
- LOAD_CONFIG: {}, // Load Configuration Directory
212
- BOUND_IMPORT: {}, // Bound Import Directory in headers
213
- IAT: {}, // Import Address Table
214
- DELAY_IMPORT: {},
215
- CLR_DESCRIPTOR: {},
254
+ RESOURCE: { read: (pe, data) => ReadResourceDirectory(new pe_stream(pe, data.data)) },
255
+ EXCEPTION: NoInfo, // Exception Directory
256
+ SECURITY: NoInfo, // Security Directory
257
+ BASERELOC: NoInfo, // Base Relocation Table
258
+ DEBUG_DIR: NoInfo, // Debug Directory
259
+ ARCHITECTURE: NoInfo, // Architecture Specific Data
260
+ GLOBALPTR: NoInfo, // RVA of GP
261
+ TLS: NoInfo,
262
+ LOAD_CONFIG: NoInfo, // Load Configuration Directory
263
+ BOUND_IMPORT: NoInfo, // Bound Import Directory in headers
264
+ IAT: NoInfo, // Import Address Table
265
+ DELAY_IMPORT: NoInfo,
266
+ CLR_DESCRIPTOR: { read: clr_1.ReadCLR },
216
267
  };
217
268
  exports.DATA_DIRECTORY = {
218
269
  VirtualAddress: uint32,
@@ -238,18 +289,18 @@ const DLLCHARACTERISTICS = {
238
289
  TERMINAL_SERVER_AWARE: 0x8000, // Terminal Server aware
239
290
  };
240
291
  const OPTIONAL_HEADER = {
241
- Magic: binary.asEnum(uint16, MAGIC),
242
- MajorLinkerVersion: binary.UINT8,
243
- MinorLinkerVersion: binary.UINT8,
292
+ Magic: bin.asEnum(uint16, MAGIC),
293
+ MajorLinkerVersion: bin.UINT8,
294
+ MinorLinkerVersion: bin.UINT8,
244
295
  SizeOfCode: uint32,
245
296
  SizeOfInitializedData: uint32,
246
297
  SizeOfUninitializedData: uint32,
247
- AddressOfEntryPoint: binary.asHex(uint32),
248
- BaseOfCode: binary.asHex(uint32),
298
+ AddressOfEntryPoint: bin.asHex(uint32),
299
+ BaseOfCode: bin.asHex(uint32),
249
300
  };
250
301
  const OPTIONAL_HEADER32 = {
251
- BaseOfData: binary.asHex(uint32),
252
- ImageBase: binary.asHex(uint32),
302
+ BaseOfData: bin.asHex(uint32),
303
+ ImageBase: bin.asHex(uint32),
253
304
  SectionAlignment: uint32,
254
305
  FileAlignment: uint32,
255
306
  MajorOperatingSystemVersion: uint16,
@@ -263,16 +314,16 @@ const OPTIONAL_HEADER32 = {
263
314
  SizeOfHeaders: uint32,
264
315
  CheckSum: uint32,
265
316
  Subsystem: uint16,
266
- DllCharacteristics: binary.asFlags(uint16, DLLCHARACTERISTICS),
317
+ DllCharacteristics: bin.asFlags(uint16, DLLCHARACTERISTICS),
267
318
  SizeOfStackReserve: uint32,
268
319
  SizeOfStackCommit: uint32,
269
320
  SizeOfHeapReserve: uint32,
270
321
  SizeOfHeapCommit: uint32,
271
322
  LoaderFlags: uint32,
272
- DataDirectory: binary.objectWithNames(binary.ArrayType(uint32, exports.DATA_DIRECTORY), binary.names(Object.keys(exports.DIRECTORIES))),
323
+ DataDirectory: bin.objectWithNames(bin.ArrayType(uint32, exports.DATA_DIRECTORY), bin.names(Object.keys(exports.DIRECTORIES))),
273
324
  };
274
325
  const OPTIONAL_HEADER64 = {
275
- ImageBase: binary.asHex(uint64),
326
+ ImageBase: bin.asHex(uint64),
276
327
  SectionAlignment: uint32,
277
328
  FileAlignment: uint32,
278
329
  MajorOperatingSystemVersion: uint16,
@@ -286,34 +337,34 @@ const OPTIONAL_HEADER64 = {
286
337
  SizeOfHeaders: uint32,
287
338
  CheckSum: uint32,
288
339
  Subsystem: uint16,
289
- DllCharacteristics: binary.asFlags(uint16, DLLCHARACTERISTICS),
340
+ DllCharacteristics: bin.asFlags(uint16, DLLCHARACTERISTICS),
290
341
  SizeOfStackReserve: uint64,
291
342
  SizeOfStackCommit: uint64,
292
343
  SizeOfHeapReserve: uint64,
293
344
  SizeOfHeapCommit: uint64,
294
345
  LoaderFlags: uint32,
295
- DataDirectory: binary.objectWithNames(binary.ArrayType(uint32, exports.DATA_DIRECTORY), binary.names(Object.keys(exports.DIRECTORIES))),
346
+ DataDirectory: bin.objectWithNames(bin.ArrayType(uint32, exports.DATA_DIRECTORY), bin.names(Object.keys(exports.DIRECTORIES))),
296
347
  };
297
348
  class PE {
298
349
  static check(data) {
299
- return uint16.get(new binary.stream(data)) === binary.utils.stringCode("MZ");
350
+ return uint16.get(new bin.stream(data)) === bin.utils.stringCode("MZ");
300
351
  }
301
352
  header;
302
353
  opt;
303
354
  sections;
304
355
  constructor(data) {
305
- const file = new binary.stream(data);
306
- this.header = binary.read(file, { ...DOS_HEADER, ...EXE_HEADER });
356
+ const file = new bin.stream(data);
357
+ this.header = bin.read(file, { ...DOS_HEADER, ...EXE_HEADER });
307
358
  file.seek(this.header.lfanew);
308
- if (uint32.get(file) == binary.utils.stringCode("PE\0\0")) {
309
- const h = binary.read(file, FILE_HEADER);
359
+ if (uint32.get(file) == bin.utils.stringCode("PE\0\0")) {
360
+ const h = bin.read(file, FILE_HEADER);
310
361
  if (h.SizeOfOptionalHeader) {
311
- const opt = new binary.stream(file.read_buffer(h.SizeOfOptionalHeader));
312
- const opt1 = binary.read(opt, OPTIONAL_HEADER);
362
+ const opt = new bin.stream(file.read_buffer(h.SizeOfOptionalHeader));
363
+ const opt1 = bin.read(opt, OPTIONAL_HEADER);
313
364
  if (opt1.Magic == 'NT32')
314
- this.opt = binary.read_more(opt, OPTIONAL_HEADER32, opt1);
365
+ this.opt = bin.read_more(opt, OPTIONAL_HEADER32, opt1);
315
366
  else if (opt1.Magic == 'NT64')
316
- this.opt = binary.read_more(opt, OPTIONAL_HEADER64, opt1);
367
+ this.opt = bin.read_more(opt, OPTIONAL_HEADER64, opt1);
317
368
  }
318
369
  this.sections = Array.from({ length: h.NumberOfSections }, () => new Section(file));
319
370
  }
@@ -339,7 +390,7 @@ class PE {
339
390
  GetDataRVA(rva, size) {
340
391
  const sect = this.FindSectionRVA(rva);
341
392
  if (sect && sect.data)
342
- return sect.data.at(rva, size);
393
+ return sect.data.at(BigInt(rva), size);
343
394
  }
344
395
  GetDataRaw(addr, size) {
345
396
  const sect = this.FindSectionRaw(addr);
@@ -357,65 +408,22 @@ class PE {
357
408
  if (dir?.Size) {
358
409
  const data = this.GetDataDir(dir);
359
410
  const info = exports.DIRECTORIES[name];
360
- if (data && info?.read)
411
+ if (data && 'read' in info && info.read)
361
412
  return info.read(this, data);
362
413
  return data;
363
414
  }
415
+ return undefined;
364
416
  }
365
417
  }
366
418
  exports.PE = PE;
367
- class COFF {
368
- static check(data) {
369
- const header = binary.read(new binary.stream(data), FILE_HEADER);
370
- return header.Machine != 'UNKNOWN';
371
- }
372
- header;
373
- opt;
374
- sections;
375
- constructor(data) {
376
- const file = new binary.stream(data);
377
- this.header = binary.read(file, FILE_HEADER);
378
- if (this.header.SizeOfOptionalHeader) {
379
- console.log("COFF: SizeOfOptionalHeader", this.header.SizeOfOptionalHeader);
380
- }
381
- this.sections = Array.from({ length: this.header.NumberOfSections }, () => new Section(file));
382
- }
383
- }
384
- exports.COFF = COFF;
385
- const SYMBOL = {
386
- a: uint16, //0
387
- b: uint16, //0xffff
388
- c: uint16, //0
389
- Architecture: MACHINE, // 0x14C for x86, 0x8664 for x64
390
- Id: uint32,
391
- Length: uint32,
392
- //union {
393
- // Hint: uint16,
394
- // Ordinal: uint16,
395
- Value: uint16,
396
- //}
397
- Type: uint16,
398
- Symbol: binary.NullTerminatedStringType(),
399
- Module: binary.NullTerminatedStringType(),
400
- };
401
- class COFFSymbol extends binary.ReadClass(SYMBOL) {
402
- static check(data) {
403
- const test = binary.read(new binary.stream(data), SYMBOL);
404
- return test.a === 0 && test.b === 0xffff && test.c === 0 && test.Architecture != 'UNKNOWN';
405
- }
406
- constructor(data) {
407
- super(new binary.stream(data));
408
- }
409
- }
410
- exports.COFFSymbol = COFFSymbol;
411
419
  //-----------------------------------------------------------------------------
412
420
  // exports
413
421
  //-----------------------------------------------------------------------------
414
422
  const EXPORT_DIRECTORY = {
415
423
  ExportFlags: uint32, // Reserved, must be 0.
416
424
  TimeDateStamp: TIMEDATE, // The time and date that the export data was created.
417
- MajorVersion: binary.asHex(uint16), // The major version number. The major and minor version numbers can be set by the user.
418
- MinorVersion: binary.asHex(uint16), // The minor version number.
425
+ MajorVersion: bin.asHex(uint16), // The major version number. The major and minor version numbers can be set by the user.
426
+ MinorVersion: bin.asHex(uint16), // The minor version number.
419
427
  DLLName: RVA_STRING, // The address of the ASCII string that contains the name of the DLL. This address is relative to the image base.
420
428
  OrdinalBase: uint32, // The starting ordinal number for exports in this image. This field specifies the starting ordinal number for the export address table. It is usually set to 1.
421
429
  NumberEntries: uint32, // The number of entries in the export address table.
@@ -425,7 +433,7 @@ const EXPORT_DIRECTORY = {
425
433
  OrdinalTable: RVA_ARRAY16, // RVA from base of image
426
434
  };
427
435
  function ReadExports(file) {
428
- const dir = binary.read(file, EXPORT_DIRECTORY);
436
+ const dir = bin.read(file, EXPORT_DIRECTORY);
429
437
  const addresses = dir.FunctionTable;
430
438
  const names = dir.NameTable;
431
439
  const ordinals = dir.OrdinalTable;
@@ -434,7 +442,7 @@ function ReadExports(file) {
434
442
  const sect = file.pe.FindSectionRVA(addresses[i]);
435
443
  if (sect) {
436
444
  const ordinal = (ordinals && i < dir.NumberNames ? ordinals[i] : i) + dir.OrdinalBase;
437
- const name = names && i < dir.NumberNames ? binary.utils.decodeTextTo0(file.pe.GetDataRVA(names[i])?.data, 'utf8') : '';
445
+ const name = names && i < dir.NumberNames ? bin.utils.decodeTextTo0(file.pe.GetDataRVA(names[i])?.data, 'utf8') : '';
438
446
  result.push({ ordinal, name, address: addresses[i] });
439
447
  }
440
448
  }
@@ -454,11 +462,11 @@ class DLLImports extends Array {
454
462
  exports.DLLImports = DLLImports;
455
463
  const RVA_ITA64 = {
456
464
  get(s) {
457
- const r = binary.utils.to64(s.get_rva());
465
+ const r = bin.utils.to64(s.get_rva());
458
466
  if (r) {
459
467
  const result = Array.from(r.subarray(0, r.indexOf(0n)), i => i >> 63n
460
468
  ? `ordinal_${i - (1n << 63n)}`
461
- : binary.utils.decodeTextTo0(s.pe.GetDataRVA(Number(i))?.data.subarray(2), 'utf8'));
469
+ : bin.utils.decodeTextTo0(s.pe.GetDataRVA(Number(i))?.data.subarray(2), 'utf8'));
462
470
  Object.setPrototypeOf(result, DLLImports.prototype);
463
471
  return result;
464
472
  }
@@ -475,7 +483,7 @@ const IMPORT_DESCRIPTOR = {
475
483
  function ReadImports(file) {
476
484
  const result = [];
477
485
  while (file.remaining()) {
478
- const r = binary.read(file, IMPORT_DESCRIPTOR);
486
+ const r = bin.read(file, IMPORT_DESCRIPTOR);
479
487
  if (!r.Characteristics)
480
488
  break;
481
489
  result.push([r.DllName, r.FirstThunk]);
@@ -485,16 +493,14 @@ function ReadImports(file) {
485
493
  //-----------------------------------------------------------------------------
486
494
  // resources
487
495
  //-----------------------------------------------------------------------------
488
- class RESOURCE_DATA_ENTRY extends binary.ReadClass({
489
- OffsetToData: uint32,
496
+ class RESOURCE_DATA_ENTRY extends bin.ReadClass({
497
+ Data: RVA_BLOB,
490
498
  Size: uint32,
491
499
  CodePage: uint32,
492
500
  Reserved: uint32,
493
501
  }) {
494
- data;
495
- constructor(file, data) {
496
- super(file);
497
- this.data = data.slice(this.OffsetToData, this.OffsetToData + this.Size).data;
502
+ get data() {
503
+ return this.Data.slice(0, this.Size);
498
504
  }
499
505
  }
500
506
  const RESOURCE_DIRECTORY = {
@@ -504,7 +510,7 @@ const RESOURCE_DIRECTORY = {
504
510
  MinorVersion: uint16,
505
511
  NumberOfNamedEntries: uint16,
506
512
  NumberOfIdEntries: uint16,
507
- entries: binary.ArrayType(s => s.obj.NumberOfNamedEntries + s.obj.NumberOfIdEntries, {
513
+ entries: bin.ArrayType(s => s.obj.NumberOfNamedEntries + s.obj.NumberOfIdEntries, {
508
514
  u0: uint32,
509
515
  u1: uint32,
510
516
  })
@@ -534,17 +540,17 @@ const IRT = {
534
540
  24: 'MANIFEST',
535
541
  241: 'TOOLBAR',
536
542
  };
537
- function ReadResourceDirectory(file, data, type = 0) {
538
- const dir = binary.read(file, RESOURCE_DIRECTORY);
539
- const id_type = binary.StringType(uint16, 'utf16le');
543
+ function ReadResourceDirectory(file, type = 0) {
544
+ const dir = bin.read(file, RESOURCE_DIRECTORY);
545
+ const id_type = bin.StringType(uint16, 'utf16le');
540
546
  const topbit = 0x80000000;
541
547
  const result = {};
542
548
  for (const i of dir.entries) {
543
549
  const id = i.u0 & topbit ? id_type.get(file.seek(i.u0 & ~topbit)) : !type ? IRT[i.u0] : i.u0;
544
550
  file.seek(i.u1 & ~topbit);
545
551
  result[id] = i.u1 & topbit
546
- ? ReadResourceDirectory(file, data, type || i.u0)
547
- : new RESOURCE_DATA_ENTRY(file, data);
552
+ ? ReadResourceDirectory(file, type || i.u0)
553
+ : new RESOURCE_DATA_ENTRY(file);
548
554
  }
549
555
  return result;
550
556
  }
package/package.json CHANGED
@@ -1,45 +1,48 @@
1
1
  {
2
- "name": "@isopodlabs/binary_libs",
3
- "description": "A package for reading various library file format with TypeScript.",
4
- "exports": {
5
- "./arch": "./dist/arch.js",
6
- "./clr": "./dist/clr.js",
7
- "./CompoundDocument": "./dist/CompoundDocument.js",
8
- "./elf": "./dist/elf.js",
9
- "./mach": "./dist/mach.js",
10
- "./pe": "./dist/pe.js"
11
- },
12
- "files": [
13
- "dist",
14
- "README.md"
15
- ],
16
- "scripts": {
17
- "build": "tsc",
18
- "lint": "eslint \"src/**/*.ts\"",
19
- "test": "echo \"No tests specified\" && exit 0",
20
- "patch": "ts-patch install"
21
- },
22
- "keywords": [
23
- "binary",
24
- "typescript",
25
- "data",
26
- "read",
27
- "write"
28
- ],
29
- "author": "Adrian Stephens",
30
- "license": "MIT",
31
- "devDependencies": {
32
- "@types/node": "^22.13.8",
33
- "@typescript-eslint/eslint-plugin": "^8.26.0",
34
- "@typescript-eslint/parser": "^8.26.0",
35
- "eslint": "^9.21.0",
36
- "ts-node": "^10.9.2",
37
- "ts-patch": "^3.3.0",
38
- "typescript": "~5.5.0",
39
- "typescript-eslint": "^8.26.0"
40
- },
41
- "dependencies": {
42
- "@isopodlabs/binary": "^1.4.1"
43
- },
44
- "version": "1.2.0"
2
+ "name": "@isopodlabs/binary_libs",
3
+ "description": "A package for reading various library file format with TypeScript.",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "git+https://github.com/adrianstephens/ts-binary-libs.git"
7
+ },
8
+ "exports": {
9
+ "./arch": "./dist/arch.js",
10
+ "./clr": "./dist/clr.js",
11
+ "./CompoundDocument": "./dist/CompoundDocument.js",
12
+ "./elf": "./dist/elf.js",
13
+ "./mach": "./dist/mach.js",
14
+ "./pe": "./dist/pe.js"
15
+ },
16
+ "files": [
17
+ "dist/**/*.{js,d.ts}",
18
+ "README.md"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "watch": "tsc -watch -p ./",
23
+ "lint": "eslint \"src/**/*.ts\"",
24
+ "patch": "ts-patch install"
25
+ },
26
+ "keywords": [
27
+ "binary",
28
+ "typescript",
29
+ "data",
30
+ "read",
31
+ "write"
32
+ ],
33
+ "author": "Adrian Stephens",
34
+ "license": "MIT",
35
+ "devDependencies": {
36
+ "@types/node": "^22.13.8",
37
+ "@typescript-eslint/eslint-plugin": "^8.26.0",
38
+ "@typescript-eslint/parser": "^8.26.0",
39
+ "eslint": "^9.21.0",
40
+ "ts-node": "^10.9.2",
41
+ "ts-patch": "^3.3.0",
42
+ "typescript-eslint": "^8.26.0"
43
+ },
44
+ "version": "1.3.0",
45
+ "dependencies": {
46
+ "@isopodlabs/binary": "^1.6.0"
47
+ }
45
48
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"CompoundDocument.js","sourceRoot":"","sources":["../src/CompoundDocument.ts"],"names":[],"mappings":"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"}
package/dist/arch.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"arch.js","sourceRoot":"","sources":["../src/arch.ts"],"names":[],"mappings":"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"}