@isopodlabs/binary_libs 0.1.5 → 0.2.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/README.md +49 -85
- package/dist/CompoundDocument.d copy.ts +95 -0
- package/dist/CompoundDocument.d.ts +2 -36
- package/dist/arch.d copy.ts +18 -0
- package/dist/arch.d.ts +1 -1
- package/dist/arch.js +1 -1
- package/dist/clr.d copy.ts +409 -0
- package/dist/clr.d.ts +223 -18
- package/dist/clr.js +224 -276
- package/dist/elf.d copy.ts +152 -0
- package/dist/elf.d.ts +1 -1
- package/dist/elf.js +4 -4
- package/dist/mach.d copy.ts +505 -0
- package/dist/mach.d.ts +11 -7
- package/dist/mach.js +9 -10
- package/dist/pe.d copy.ts +144 -0
- package/dist/pe.d.ts +4 -19
- package/dist/pe.js +4 -6
- package/package.json +3 -2
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import * as binary from '@isopodlabs/binary';
|
|
2
|
+
declare const DOS_HEADER: {
|
|
3
|
+
magic: binary.TypeT<number>;
|
|
4
|
+
cblp: binary.TypeT<number>;
|
|
5
|
+
cp: binary.TypeT<number>;
|
|
6
|
+
crlc: binary.TypeT<number>;
|
|
7
|
+
cparhdr: binary.TypeT<number>;
|
|
8
|
+
minalloc: binary.TypeT<number>;
|
|
9
|
+
maxalloc: binary.TypeT<binary.hex<number | bigint>>;
|
|
10
|
+
ss: binary.TypeT<number>;
|
|
11
|
+
sp: binary.TypeT<number>;
|
|
12
|
+
csum: binary.TypeT<number>;
|
|
13
|
+
ip: binary.TypeT<number>;
|
|
14
|
+
cs: binary.TypeT<number>;
|
|
15
|
+
lfarlc: binary.TypeT<number>;
|
|
16
|
+
ovno: binary.TypeT<number>;
|
|
17
|
+
};
|
|
18
|
+
declare const EXE_HEADER: {
|
|
19
|
+
res: binary.TypeT<number[]>;
|
|
20
|
+
oemid: binary.TypeT<number>;
|
|
21
|
+
oeminfo: binary.TypeT<number>;
|
|
22
|
+
res2: binary.TypeT<number[]>;
|
|
23
|
+
lfanew: binary.TypeT<number>;
|
|
24
|
+
};
|
|
25
|
+
export declare class pe_stream extends binary.stream {
|
|
26
|
+
pe: PE;
|
|
27
|
+
constructor(pe: PE, data: Uint8Array);
|
|
28
|
+
get_rva(): Uint8Array | undefined;
|
|
29
|
+
}
|
|
30
|
+
declare const Section_base: (new (s: binary._stream) => {
|
|
31
|
+
Name: string;
|
|
32
|
+
VirtualSize: number;
|
|
33
|
+
VirtualAddress: binary.hex<number | bigint>;
|
|
34
|
+
SizeOfRawData: number;
|
|
35
|
+
PointerToRawData: binary.hex<number | bigint>;
|
|
36
|
+
PointerToRelocations: binary.hex<number | bigint>;
|
|
37
|
+
PointerToLinenumbers: binary.hex<number | bigint>;
|
|
38
|
+
NumberOfRelocations: number;
|
|
39
|
+
NumberOfLinenumbers: number;
|
|
40
|
+
Characteristics: Record<string, bigint | boolean> | Record<string, number | boolean>;
|
|
41
|
+
}) & {
|
|
42
|
+
get: <X extends abstract new (...args: any) => any>(this: X, s: binary._stream) => InstanceType<X>;
|
|
43
|
+
};
|
|
44
|
+
declare class Section extends Section_base {
|
|
45
|
+
data?: binary.MappedMemory;
|
|
46
|
+
constructor(r: binary.stream);
|
|
47
|
+
get flags(): number;
|
|
48
|
+
}
|
|
49
|
+
interface DirectoryInfo {
|
|
50
|
+
read?: (pe: PE, data: binary.MappedMemory) => any;
|
|
51
|
+
}
|
|
52
|
+
export declare const DIRECTORIES: Record<string, DirectoryInfo>;
|
|
53
|
+
export declare const DATA_DIRECTORY: {
|
|
54
|
+
VirtualAddress: binary.TypeT<number>;
|
|
55
|
+
Size: binary.TypeT<number>;
|
|
56
|
+
};
|
|
57
|
+
type Directory = binary.ReadType<typeof DATA_DIRECTORY>;
|
|
58
|
+
declare const OPTIONAL_HEADER: {
|
|
59
|
+
Magic: binary.TypeT<string>;
|
|
60
|
+
MajorLinkerVersion: binary.TypeT<number>;
|
|
61
|
+
MinorLinkerVersion: binary.TypeT<number>;
|
|
62
|
+
SizeOfCode: binary.TypeT<number>;
|
|
63
|
+
SizeOfInitializedData: binary.TypeT<number>;
|
|
64
|
+
SizeOfUninitializedData: binary.TypeT<number>;
|
|
65
|
+
AddressOfEntryPoint: binary.TypeT<binary.hex<number | bigint>>;
|
|
66
|
+
BaseOfCode: binary.TypeT<binary.hex<number | bigint>>;
|
|
67
|
+
};
|
|
68
|
+
declare const OPTIONAL_HEADER32: {
|
|
69
|
+
BaseOfData: binary.TypeT<binary.hex<number | bigint>>;
|
|
70
|
+
ImageBase: binary.TypeT<binary.hex<number | bigint>>;
|
|
71
|
+
SectionAlignment: binary.TypeT<number>;
|
|
72
|
+
FileAlignment: binary.TypeT<number>;
|
|
73
|
+
MajorOperatingSystemVersion: binary.TypeT<number>;
|
|
74
|
+
MinorOperatingSystemVersion: binary.TypeT<number>;
|
|
75
|
+
MajorImageVersion: binary.TypeT<number>;
|
|
76
|
+
MinorImageVersion: binary.TypeT<number>;
|
|
77
|
+
MajorSubsystemVersion: binary.TypeT<number>;
|
|
78
|
+
MinorSubsystemVersion: binary.TypeT<number>;
|
|
79
|
+
Win32VersionValue: binary.TypeT<number>;
|
|
80
|
+
SizeOfImage: binary.TypeT<number>;
|
|
81
|
+
SizeOfHeaders: binary.TypeT<number>;
|
|
82
|
+
CheckSum: binary.TypeT<number>;
|
|
83
|
+
Subsystem: binary.TypeT<number>;
|
|
84
|
+
DllCharacteristics: binary.TypeT<Record<string, bigint | boolean> | Record<string, number | boolean>>;
|
|
85
|
+
SizeOfStackReserve: binary.TypeT<number>;
|
|
86
|
+
SizeOfStackCommit: binary.TypeT<number>;
|
|
87
|
+
SizeOfHeapReserve: binary.TypeT<number>;
|
|
88
|
+
SizeOfHeapCommit: binary.TypeT<number>;
|
|
89
|
+
LoaderFlags: binary.TypeT<number>;
|
|
90
|
+
DataDirectory: binary.TypeT<Record<string, {
|
|
91
|
+
VirtualAddress: number;
|
|
92
|
+
Size: number;
|
|
93
|
+
}>>;
|
|
94
|
+
};
|
|
95
|
+
declare const OPTIONAL_HEADER64: {
|
|
96
|
+
ImageBase: binary.TypeT<binary.hex<number | bigint>>;
|
|
97
|
+
SectionAlignment: binary.TypeT<number>;
|
|
98
|
+
FileAlignment: binary.TypeT<number>;
|
|
99
|
+
MajorOperatingSystemVersion: binary.TypeT<number>;
|
|
100
|
+
MinorOperatingSystemVersion: binary.TypeT<number>;
|
|
101
|
+
MajorImageVersion: binary.TypeT<number>;
|
|
102
|
+
MinorImageVersion: binary.TypeT<number>;
|
|
103
|
+
MajorSubsystemVersion: binary.TypeT<number>;
|
|
104
|
+
MinorSubsystemVersion: binary.TypeT<number>;
|
|
105
|
+
Win32VersionValue: binary.TypeT<number>;
|
|
106
|
+
SizeOfImage: binary.TypeT<number>;
|
|
107
|
+
SizeOfHeaders: binary.TypeT<number>;
|
|
108
|
+
CheckSum: binary.TypeT<number>;
|
|
109
|
+
Subsystem: binary.TypeT<number>;
|
|
110
|
+
DllCharacteristics: binary.TypeT<Record<string, bigint | boolean> | Record<string, number | boolean>>;
|
|
111
|
+
SizeOfStackReserve: binary.TypeT<bigint>;
|
|
112
|
+
SizeOfStackCommit: binary.TypeT<bigint>;
|
|
113
|
+
SizeOfHeapReserve: binary.TypeT<bigint>;
|
|
114
|
+
SizeOfHeapCommit: binary.TypeT<bigint>;
|
|
115
|
+
LoaderFlags: binary.TypeT<number>;
|
|
116
|
+
DataDirectory: binary.TypeT<Record<string, {
|
|
117
|
+
VirtualAddress: number;
|
|
118
|
+
Size: number;
|
|
119
|
+
}>>;
|
|
120
|
+
};
|
|
121
|
+
export declare class PE {
|
|
122
|
+
private data;
|
|
123
|
+
header: binary.ReadType<typeof DOS_HEADER> & binary.ReadType<typeof EXE_HEADER>;
|
|
124
|
+
opt?: binary.ReadType<typeof OPTIONAL_HEADER> & (binary.ReadType<typeof OPTIONAL_HEADER32> | binary.ReadType<typeof OPTIONAL_HEADER64>);
|
|
125
|
+
sections: Section[];
|
|
126
|
+
static check(data: Uint8Array): boolean;
|
|
127
|
+
constructor(data: Uint8Array);
|
|
128
|
+
get directories(): Record<string, {
|
|
129
|
+
VirtualAddress: number;
|
|
130
|
+
Size: number;
|
|
131
|
+
}> | undefined;
|
|
132
|
+
FindSectionRVA(rva: number): Section | undefined;
|
|
133
|
+
FindSectionRaw(addr: number): Section | undefined;
|
|
134
|
+
GetDataRVA(rva: number, size?: number): binary.MappedMemory | undefined;
|
|
135
|
+
GetDataRaw(addr: number, size: number): Uint8Array | undefined;
|
|
136
|
+
GetDataDir(dir: Directory): binary.MappedMemory | undefined;
|
|
137
|
+
ReadDirectory(name: string): any;
|
|
138
|
+
}
|
|
139
|
+
export declare function ReadExports(file: pe_stream): (string | number | binary.MappedMemory | undefined)[][];
|
|
140
|
+
export declare class DLLImports extends Array {
|
|
141
|
+
}
|
|
142
|
+
export declare function ReadImports(file: pe_stream): [string, any][];
|
|
143
|
+
export declare function ReadResourceDirectory(file: binary.stream, data: binary.MappedMemory, type?: number): Record<string, any>;
|
|
144
|
+
export {};
|
package/dist/pe.d.ts
CHANGED
|
@@ -16,18 +16,7 @@ declare const Section_base: (new (s: binary._stream) => {
|
|
|
16
16
|
NumberOfLinenumbers: number;
|
|
17
17
|
Characteristics: Record<string, bigint | boolean> | Record<string, number | boolean>;
|
|
18
18
|
}) & {
|
|
19
|
-
get: (s: binary._stream) =>
|
|
20
|
-
Name: string;
|
|
21
|
-
VirtualSize: number;
|
|
22
|
-
VirtualAddress: binary.hex<number | bigint>;
|
|
23
|
-
SizeOfRawData: number;
|
|
24
|
-
PointerToRawData: binary.hex<number | bigint>;
|
|
25
|
-
PointerToRelocations: binary.hex<number | bigint>;
|
|
26
|
-
PointerToLinenumbers: binary.hex<number | bigint>;
|
|
27
|
-
NumberOfRelocations: number;
|
|
28
|
-
NumberOfLinenumbers: number;
|
|
29
|
-
Characteristics: Record<string, bigint | boolean> | Record<string, number | boolean>;
|
|
30
|
-
};
|
|
19
|
+
get: <X extends abstract new (...args: any) => any>(this: X, s: binary._stream) => InstanceType<X>;
|
|
31
20
|
};
|
|
32
21
|
declare class Section extends Section_base {
|
|
33
22
|
data?: binary.MappedMemory;
|
|
@@ -47,7 +36,7 @@ type Directory = {
|
|
|
47
36
|
Size: number;
|
|
48
37
|
};
|
|
49
38
|
export declare class PE {
|
|
50
|
-
|
|
39
|
+
static check(data: Uint8Array): boolean;
|
|
51
40
|
header: {
|
|
52
41
|
magic: number;
|
|
53
42
|
cblp: number;
|
|
@@ -132,20 +121,16 @@ export declare class PE {
|
|
|
132
121
|
}>;
|
|
133
122
|
});
|
|
134
123
|
sections: Section[];
|
|
135
|
-
static check(data: Uint8Array): boolean;
|
|
136
124
|
constructor(data: Uint8Array);
|
|
137
125
|
get directories(): Record<string, {
|
|
138
126
|
VirtualAddress: number;
|
|
139
127
|
Size: number;
|
|
140
|
-
}
|
|
128
|
+
}> | undefined;
|
|
141
129
|
FindSectionRVA(rva: number): Section | undefined;
|
|
142
130
|
FindSectionRaw(addr: number): Section | undefined;
|
|
143
131
|
GetDataRVA(rva: number, size?: number): binary.MappedMemory | undefined;
|
|
144
132
|
GetDataRaw(addr: number, size: number): Uint8Array | undefined;
|
|
145
|
-
GetDataDir(dir:
|
|
146
|
-
VirtualAddress: number;
|
|
147
|
-
Size: number;
|
|
148
|
-
}): binary.MappedMemory | undefined;
|
|
133
|
+
GetDataDir(dir: Directory): binary.MappedMemory | undefined;
|
|
149
134
|
ReadDirectory(name: string): any;
|
|
150
135
|
}
|
|
151
136
|
export declare function ReadExports(file: pe_stream): (string | number | binary.MappedMemory | undefined)[][];
|
package/dist/pe.js
CHANGED
|
@@ -271,15 +271,13 @@ const OPTIONAL_HEADER64 = {
|
|
|
271
271
|
DataDirectory: binary.objectWithNames(binary.ArrayType(uint32, exports.DATA_DIRECTORY), binary.names(Object.keys(exports.DIRECTORIES))),
|
|
272
272
|
};
|
|
273
273
|
class PE {
|
|
274
|
-
data;
|
|
275
|
-
header;
|
|
276
|
-
opt;
|
|
277
|
-
sections;
|
|
278
274
|
static check(data) {
|
|
279
275
|
return uint16.get(new binary.stream(data)) === binary.utils.stringCode("MZ");
|
|
280
276
|
}
|
|
277
|
+
header;
|
|
278
|
+
opt;
|
|
279
|
+
sections;
|
|
281
280
|
constructor(data) {
|
|
282
|
-
this.data = data;
|
|
283
281
|
const file = new binary.stream(data);
|
|
284
282
|
this.header = binary.read(file, { ...DOS_HEADER, ...EXE_HEADER });
|
|
285
283
|
file.seek(this.header.lfanew);
|
|
@@ -438,7 +436,7 @@ const RESOURCE_DIRECTORY = {
|
|
|
438
436
|
MinorVersion: uint16,
|
|
439
437
|
NumberOfNamedEntries: uint16,
|
|
440
438
|
NumberOfIdEntries: uint16,
|
|
441
|
-
entries: binary.ArrayType(
|
|
439
|
+
entries: binary.ArrayType(s => s.obj.NumberOfNamedEntries + s.obj.NumberOfIdEntries, {
|
|
442
440
|
u0: uint32,
|
|
443
441
|
u1: uint32,
|
|
444
442
|
})
|
package/package.json
CHANGED
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"scripts": {
|
|
17
17
|
"build": "tsc",
|
|
18
18
|
"lint": "eslint \"src/**/*.ts\"",
|
|
19
|
-
"test": "echo \"No tests specified\" && exit 0"
|
|
19
|
+
"test": "echo \"No tests specified\" && exit 0",
|
|
20
|
+
"patch": "ts-patch install"
|
|
20
21
|
},
|
|
21
22
|
"keywords": [
|
|
22
23
|
"binary",
|
|
@@ -40,5 +41,5 @@
|
|
|
40
41
|
"dependencies": {
|
|
41
42
|
"@isopodlabs/binary": "^1.0.3"
|
|
42
43
|
},
|
|
43
|
-
"version": "0.
|
|
44
|
+
"version": "0.2.0"
|
|
44
45
|
}
|