exoproc-accessors 0.1.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 +235 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1660 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware-accessor.d.ts +346 -0
- package/dist/middleware-accessor.d.ts.map +1 -0
- package/dist/middleware-accessor.js +1870 -0
- package/dist/middleware-accessor.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
import { type AddressLike, NativeMemory, type ISyncCallableMemoryAccessor, type AllocNearOptions, type CFunction, type CMachineCode, type CCallResult, MemoryBasicInformation, Pattern, type CoreModulesStatus, MiddlewareAccessor, InittableMiddlewareAccessor, type IHostAccessor } from 'bun-xffi';
|
|
2
|
+
export declare abstract class MsvcrtDependentMiddlewareAccessor extends InittableMiddlewareAccessor {
|
|
3
|
+
protected onInit(): Promise<void>;
|
|
4
|
+
protected onInitSync(): void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* HostAccessor is a base class that automatically initializes all nested InittableMiddlewareAccessors
|
|
8
|
+
* in the backend decorator chain.
|
|
9
|
+
*/
|
|
10
|
+
export declare class HostAccessor extends InittableMiddlewareAccessor {
|
|
11
|
+
get processId(): number;
|
|
12
|
+
constructor(backend: ISyncCallableMemoryAccessor, root?: IHostAccessor);
|
|
13
|
+
protected onInit(): Promise<void>;
|
|
14
|
+
protected onInitSync(): void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A HostAccessor that forwards all operations to a dynamically changeable target HostAccessor.
|
|
18
|
+
* This is useful for resolving circular dependencies in middleware chains where the root
|
|
19
|
+
* reference is readonly and needs to be set after construction.
|
|
20
|
+
*
|
|
21
|
+
* Usage:
|
|
22
|
+
* const redirector = new RedirectorHostAccessor(pid);
|
|
23
|
+
* // ... build middleware chain using redirector as root ...
|
|
24
|
+
* redirector.target = actualHostAccessor; // wire it up later
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* HostAccessor that throws an error for all operations. Used as the default/unconfigured target for redirectors.
|
|
28
|
+
*/
|
|
29
|
+
export declare class ThrowingHostAccessor extends HostAccessor {
|
|
30
|
+
constructor(processId: number, root?: IHostAccessor);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A HostAccessor that forwards all operations to a dynamically changeable target HostAccessor.
|
|
34
|
+
* If target is set to `this`, it delegates calls directly to its own backend (acting like a normal HostAccessor).
|
|
35
|
+
*/
|
|
36
|
+
export declare class RedirectorHostAccessor extends HostAccessor {
|
|
37
|
+
private _target;
|
|
38
|
+
constructor(processId: number, root?: IHostAccessor);
|
|
39
|
+
get target(): IHostAccessor;
|
|
40
|
+
set target(value: IHostAccessor);
|
|
41
|
+
private getTarget;
|
|
42
|
+
read(address: AddressLike, size: number, offset?: number): Promise<Buffer>;
|
|
43
|
+
write(address: AddressLike, data: Buffer | Uint8Array, offset?: number): Promise<number>;
|
|
44
|
+
alloc(size: number | any, address?: AddressLike | null, protection?: any, allocationType?: any): Promise<AddressLike>;
|
|
45
|
+
free(address: AddressLike, size?: number, freeType?: any): Promise<boolean>;
|
|
46
|
+
protect(address: AddressLike, size: number, newProtect: any): Promise<number>;
|
|
47
|
+
query(address: AddressLike): Promise<any>;
|
|
48
|
+
call(func: CFunction, ...args: any[]): Promise<CCallResult>;
|
|
49
|
+
machineCode(machineCode: CMachineCode): Promise<number>;
|
|
50
|
+
scan(address: AddressLike, size: number, pattern: Pattern | string): AsyncGenerator<NativeMemory>;
|
|
51
|
+
readSync(address: AddressLike, size: number, offset?: number): Buffer;
|
|
52
|
+
writeSync(address: AddressLike, data: Buffer | Uint8Array, offset?: number): number;
|
|
53
|
+
allocSync(size: number | any, address?: AddressLike | null, protection?: any, allocationType?: any): AddressLike;
|
|
54
|
+
freeSync(address: AddressLike, size?: number, freeType?: any): boolean;
|
|
55
|
+
protectSync(address: AddressLike, size: number, newProtect: any): any;
|
|
56
|
+
querySync(address: AddressLike): any;
|
|
57
|
+
callSync(func: CFunction, ...args: any[]): CCallResult;
|
|
58
|
+
machineCodeSync(machineCode: CMachineCode): number;
|
|
59
|
+
scanSync(address: AddressLike, size: number, pattern: Pattern | string): Generator<NativeMemory>;
|
|
60
|
+
close(): void;
|
|
61
|
+
protected onInit(): Promise<void>;
|
|
62
|
+
protected onInitSync(): void;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* BootstrapHostAccessor is a specialized RedirectorHostAccessor designed to resolve circular dependencies
|
|
66
|
+
* during the initialization of decorator/middleware chains.
|
|
67
|
+
* It acts as a temporary root, redirecting calls to itself (direct backend execution)
|
|
68
|
+
* during initialization, and then automatically switches to the actual root once its backend is initialized.
|
|
69
|
+
*/
|
|
70
|
+
export declare class BootstrapHostAccessor extends RedirectorHostAccessor {
|
|
71
|
+
constructor(processId: number, root: IHostAccessor);
|
|
72
|
+
protected onInit(): Promise<void>;
|
|
73
|
+
protected onInitSync(): void;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Advanced Middleware Accessor that redirects virtual memory operations
|
|
77
|
+
* (alloc, free, protect, query) to run inside the target process's context via the call method.
|
|
78
|
+
* This performs memory operations directly in the target process's thread context, optimizing access and avoiding cross-process overhead.
|
|
79
|
+
*/
|
|
80
|
+
export declare class CallRedirectorAccessor extends MiddlewareAccessor {
|
|
81
|
+
alloc(size: number, address?: AddressLike | null, protection?: number, allocationType?: number): Promise<AddressLike>;
|
|
82
|
+
allocSync(size: number, address?: AddressLike | null, protection?: number, allocationType?: number): AddressLike;
|
|
83
|
+
free(address: AddressLike, size?: number, freeType?: number): Promise<boolean>;
|
|
84
|
+
freeSync(address: AddressLike, size?: number, freeType?: number): boolean;
|
|
85
|
+
protect(address: AddressLike, size: number, newProtect: number): Promise<number>;
|
|
86
|
+
protectSync(address: AddressLike, size: number, newProtect: number): number;
|
|
87
|
+
query(address: AddressLike): Promise<MemoryBasicInformation>;
|
|
88
|
+
querySync(address: AddressLike): MemoryBasicInformation;
|
|
89
|
+
/**
|
|
90
|
+
* Same principle as this class's alloc/free/protect/query: the *target*
|
|
91
|
+
* process does the work itself via `call` (in-process VirtualQuery /
|
|
92
|
+
* VirtualAlloc), not VirtualQueryEx/VirtualAllocEx reaching in from ours.
|
|
93
|
+
*
|
|
94
|
+
* `allocNear` is a search loop rather than a single Win32 call, so this
|
|
95
|
+
* override drives it entirely through the sibling `this.query()` /
|
|
96
|
+
* `this.alloc()` (each already a remote `call`, and each still composed with
|
|
97
|
+
* subclasses like {@link IndirectCallRedirectorAccessor}). Because every probe
|
|
98
|
+
* is an expensive round-trip here, it walks one region per `VirtualQuery`
|
|
99
|
+
* using the reported `RegionSize`, instead of the base accessor's naive
|
|
100
|
+
* fixed 64KB grid steps.
|
|
101
|
+
*/
|
|
102
|
+
allocNear(target: AddressLike, size: number, options?: AllocNearOptions): Promise<AddressLike>;
|
|
103
|
+
allocNearSync(target: AddressLike, size: number, options?: AllocNearOptions): AddressLike;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Indirect variant of CallRedirectorAccessor that redirects read-write memory allocations
|
|
107
|
+
* to malloc on the process's CRT heap instead of VirtualAlloc.
|
|
108
|
+
* It tracks these heap allocations locally and intercepts free, protect, and query operations
|
|
109
|
+
* on them to optimize compatibility with external diagnostic and memory analysis tools.
|
|
110
|
+
*/
|
|
111
|
+
export declare class IndirectCallRedirectorAccessor extends CallRedirectorAccessor {
|
|
112
|
+
private readonly mallocs;
|
|
113
|
+
private findMallocBlock;
|
|
114
|
+
/** Shared by query()/querySync() -- pure, no I/O, so no need for two copies. */
|
|
115
|
+
private buildMallocBlockInfo;
|
|
116
|
+
alloc(size: number, address?: AddressLike | null, protection?: number, allocationType?: number): Promise<AddressLike>;
|
|
117
|
+
allocSync(size: number, address?: AddressLike | null, protection?: number, allocationType?: number): AddressLike;
|
|
118
|
+
free(address: AddressLike, size?: number, freeType?: number): Promise<boolean>;
|
|
119
|
+
freeSync(address: AddressLike, size?: number, freeType?: number): boolean;
|
|
120
|
+
protect(address: AddressLike, size: number, newProtect: number): Promise<number>;
|
|
121
|
+
protectSync(address: AddressLike, size: number, newProtect: number): number;
|
|
122
|
+
query(address: AddressLike): Promise<MemoryBasicInformation>;
|
|
123
|
+
querySync(address: AddressLike): MemoryBasicInformation;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Middleware Accessor that automatically intercepts call arguments,
|
|
127
|
+
* marshals complex types (strings, buffers) to remotely allocated memory blocks,
|
|
128
|
+
* executes the native call, and cleans up the temporary allocations.
|
|
129
|
+
*/
|
|
130
|
+
export declare class MarshallingCallableAccessor extends MiddlewareAccessor {
|
|
131
|
+
/**
|
|
132
|
+
* Shared by call()/callSync() -- pure decision of "does this argument need
|
|
133
|
+
* marshalling to a remote buffer, and if so, what bytes", with no I/O.
|
|
134
|
+
* Returns `null` for args that pass through unmodified.
|
|
135
|
+
*/
|
|
136
|
+
private static bufferToMarshal;
|
|
137
|
+
call(func: CFunction, ...args: any[]): Promise<CCallResult>;
|
|
138
|
+
callSync(func: CFunction, ...args: any[]): CCallResult;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Middleware Accessor that redirects write operations to run inside the target process's context
|
|
142
|
+
* by executing msvcrt!memset calls. This is useful to optimize in-process memory initialization and avoid cross-process handle locks.
|
|
143
|
+
* It optimizes writes by scanning the buffer for contiguous identical byte blocks
|
|
144
|
+
* and writing them with a single memset call.
|
|
145
|
+
*/
|
|
146
|
+
export declare class MemsetWriteAccessor extends MsvcrtDependentMiddlewareAccessor {
|
|
147
|
+
private _isExecuting;
|
|
148
|
+
/**
|
|
149
|
+
* Shared by writeAfterInit()/writeAfterInitSync() -- pure run-length scan
|
|
150
|
+
* over the buffer, no I/O, so no need for two copies.
|
|
151
|
+
*/
|
|
152
|
+
private static computeRuns;
|
|
153
|
+
writeAfterInit(address: AddressLike, data: Buffer | Uint8Array, offset?: number): Promise<number>;
|
|
154
|
+
writeAfterInitSync(address: AddressLike, data: Buffer | Uint8Array, offset?: number): number;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Middleware Accessor that reads memory using remote memcmp binary search.
|
|
158
|
+
* This completely avoids ReadProcessMemory, making it extremely low-overhead
|
|
159
|
+
* and independent of any custom machineCode execution.
|
|
160
|
+
*/
|
|
161
|
+
export declare class MemcmpReadAccessor extends MsvcrtDependentMiddlewareAccessor {
|
|
162
|
+
private _isExecuting;
|
|
163
|
+
readAfterInit(address: AddressLike, size: number, offset?: number): Promise<Buffer>;
|
|
164
|
+
readAfterInitSync(address: AddressLike, size: number, offset?: number): Buffer;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Dead-end fallback accessor that throws an error for every single memory operation.
|
|
168
|
+
* Used as a strict base definition or safety guard for middleware accessor pipelines
|
|
169
|
+
* to ensure unsupported operations are explicitly caught rather than silently ignored.
|
|
170
|
+
*/
|
|
171
|
+
export declare class ThrowingMemoryAccessor implements ISyncCallableMemoryAccessor {
|
|
172
|
+
readonly isLocal = false;
|
|
173
|
+
readonly processId: number;
|
|
174
|
+
constructor(processId: number);
|
|
175
|
+
private throwError;
|
|
176
|
+
enableDebug(): void;
|
|
177
|
+
disableDebug(): void;
|
|
178
|
+
read(_address: AddressLike, _size: number, _offset?: number): Promise<Buffer>;
|
|
179
|
+
readSync(_address: AddressLike, _size: number, _offset?: number): Buffer;
|
|
180
|
+
write(_address: AddressLike, _data: Buffer | Uint8Array, _offset?: number): Promise<number>;
|
|
181
|
+
writeSync(_address: AddressLike, _data: Buffer | Uint8Array, _offset?: number): number;
|
|
182
|
+
alloc(_size: number, _address?: AddressLike | null, _protection?: any, _allocationType?: any): Promise<AddressLike>;
|
|
183
|
+
allocSync(_size: number, _address?: AddressLike | null, _protection?: any, _allocationType?: any): AddressLike;
|
|
184
|
+
allocNear(_target: AddressLike, _size: number, _options?: AllocNearOptions): Promise<AddressLike>;
|
|
185
|
+
allocNearSync(_target: AddressLike, _size: number, _options?: AllocNearOptions): AddressLike;
|
|
186
|
+
free(_address: AddressLike, _size?: number, _freeType?: any): Promise<boolean>;
|
|
187
|
+
freeSync(_address: AddressLike, _size?: number, _freeType?: any): boolean;
|
|
188
|
+
protect(_address: AddressLike, _size: number, _newProtect: any): Promise<number>;
|
|
189
|
+
protectSync(_address: AddressLike, _size: number, _newProtect: any): any;
|
|
190
|
+
query(_address: AddressLike): Promise<any>;
|
|
191
|
+
querySync(_address: AddressLike): any;
|
|
192
|
+
call(_func: CFunction, ..._args: any[]): Promise<CCallResult>;
|
|
193
|
+
callSync(_func: CFunction, ..._args: any[]): CCallResult;
|
|
194
|
+
scan(_address: AddressLike, _size: number, _pattern: Pattern | string): AsyncGenerator<NativeMemory>;
|
|
195
|
+
scanSync(_address: AddressLike, _size: number, _pattern: Pattern | string): Generator<NativeMemory>;
|
|
196
|
+
readInt8(_address: AddressLike, _offset?: number): Promise<number>;
|
|
197
|
+
readInt8Sync(_address: AddressLike, _offset?: number): number;
|
|
198
|
+
readUInt8(_address: AddressLike, _offset?: number): Promise<number>;
|
|
199
|
+
readUInt8Sync(_address: AddressLike, _offset?: number): number;
|
|
200
|
+
readInt16(_address: AddressLike, _offset?: number): Promise<number>;
|
|
201
|
+
readInt16Sync(_address: AddressLike, _offset?: number): number;
|
|
202
|
+
readUInt16(_address: AddressLike, _offset?: number): Promise<number>;
|
|
203
|
+
readUInt16Sync(_address: AddressLike, _offset?: number): number;
|
|
204
|
+
readInt32(_address: AddressLike, _offset?: number): Promise<number>;
|
|
205
|
+
readInt32Sync(_address: AddressLike, _offset?: number): number;
|
|
206
|
+
readUInt32(_address: AddressLike, _offset?: number): Promise<number>;
|
|
207
|
+
readUInt32Sync(_address: AddressLike, _offset?: number): number;
|
|
208
|
+
readInt64(_address: AddressLike, _offset?: number): Promise<bigint>;
|
|
209
|
+
readInt64Sync(_address: AddressLike, _offset?: number): bigint;
|
|
210
|
+
readUInt64(_address: AddressLike, _offset?: number): Promise<bigint>;
|
|
211
|
+
readUInt64Sync(_address: AddressLike, _offset?: number): bigint;
|
|
212
|
+
readFloat(_address: AddressLike, _offset?: number): Promise<number>;
|
|
213
|
+
readFloatSync(_address: AddressLike, _offset?: number): number;
|
|
214
|
+
readDouble(_address: AddressLike, _offset?: number): Promise<number>;
|
|
215
|
+
readDoubleSync(_address: AddressLike, _offset?: number): number;
|
|
216
|
+
readPointer(_address: AddressLike, _offset?: number): Promise<number>;
|
|
217
|
+
readPointerSync(_address: AddressLike, _offset?: number): number;
|
|
218
|
+
writeInt8(_address: AddressLike, _value: number, _offset?: number): Promise<number>;
|
|
219
|
+
writeInt8Sync(_address: AddressLike, _value: number, _offset?: number): number;
|
|
220
|
+
writeUInt8(_address: AddressLike, _value: number, _offset?: number): Promise<number>;
|
|
221
|
+
writeUInt8Sync(_address: AddressLike, _value: number, _offset?: number): number;
|
|
222
|
+
writeInt16(_address: AddressLike, _value: number, _offset?: number): Promise<number>;
|
|
223
|
+
writeInt16Sync(_address: AddressLike, _value: number, _offset?: number): number;
|
|
224
|
+
writeUInt16(_address: AddressLike, _value: number, _offset?: number): Promise<number>;
|
|
225
|
+
writeUInt16Sync(_address: AddressLike, _value: number, _offset?: number): number;
|
|
226
|
+
writeInt32(_address: AddressLike, _value: number, _offset?: number): Promise<number>;
|
|
227
|
+
writeInt32Sync(_address: AddressLike, _value: number, _offset?: number): number;
|
|
228
|
+
writeUInt32(_address: AddressLike, _value: number, _offset?: number): Promise<number>;
|
|
229
|
+
writeUInt32Sync(_address: AddressLike, _value: number, _offset?: number): number;
|
|
230
|
+
writeInt64(_address: AddressLike, _value: bigint | number, _offset?: number): Promise<number>;
|
|
231
|
+
writeInt64Sync(_address: AddressLike, _value: bigint | number, _offset?: number): number;
|
|
232
|
+
writeUInt64(_address: AddressLike, _value: bigint | number, _offset?: number): Promise<number>;
|
|
233
|
+
writeUInt64Sync(_address: AddressLike, _value: bigint | number, _offset?: number): number;
|
|
234
|
+
writeFloat(_address: AddressLike, _value: number, _offset?: number): Promise<number>;
|
|
235
|
+
writeFloatSync(_address: AddressLike, _value: number, _offset?: number): number;
|
|
236
|
+
writeDouble(_address: AddressLike, _value: number, _offset?: number): Promise<number>;
|
|
237
|
+
writeDoubleSync(_address: AddressLike, _value: number, _offset?: number): number;
|
|
238
|
+
writePointer(_address: AddressLike, _value: number | bigint, _offset?: number): Promise<number>;
|
|
239
|
+
writePointerSync(_address: AddressLike, _value: number | bigint, _offset?: number): number;
|
|
240
|
+
machineCode(_machineCode: CMachineCode): Promise<number>;
|
|
241
|
+
machineCodeSync(_machineCode: CMachineCode): number;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Middleware Accessor that redirects memory reads to transfer via a temporary file,
|
|
245
|
+
* using standard C library calls (fopen, fwrite, fclose) in the target process.
|
|
246
|
+
* This is useful to perform high-volume structured memory extraction through file I/O instead of raw memory streaming.
|
|
247
|
+
*/
|
|
248
|
+
export declare class FileTransferReadAccessor extends MsvcrtDependentMiddlewareAccessor {
|
|
249
|
+
private hFile?;
|
|
250
|
+
private tempFilePath?;
|
|
251
|
+
protected onInit(): Promise<void>;
|
|
252
|
+
protected onInitSync(): void;
|
|
253
|
+
private ensureOpen;
|
|
254
|
+
private ensureOpenSync;
|
|
255
|
+
protected onDeinit(): Promise<void>;
|
|
256
|
+
protected onDeinitSync(): void;
|
|
257
|
+
readAfterInit(address: AddressLike, size: number, offset?: number): Promise<Buffer>;
|
|
258
|
+
readAfterInitSync(address: AddressLike, size: number, offset?: number): Buffer;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Middleware Accessor that redirects memory writes to transfer via a temporary file,
|
|
262
|
+
* using standard C library calls (fopen, fread, fclose) in the target process.
|
|
263
|
+
* This is useful to perform structured memory staging via file systems to handle large block updates safely.
|
|
264
|
+
*/
|
|
265
|
+
export declare class FileTransferWriteAccessor extends MsvcrtDependentMiddlewareAccessor {
|
|
266
|
+
private hFile?;
|
|
267
|
+
private tempFilePath?;
|
|
268
|
+
protected onInit(): Promise<void>;
|
|
269
|
+
protected onInitSync(): void;
|
|
270
|
+
private ensureOpen;
|
|
271
|
+
private ensureOpenSync;
|
|
272
|
+
protected onDeinit(): Promise<void>;
|
|
273
|
+
protected onDeinitSync(): void;
|
|
274
|
+
writeAfterInit(address: AddressLike, data: Buffer | Uint8Array, offset?: number): Promise<number>;
|
|
275
|
+
writeAfterInitSync(address: AddressLike, data: Buffer | Uint8Array, offset?: number): number;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Middleware Accessor that caches target process metadata (bitness, process name, core modules status)
|
|
279
|
+
* on demand, and intercepts dynamic module queries to cache returned module handles.
|
|
280
|
+
*/
|
|
281
|
+
export declare class ProcessCacheAccessor extends InittableMiddlewareAccessor {
|
|
282
|
+
private static readonly TARGET_MODULE_NAMES;
|
|
283
|
+
/** Pure, no I/O -- shared by every place that needs to trim/lowercase a module name buffer. */
|
|
284
|
+
private static extractModuleName;
|
|
285
|
+
/** Pure, no I/O -- shared by callAfterInit()/callAfterInitSync(). */
|
|
286
|
+
private static resolveTrackedAddrs;
|
|
287
|
+
/** Pure, no I/O -- shared by getIs64Bit()/getIs64BitSync() to find an already-open handle in the chain. */
|
|
288
|
+
private static findOpenHandleInChain;
|
|
289
|
+
private writeMemoryCache;
|
|
290
|
+
private moduleHandleCache;
|
|
291
|
+
private cachedIs64Bit;
|
|
292
|
+
private cachedProcessName;
|
|
293
|
+
private cachedCoreModules;
|
|
294
|
+
protected onInit(): Promise<void>;
|
|
295
|
+
protected onInitSync(): void;
|
|
296
|
+
/** Core of getIs64Bit()/getIs64BitSync() -- entirely local/synchronous Win32 calls already, so both share this verbatim. */
|
|
297
|
+
private getIs64BitCore;
|
|
298
|
+
getIs64Bit(): Promise<boolean>;
|
|
299
|
+
/** Sync twin of getIs64Bit() -- initializes the chain via initSync() if it hasn't run yet. */
|
|
300
|
+
getIs64BitSync(): boolean;
|
|
301
|
+
/** Core of getProcessName()/getProcessNameSync() -- entirely local/synchronous Win32 calls already, so both share this verbatim. */
|
|
302
|
+
private getProcessNameCore;
|
|
303
|
+
getProcessName(): Promise<string>;
|
|
304
|
+
/** Sync twin of getProcessName() -- initializes the chain via initSync() if it hasn't run yet. */
|
|
305
|
+
getProcessNameSync(): string;
|
|
306
|
+
getCoreModules(): Promise<CoreModulesStatus>;
|
|
307
|
+
/** Sync twin of getCoreModules() -- initializes the chain via initSync() if it hasn't run yet. */
|
|
308
|
+
getCoreModulesSync(): CoreModulesStatus;
|
|
309
|
+
protected writeAfterInit(address: AddressLike, data: Buffer | Uint8Array, offset?: number): Promise<number>;
|
|
310
|
+
protected writeAfterInitSync(address: AddressLike, data: Buffer | Uint8Array, offset?: number): number;
|
|
311
|
+
/** Cache lookup for a module name buffer at `namePtr` -- pure, no I/O; `null` means the caller must read it remotely. */
|
|
312
|
+
private cachedModuleName;
|
|
313
|
+
private resolveModuleName;
|
|
314
|
+
private resolveModuleNameSync;
|
|
315
|
+
protected callAfterInit(func: CFunction, args: any[]): Promise<CCallResult>;
|
|
316
|
+
protected callAfterInitSync(func: CFunction, args: any[]): CCallResult;
|
|
317
|
+
protected freeAfterInit(address: AddressLike, size?: number, freeType?: number): Promise<boolean>;
|
|
318
|
+
protected freeAfterInitSync(address: AddressLike, size?: number, freeType?: number): boolean;
|
|
319
|
+
}
|
|
320
|
+
export declare class MachineCodePoolMiddleware extends MiddlewareAccessor {
|
|
321
|
+
private blocks;
|
|
322
|
+
private alignment;
|
|
323
|
+
private defaultBlockSize;
|
|
324
|
+
/**
|
|
325
|
+
* Shared by getOrAllocBlock()/getOrAllocBlockSync() -- pure scan for
|
|
326
|
+
* existing space, no I/O, so no need for two copies. `null` means the
|
|
327
|
+
* caller must allocate a fresh block itself (the only part that needs I/O).
|
|
328
|
+
*/
|
|
329
|
+
private findBlockWithSpace;
|
|
330
|
+
private getOrAllocBlock;
|
|
331
|
+
private getOrAllocBlockSync;
|
|
332
|
+
machineCode(machineCode: CMachineCode): Promise<number>;
|
|
333
|
+
machineCodeSync(machineCode: CMachineCode): number;
|
|
334
|
+
}
|
|
335
|
+
export declare class ScannerMiddleware extends MiddlewareAccessor {
|
|
336
|
+
/**
|
|
337
|
+
* Shared by scan()/scanSync() -- pure decision of which memmemN machineCode
|
|
338
|
+
* to upload and how to encode the needle for a given pattern width, no I/O.
|
|
339
|
+
* `sc` still needs uploading (await machineCode() vs machineCodeSync()) by
|
|
340
|
+
* the caller; `needleVal`/`isWithoutBuffer` are used directly once uploaded.
|
|
341
|
+
*/
|
|
342
|
+
private static pickMemmemVariant;
|
|
343
|
+
scan(address: AddressLike, size: number, pattern: Pattern | string): AsyncGenerator<NativeMemory>;
|
|
344
|
+
scanSync(address: AddressLike, size: number, pattern: Pattern | string): Generator<NativeMemory>;
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=middleware-accessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware-accessor.d.ts","sourceRoot":"","sources":["../src/middleware-accessor.ts"],"names":[],"mappings":"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"}
|