@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/LICENSE.txt +21 -0
- package/README.md +4 -1
- package/dist/CompoundDocument.d.ts +10 -10
- package/dist/CompoundDocument.js +45 -43
- package/dist/arch.js +2 -2
- package/dist/clr.d.ts +75 -54
- package/dist/clr.js +126 -114
- package/dist/cvinfo.d.ts +26 -0
- package/dist/cvinfo.js +930 -0
- package/dist/elf.d.ts +26 -20
- package/dist/elf.js +61 -61
- package/dist/mach.d.ts +176 -146
- package/dist/mach.js +101 -101
- package/dist/pe.d.ts +162 -132
- package/dist/pe.js +178 -172
- package/package.json +46 -43
- package/dist/CompoundDocument.js.map +0 -1
- package/dist/arch.js.map +0 -1
- package/dist/clr.js.map +0 -1
- package/dist/elf.js.map +0 -1
- package/dist/mach.js.map +0 -1
- package/dist/pe.js.map +0 -1
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.
|
|
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
|
|
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 =
|
|
37
|
-
const uint32 =
|
|
38
|
-
const uint64 =
|
|
39
|
-
const TIMEDATE =
|
|
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
|
|
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
|
|
171
|
-
Name:
|
|
121
|
+
class Section extends bin.ReadClass({
|
|
122
|
+
Name: bin.StringType(8),
|
|
172
123
|
VirtualSize: uint32,
|
|
173
|
-
VirtualAddress:
|
|
124
|
+
VirtualAddress: bin.asHex(uint32),
|
|
174
125
|
SizeOfRawData: uint32,
|
|
175
|
-
PointerToRawData:
|
|
176
|
-
PointerToRelocations:
|
|
177
|
-
PointerToLinenumbers:
|
|
178
|
-
NumberOfRelocations:
|
|
179
|
-
NumberOfLinenumbers:
|
|
180
|
-
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
|
|
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
|
|
194
|
-
| (this.Characteristics.MEM_READ ?
|
|
195
|
-
| (this.Characteristics.MEM_WRITE ?
|
|
196
|
-
| (this.Characteristics.MEM_EXECUTE ?
|
|
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
|
|
204
|
-
EXCEPTION:
|
|
205
|
-
SECURITY:
|
|
206
|
-
BASERELOC:
|
|
207
|
-
DEBUG_DIR:
|
|
208
|
-
ARCHITECTURE:
|
|
209
|
-
GLOBALPTR:
|
|
210
|
-
TLS:
|
|
211
|
-
LOAD_CONFIG:
|
|
212
|
-
BOUND_IMPORT:
|
|
213
|
-
IAT:
|
|
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:
|
|
242
|
-
MajorLinkerVersion:
|
|
243
|
-
MinorLinkerVersion:
|
|
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:
|
|
248
|
-
BaseOfCode:
|
|
298
|
+
AddressOfEntryPoint: bin.asHex(uint32),
|
|
299
|
+
BaseOfCode: bin.asHex(uint32),
|
|
249
300
|
};
|
|
250
301
|
const OPTIONAL_HEADER32 = {
|
|
251
|
-
BaseOfData:
|
|
252
|
-
ImageBase:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
306
|
-
this.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) ==
|
|
309
|
-
const h =
|
|
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
|
|
312
|
-
const opt1 =
|
|
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 =
|
|
365
|
+
this.opt = bin.read_more(opt, OPTIONAL_HEADER32, opt1);
|
|
315
366
|
else if (opt1.Magic == 'NT64')
|
|
316
|
-
this.opt =
|
|
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
|
|
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:
|
|
418
|
-
MinorVersion:
|
|
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 =
|
|
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 ?
|
|
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 =
|
|
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
|
-
:
|
|
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 =
|
|
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
|
|
489
|
-
|
|
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
|
-
|
|
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:
|
|
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,
|
|
538
|
-
const dir =
|
|
539
|
-
const id_type =
|
|
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,
|
|
547
|
-
: new RESOURCE_DATA_ENTRY(file
|
|
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
|
-
|
|
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
|
-
|
|
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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"}
|