@isopodlabs/binary_libs 1.2.1 → 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.d.ts CHANGED
@@ -1,40 +1,41 @@
1
- import * as binary from '@isopodlabs/binary';
1
+ import * as bin from '@isopodlabs/binary';
2
+ import { ReadCLR } from './clr';
2
3
  declare const FILE_HEADER: {
3
- Machine: binary.TypeT<string>;
4
- NumberOfSections: binary.TypeT<number>;
5
- TimeDateStamp: binary.TypeT<number>;
6
- PointerToSymbolTable: binary.TypeT<number>;
7
- NumberOfSymbols: binary.TypeT<number>;
8
- SizeOfOptionalHeader: binary.TypeT<number>;
9
- Characteristics: binary.TypeT<number>;
4
+ Machine: bin.TypeT<string>;
5
+ NumberOfSections: bin.TypeT<number>;
6
+ TimeDateStamp: bin.TypeT<number>;
7
+ PointerToSymbolTable: bin.TypeT<number>;
8
+ NumberOfSymbols: bin.TypeT<number>;
9
+ SizeOfOptionalHeader: bin.TypeT<number>;
10
+ Characteristics: bin.TypeT<number>;
10
11
  };
11
- declare const Section_base: (new (s: binary._stream) => {
12
+ declare const Section_base: (new (s: bin._stream) => {
12
13
  Name: string;
13
14
  VirtualSize: number;
14
- VirtualAddress: binary.hex<number | bigint>;
15
+ VirtualAddress: bin.hex<number | bigint>;
15
16
  SizeOfRawData: number;
16
- PointerToRawData: binary.hex<number | bigint>;
17
- PointerToRelocations: binary.hex<number | bigint>;
18
- PointerToLinenumbers: binary.hex<number | bigint>;
17
+ PointerToRawData: bin.hex<number | bigint>;
18
+ PointerToRelocations: bin.hex<number | bigint>;
19
+ PointerToLinenumbers: bin.hex<number | bigint>;
19
20
  NumberOfRelocations: number;
20
21
  NumberOfLinenumbers: number;
21
22
  Characteristics: Record<string, bigint | boolean> | Record<string, number | boolean>;
22
23
  }) & {
23
- get: <X extends abstract new (...args: any) => any>(this: X, s: binary._stream) => InstanceType<X>;
24
+ get: <X extends abstract new (...args: any) => any>(this: X, s: bin._stream) => InstanceType<X>;
24
25
  };
25
26
  export declare class Section extends Section_base {
26
- data?: binary.MappedMemory;
27
- constructor(r: binary.stream);
27
+ data?: bin.MappedMemory;
28
+ constructor(r: bin.stream);
28
29
  get flags(): number;
29
30
  }
30
31
  export declare class COFF {
31
32
  static check(data: Uint8Array): boolean;
32
- header: binary.ReadType<typeof FILE_HEADER>;
33
- opt?: binary.ReadType<typeof OPTIONAL_HEADER> & (binary.ReadType<typeof OPTIONAL_HEADER32> | binary.ReadType<typeof OPTIONAL_HEADER64>);
33
+ header: bin.ReadType<typeof FILE_HEADER>;
34
+ opt?: bin.ReadType<typeof OPTIONAL_HEADER> & (bin.ReadType<typeof OPTIONAL_HEADER32> | bin.ReadType<typeof OPTIONAL_HEADER64>);
34
35
  sections: Section[];
35
36
  constructor(data: Uint8Array);
36
37
  }
37
- declare const COFFSymbol_base: (new (s: binary._stream) => {
38
+ declare const COFFSymbol_base: (new (s: bin._stream) => {
38
39
  a: number;
39
40
  b: number;
40
41
  c: number;
@@ -46,116 +47,145 @@ declare const COFFSymbol_base: (new (s: binary._stream) => {
46
47
  Symbol: string;
47
48
  Module: string;
48
49
  }) & {
49
- get: <X extends abstract new (...args: any) => any>(this: X, s: binary._stream) => InstanceType<X>;
50
+ get: <X extends abstract new (...args: any) => any>(this: X, s: bin._stream) => InstanceType<X>;
50
51
  };
51
52
  export declare class COFFSymbol extends COFFSymbol_base {
52
53
  static check(data: Uint8Array): boolean;
53
54
  constructor(data: Uint8Array);
54
55
  }
55
- export declare class pe_stream extends binary.stream {
56
+ export declare class pe_stream extends bin.stream {
56
57
  pe: PE;
57
58
  constructor(pe: PE, data: Uint8Array);
59
+ translate_rva(addr: number): bin.MappedMemory | undefined;
58
60
  get_rva(): Uint8Array | undefined;
59
61
  }
60
62
  declare const DOS_HEADER: {
61
- magic: binary.TypeT<number>;
62
- cblp: binary.TypeT<number>;
63
- cp: binary.TypeT<number>;
64
- crlc: binary.TypeT<number>;
65
- cparhdr: binary.TypeT<number>;
66
- minalloc: binary.TypeT<number>;
67
- maxalloc: binary.TypeT<binary.hex<number | bigint>>;
68
- ss: binary.TypeT<number>;
69
- sp: binary.TypeT<number>;
70
- csum: binary.TypeT<number>;
71
- ip: binary.TypeT<number>;
72
- cs: binary.TypeT<number>;
73
- lfarlc: binary.TypeT<number>;
74
- ovno: binary.TypeT<number>;
63
+ magic: bin.TypeT<number>;
64
+ cblp: bin.TypeT<number>;
65
+ cp: bin.TypeT<number>;
66
+ crlc: bin.TypeT<number>;
67
+ cparhdr: bin.TypeT<number>;
68
+ minalloc: bin.TypeT<number>;
69
+ maxalloc: bin.TypeT<bin.hex<number | bigint>>;
70
+ ss: bin.TypeT<number>;
71
+ sp: bin.TypeT<number>;
72
+ csum: bin.TypeT<number>;
73
+ ip: bin.TypeT<number>;
74
+ cs: bin.TypeT<number>;
75
+ lfarlc: bin.TypeT<number>;
76
+ ovno: bin.TypeT<number>;
75
77
  };
76
78
  declare const EXE_HEADER: {
77
- res: binary.TypeT<number[]>;
78
- oemid: binary.TypeT<number>;
79
- oeminfo: binary.TypeT<number>;
80
- res2: binary.TypeT<number[]>;
81
- lfanew: binary.TypeT<number>;
79
+ res: bin.TypeT<number[]>;
80
+ oemid: bin.TypeT<number>;
81
+ oeminfo: bin.TypeT<number>;
82
+ res2: bin.TypeT<number[]>;
83
+ lfanew: bin.TypeT<number>;
82
84
  };
83
85
  interface DirectoryInfo {
84
- read?: (pe: PE, data: binary.MappedMemory) => any;
86
+ read: (pe: PE, data: bin.MappedMemory) => unknown;
85
87
  }
86
- export declare const DIRECTORIES: Record<string, DirectoryInfo>;
88
+ export declare const DIRECTORIES: {
89
+ readonly EXPORT: {
90
+ readonly read: (pe: PE, data: bin.MappedMemory) => (string | number | bin.MappedMemory | undefined)[][];
91
+ };
92
+ readonly IMPORT: {
93
+ readonly read: (pe: PE, data: bin.MappedMemory) => [string, any][];
94
+ };
95
+ readonly RESOURCE: {
96
+ readonly read: (pe: PE, data: bin.MappedMemory) => Record<string, any>;
97
+ };
98
+ readonly EXCEPTION: DirectoryInfo;
99
+ readonly SECURITY: DirectoryInfo;
100
+ readonly BASERELOC: DirectoryInfo;
101
+ readonly DEBUG_DIR: DirectoryInfo;
102
+ readonly ARCHITECTURE: DirectoryInfo;
103
+ readonly GLOBALPTR: DirectoryInfo;
104
+ readonly TLS: DirectoryInfo;
105
+ readonly LOAD_CONFIG: DirectoryInfo;
106
+ readonly BOUND_IMPORT: DirectoryInfo;
107
+ readonly IAT: DirectoryInfo;
108
+ readonly DELAY_IMPORT: DirectoryInfo;
109
+ readonly CLR_DESCRIPTOR: {
110
+ readonly read: typeof ReadCLR;
111
+ };
112
+ };
113
+ type DirectoryName = keyof typeof DIRECTORIES;
114
+ type DirectoryReadResult<T extends DirectoryName> = typeof DIRECTORIES[T] extends {
115
+ read: (pe: PE, data: bin.MappedMemory) => infer R;
116
+ } ? R : bin.MappedMemory | undefined;
87
117
  export declare const DATA_DIRECTORY: {
88
- VirtualAddress: binary.TypeT<number>;
89
- Size: binary.TypeT<number>;
118
+ VirtualAddress: bin.TypeT<number>;
119
+ Size: bin.TypeT<number>;
90
120
  };
91
- type Directory = binary.ReadType<typeof DATA_DIRECTORY>;
121
+ type Directory = bin.ReadType<typeof DATA_DIRECTORY>;
92
122
  declare const OPTIONAL_HEADER: {
93
- Magic: binary.TypeT<string>;
94
- MajorLinkerVersion: binary.TypeT<number>;
95
- MinorLinkerVersion: binary.TypeT<number>;
96
- SizeOfCode: binary.TypeT<number>;
97
- SizeOfInitializedData: binary.TypeT<number>;
98
- SizeOfUninitializedData: binary.TypeT<number>;
99
- AddressOfEntryPoint: binary.TypeT<binary.hex<number | bigint>>;
100
- BaseOfCode: binary.TypeT<binary.hex<number | bigint>>;
123
+ Magic: bin.TypeT<string>;
124
+ MajorLinkerVersion: bin.TypeT<number>;
125
+ MinorLinkerVersion: bin.TypeT<number>;
126
+ SizeOfCode: bin.TypeT<number>;
127
+ SizeOfInitializedData: bin.TypeT<number>;
128
+ SizeOfUninitializedData: bin.TypeT<number>;
129
+ AddressOfEntryPoint: bin.TypeT<bin.hex<number | bigint>>;
130
+ BaseOfCode: bin.TypeT<bin.hex<number | bigint>>;
101
131
  };
102
132
  declare const OPTIONAL_HEADER32: {
103
- BaseOfData: binary.TypeT<binary.hex<number | bigint>>;
104
- ImageBase: binary.TypeT<binary.hex<number | bigint>>;
105
- SectionAlignment: binary.TypeT<number>;
106
- FileAlignment: binary.TypeT<number>;
107
- MajorOperatingSystemVersion: binary.TypeT<number>;
108
- MinorOperatingSystemVersion: binary.TypeT<number>;
109
- MajorImageVersion: binary.TypeT<number>;
110
- MinorImageVersion: binary.TypeT<number>;
111
- MajorSubsystemVersion: binary.TypeT<number>;
112
- MinorSubsystemVersion: binary.TypeT<number>;
113
- Win32VersionValue: binary.TypeT<number>;
114
- SizeOfImage: binary.TypeT<number>;
115
- SizeOfHeaders: binary.TypeT<number>;
116
- CheckSum: binary.TypeT<number>;
117
- Subsystem: binary.TypeT<number>;
118
- DllCharacteristics: binary.TypeT<Record<string, bigint | boolean> | Record<string, number | boolean>>;
119
- SizeOfStackReserve: binary.TypeT<number>;
120
- SizeOfStackCommit: binary.TypeT<number>;
121
- SizeOfHeapReserve: binary.TypeT<number>;
122
- SizeOfHeapCommit: binary.TypeT<number>;
123
- LoaderFlags: binary.TypeT<number>;
124
- DataDirectory: binary.TypeT<Record<string, {
133
+ BaseOfData: bin.TypeT<bin.hex<number | bigint>>;
134
+ ImageBase: bin.TypeT<bin.hex<number | bigint>>;
135
+ SectionAlignment: bin.TypeT<number>;
136
+ FileAlignment: bin.TypeT<number>;
137
+ MajorOperatingSystemVersion: bin.TypeT<number>;
138
+ MinorOperatingSystemVersion: bin.TypeT<number>;
139
+ MajorImageVersion: bin.TypeT<number>;
140
+ MinorImageVersion: bin.TypeT<number>;
141
+ MajorSubsystemVersion: bin.TypeT<number>;
142
+ MinorSubsystemVersion: bin.TypeT<number>;
143
+ Win32VersionValue: bin.TypeT<number>;
144
+ SizeOfImage: bin.TypeT<number>;
145
+ SizeOfHeaders: bin.TypeT<number>;
146
+ CheckSum: bin.TypeT<number>;
147
+ Subsystem: bin.TypeT<number>;
148
+ DllCharacteristics: bin.TypeT<Record<string, bigint | boolean> | Record<string, number | boolean>>;
149
+ SizeOfStackReserve: bin.TypeT<number>;
150
+ SizeOfStackCommit: bin.TypeT<number>;
151
+ SizeOfHeapReserve: bin.TypeT<number>;
152
+ SizeOfHeapCommit: bin.TypeT<number>;
153
+ LoaderFlags: bin.TypeT<number>;
154
+ DataDirectory: bin.TypeT<Record<string, {
125
155
  VirtualAddress: number;
126
156
  Size: number;
127
157
  }>>;
128
158
  };
129
159
  declare const OPTIONAL_HEADER64: {
130
- ImageBase: binary.TypeT<binary.hex<number | bigint>>;
131
- SectionAlignment: binary.TypeT<number>;
132
- FileAlignment: binary.TypeT<number>;
133
- MajorOperatingSystemVersion: binary.TypeT<number>;
134
- MinorOperatingSystemVersion: binary.TypeT<number>;
135
- MajorImageVersion: binary.TypeT<number>;
136
- MinorImageVersion: binary.TypeT<number>;
137
- MajorSubsystemVersion: binary.TypeT<number>;
138
- MinorSubsystemVersion: binary.TypeT<number>;
139
- Win32VersionValue: binary.TypeT<number>;
140
- SizeOfImage: binary.TypeT<number>;
141
- SizeOfHeaders: binary.TypeT<number>;
142
- CheckSum: binary.TypeT<number>;
143
- Subsystem: binary.TypeT<number>;
144
- DllCharacteristics: binary.TypeT<Record<string, bigint | boolean> | Record<string, number | boolean>>;
145
- SizeOfStackReserve: binary.TypeT<bigint>;
146
- SizeOfStackCommit: binary.TypeT<bigint>;
147
- SizeOfHeapReserve: binary.TypeT<bigint>;
148
- SizeOfHeapCommit: binary.TypeT<bigint>;
149
- LoaderFlags: binary.TypeT<number>;
150
- DataDirectory: binary.TypeT<Record<string, {
160
+ ImageBase: bin.TypeT<bin.hex<number | bigint>>;
161
+ SectionAlignment: bin.TypeT<number>;
162
+ FileAlignment: bin.TypeT<number>;
163
+ MajorOperatingSystemVersion: bin.TypeT<number>;
164
+ MinorOperatingSystemVersion: bin.TypeT<number>;
165
+ MajorImageVersion: bin.TypeT<number>;
166
+ MinorImageVersion: bin.TypeT<number>;
167
+ MajorSubsystemVersion: bin.TypeT<number>;
168
+ MinorSubsystemVersion: bin.TypeT<number>;
169
+ Win32VersionValue: bin.TypeT<number>;
170
+ SizeOfImage: bin.TypeT<number>;
171
+ SizeOfHeaders: bin.TypeT<number>;
172
+ CheckSum: bin.TypeT<number>;
173
+ Subsystem: bin.TypeT<number>;
174
+ DllCharacteristics: bin.TypeT<Record<string, bigint | boolean> | Record<string, number | boolean>>;
175
+ SizeOfStackReserve: bin.TypeT<bigint>;
176
+ SizeOfStackCommit: bin.TypeT<bigint>;
177
+ SizeOfHeapReserve: bin.TypeT<bigint>;
178
+ SizeOfHeapCommit: bin.TypeT<bigint>;
179
+ LoaderFlags: bin.TypeT<number>;
180
+ DataDirectory: bin.TypeT<Record<string, {
151
181
  VirtualAddress: number;
152
182
  Size: number;
153
183
  }>>;
154
184
  };
155
185
  export declare class PE {
156
186
  static check(data: Uint8Array): boolean;
157
- header: binary.ReadType<typeof DOS_HEADER> & binary.ReadType<typeof EXE_HEADER>;
158
- opt?: binary.ReadType<typeof OPTIONAL_HEADER> & (binary.ReadType<typeof OPTIONAL_HEADER32> | binary.ReadType<typeof OPTIONAL_HEADER64>);
187
+ header: bin.ReadType<typeof DOS_HEADER> & bin.ReadType<typeof EXE_HEADER>;
188
+ opt?: bin.ReadType<typeof OPTIONAL_HEADER> & (bin.ReadType<typeof OPTIONAL_HEADER32> | bin.ReadType<typeof OPTIONAL_HEADER64>);
159
189
  sections: Section[];
160
190
  constructor(data: Uint8Array);
161
191
  get directories(): Record<string, {
@@ -164,14 +194,14 @@ export declare class PE {
164
194
  }> | undefined;
165
195
  FindSectionRVA(rva: number): Section | undefined;
166
196
  FindSectionRaw(addr: number): Section | undefined;
167
- GetDataRVA(rva: number, size?: number): binary.MappedMemory | undefined;
197
+ GetDataRVA(rva: number, size?: number): bin.MappedMemory | undefined;
168
198
  GetDataRaw(addr: number, size: number): Uint8Array | undefined;
169
- GetDataDir(dir: Directory): binary.MappedMemory | undefined;
170
- ReadDirectory(name: string): any;
199
+ GetDataDir(dir: Directory): bin.MappedMemory | undefined;
200
+ ReadDirectory<T extends DirectoryName>(name: T): DirectoryReadResult<T>;
171
201
  }
172
- export declare function ReadExports(file: pe_stream): (string | number | binary.MappedMemory | undefined)[][];
202
+ export declare function ReadExports(file: pe_stream): (string | number | bin.MappedMemory | undefined)[][];
173
203
  export declare class DLLImports extends Array {
174
204
  }
175
205
  export declare function ReadImports(file: pe_stream): [string, any][];
176
- export declare function ReadResourceDirectory(file: binary.stream, data: binary.MappedMemory, type?: number): Record<string, any>;
206
+ export declare function ReadResourceDirectory(file: pe_stream, type?: number): Record<string, any>;
177
207
  export {};