@cheatron/native 1.2.0 → 1.2.2

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/process.js CHANGED
@@ -4,15 +4,18 @@ import { Handle } from './handle';
4
4
  import { log } from './logger';
5
5
  import { Scanner } from './scanner';
6
6
  import { Pattern } from './pattern';
7
+ import { ScanResult, ScanEntry } from './scan-result';
7
8
  const processLog = log.child('Process');
8
9
  /**
9
10
  * Represents a process handle
10
11
  */
11
12
  export class Process extends Handle {
12
13
  _pid;
14
+ memory;
13
15
  constructor(handle, pid, autoClose = true) {
14
16
  super(handle, autoClose);
15
17
  this._pid = pid ?? Kernel32Impl.GetProcessId(handle);
18
+ this.memory = new ProcessMemory(this);
16
19
  }
17
20
  static open(pid, access = ProcessAccess.ALL_ACCESS) {
18
21
  processLog.debug(`Opening process ${pid} with access ${access}`);
@@ -23,30 +26,6 @@ export class Process extends Handle {
23
26
  }
24
27
  return new Process(handle, pid);
25
28
  }
26
- readMemory(address, size) {
27
- if (!this.isValid())
28
- throw new Error('Process handle is closed');
29
- const buf = Buffer.alloc(size);
30
- const success = Kernel32Impl.ReadProcessMemory(this._handle, address, buf, size, null);
31
- if (!success) {
32
- const addrHex = ffi.address(address).toString(16).toUpperCase();
33
- processLog.error(`ReadProcessMemory failed at 0x${addrHex}`);
34
- throw new Error(`ReadProcessMemory failed at 0x${addrHex}`);
35
- }
36
- return buf;
37
- }
38
- read = this.readMemory;
39
- writeMemory(address, buffer) {
40
- if (!this.isValid())
41
- throw new Error('Process handle is closed');
42
- const success = Kernel32Impl.WriteProcessMemory(this._handle, address, buffer, buffer.length, null);
43
- if (!success) {
44
- const addrHex = ffi.address(address).toString(16).toUpperCase();
45
- processLog.error(`WriteProcessMemory failed at 0x${addrHex}`);
46
- throw new Error(`WriteProcessMemory failed at 0x${addrHex}`);
47
- }
48
- }
49
- write = this.writeMemory;
50
29
  createThread(startAddress, parameter = null, stackSize = 0, flags = ThreadCreationFlags.IMMEDIATE, attributes = null) {
51
30
  if (!this.isValid())
52
31
  throw new Error('Process handle is closed');
@@ -58,106 +37,63 @@ export class Process extends Handle {
58
37
  }
59
38
  return new Thread(handle);
60
39
  }
61
- virtualQuery(address) {
62
- if (!this.isValid())
63
- throw new Error('Process handle is closed');
64
- const buf = Buffer.alloc(MBI_SIZE);
65
- const result = Kernel32Impl.VirtualQueryEx(this._handle, address, buf, MBI_SIZE);
66
- if (result === 0) {
67
- const addrHex = ffi.address(address).toString(16).toUpperCase();
68
- processLog.error(`VirtualQueryEx failed at 0x${addrHex}`);
69
- throw new Error(`VirtualQueryEx failed at 0x${addrHex}`);
70
- }
71
- return ffi.decode(buf, MEMORY_BASIC_INFORMATION);
72
- }
73
- query = this.virtualQuery;
74
- /**
75
- * Allocates memory in the process.
76
- */
77
- alloc(size, address = null, allocationType = MemoryState.COMMIT | MemoryState.RESERVE, protection = MemoryProtection.READWRITE) {
78
- if (!this.isValid())
79
- throw new Error('Process handle is closed');
80
- const result = Kernel32Impl.VirtualAllocEx(this._handle, address, size, allocationType, protection);
81
- if (!result) {
82
- processLog.error(`VirtualAllocEx failed (PID: ${this._pid}, size: ${size})`);
83
- }
84
- return result;
85
- }
86
- /**
87
- * Frees memory in the process.
88
- */
89
- free(address, size = 0, freeType = MemoryFreeType.RELEASE) {
90
- if (!this.isValid())
91
- throw new Error('Process handle is closed');
92
- const result = Kernel32Impl.VirtualFreeEx(this._handle, address, size, freeType);
93
- if (!result) {
94
- const addrHex = ffi.address(address).toString(16).toUpperCase();
95
- processLog.error(`VirtualFreeEx failed at 0x${addrHex}`);
96
- }
97
- return !!result;
98
- }
99
- /**
100
- * Finds a pattern in a specific memory range
101
- * @param signature Pattern string (e.g. "55 8B EC ?? 56")
102
- * @param start Start address
103
- * @param size Scan size
104
- */
105
- findPatternInRange(signature, start, size) {
106
- const results = this.findAllPatternsInRange(signature, start, size, 1);
107
- return results[0] ?? null;
108
- }
109
40
  /**
110
- * Finds all matches of a pattern in a specific memory range
41
+ * Finds pattern matches in a specific memory range.
42
+ * Configure limit on the Pattern: `.limit(1)` for first match only.
111
43
  */
112
- findAllPatternsInRange(signature, start, size, limit = 0) {
113
- if (this._pid !== Kernel32Impl.GetCurrentProcessId()) {
114
- throw new Error('Memory scanning is only supported for the current process');
44
+ *findPatternInRangeGenerator(pattern, start, size, module) {
45
+ const end = start + BigInt(size);
46
+ let current = start;
47
+ try {
48
+ while (current < end) {
49
+ const mbi = this.memory.query(current);
50
+ const regionBase = BigInt(mbi.BaseAddress);
51
+ const regionSize = BigInt(mbi.RegionSize);
52
+ const regionEnd = regionBase + regionSize;
53
+ const isReadable = mbi.State === MemoryState.COMMIT &&
54
+ !(mbi.Protect & MemoryProtection.GUARD) &&
55
+ !!(mbi.Protect & pattern.protect);
56
+ if (isReadable) {
57
+ const scanStart = current > regionBase ? current : regionBase;
58
+ const scanEnd = end < regionEnd ? end : regionEnd;
59
+ const scanSize = Number(scanEnd - scanStart);
60
+ if (scanSize >= pattern.length) {
61
+ for (const ptr of Scanner.scan(scanStart, scanSize, pattern)) {
62
+ yield new ScanEntry(ptr, module);
63
+ }
64
+ }
65
+ }
66
+ if (regionEnd <= current)
67
+ break;
68
+ current = regionEnd;
69
+ }
115
70
  }
116
- const pattern = signature instanceof Pattern ? signature : new Pattern(signature, limit);
117
- const results = [];
118
- const searchLimit = limit > 0 ? limit : pattern.limit > 0 ? pattern.limit : -1;
119
- const hasLimit = searchLimit !== -1;
120
- for (const addr of Scanner.scan(start, size, pattern)) {
121
- results.push(addr);
122
- if (hasLimit && results.length >= searchLimit)
123
- break;
71
+ catch {
72
+ // Range partially unmapped or error
124
73
  }
125
- return results;
126
74
  }
127
- /**
128
- * Finds a pattern in all committed and readable memory of the process
129
- */
130
- findPattern(signature) {
131
- const results = this.findAllPatterns(signature, 1);
132
- return results[0] ?? null;
75
+ findPatternInRange(signature, start, size, module) {
76
+ const pattern = signature instanceof Pattern ? signature : new Pattern(signature);
77
+ if (pattern.protect === 0)
78
+ pattern.defaultProtect();
79
+ return new ScanResult(this.findPatternInRangeGenerator(pattern, start, size, module), pattern);
133
80
  }
134
81
  /**
135
- * Finds all matches of a pattern in all committed and readable memory
82
+ * Finds pattern matches in all committed readable memory of the process.
83
+ * Configure limit and protect filter on the Pattern object.
136
84
  */
137
- findAllPatterns(signature, limit = 0) {
138
- const results = [];
85
+ *findPatternGenerator(pattern) {
139
86
  let address = 0n;
140
- const pattern = signature instanceof Pattern ? signature : new Pattern(signature, limit);
141
- const searchLimit = limit > 0 ? limit : pattern.limit > 0 ? pattern.limit : -1;
142
- const hasLimit = searchLimit !== -1;
143
- // Max address for x64 user-space: 0x7FFFFFFFFFFF
144
87
  const maxAddress = 0x7fffffffffffn;
145
88
  try {
146
89
  while (address < maxAddress) {
147
- const mbi = this.virtualQuery(address);
148
- // Region is committed, not guarded, and has some form of read access
90
+ const mbi = this.memory.query(address);
149
91
  const isReadable = mbi.State === MemoryState.COMMIT &&
150
92
  !(mbi.Protect & MemoryProtection.GUARD) &&
151
- (mbi.Protect & MemoryProtection.READONLY ||
152
- mbi.Protect & MemoryProtection.READWRITE ||
153
- mbi.Protect & MemoryProtection.EXECUTE_READ ||
154
- mbi.Protect & MemoryProtection.EXECUTE_READWRITE);
93
+ !!(mbi.Protect & pattern.protect);
155
94
  if (isReadable) {
156
- const regionLimit = hasLimit ? searchLimit - results.length : 0;
157
- const regionResults = this.findAllPatternsInRange(pattern, BigInt(mbi.BaseAddress), Number(mbi.RegionSize), regionLimit);
158
- results.push(...regionResults);
159
- if (hasLimit && results.length >= searchLimit)
160
- break;
95
+ const regionResult = this.findPatternInRange(pattern, BigInt(mbi.BaseAddress), Number(mbi.RegionSize));
96
+ yield* regionResult;
161
97
  }
162
98
  const nextAddress = BigInt(mbi.BaseAddress) + BigInt(mbi.RegionSize);
163
99
  if (nextAddress <= address)
@@ -168,53 +104,43 @@ export class Process extends Handle {
168
104
  catch {
169
105
  // Loop finished
170
106
  }
171
- return results;
172
107
  }
173
- /**
174
- * Scans specific loaded modules for a given pattern.
175
- * Finds the first pattern match across the specified (or default) modules.
176
- * @param signature Pattern string (e.g. "55 8B EC ?? 56") or Pattern object
177
- * @param moduleNames Array of module names (e.g. ['kernel32.dll', 'msvcrt.dll'])
178
- * @returns The first matched address, or null if not found
179
- */
180
- findPatternFromModules(signature, moduleNames = []) {
181
- const results = this.findAllPatternsFromModules(signature, moduleNames, 1);
182
- return results[0] ?? null;
108
+ findPattern(signature) {
109
+ const pattern = signature instanceof Pattern ? signature : new Pattern(signature);
110
+ // Ensure protect mask is set before filtering regions
111
+ if (pattern.protect === 0)
112
+ pattern.defaultProtect();
113
+ return new ScanResult(this.findPatternGenerator(pattern), pattern);
183
114
  }
184
115
  /**
185
- * Finds all matches of a pattern across specified modules
116
+ * Finds pattern matches across specified modules (default: all static modules).
117
+ * Each entry in the result is tagged with its source module.
118
+ * Configure limit and protect filter on the Pattern object.
186
119
  */
187
- findAllPatternsFromModules(signature, moduleNames = [], limit = 0) {
188
- // Lazy load Module to prevent circular dependencies at the top level
120
+ *findPatternFromModulesGenerator(pattern, moduleNames) {
189
121
  // eslint-disable-next-line @typescript-eslint/no-require-imports
190
- const { Module, STATIC_MODULES } = require('./module');
191
- if (this._pid !== Kernel32Impl.GetCurrentProcessId()) {
192
- throw new Error('Module scanning is only supported for the current process');
193
- }
194
- if (moduleNames.length === 0) {
195
- moduleNames = Object.values(STATIC_MODULES);
196
- }
197
- const pattern = signature instanceof Pattern ? signature : new Pattern(signature, limit);
198
- const results = [];
199
- const searchLimit = limit > 0 ? limit : pattern.limit > 0 ? pattern.limit : -1;
200
- const hasLimit = searchLimit !== -1;
122
+ const { Module } = require('./module');
201
123
  for (const name of moduleNames) {
202
124
  try {
203
125
  const mod = Module.get(name);
204
- const modResults = mod.findAllPatterns(pattern);
205
- for (const addr of modResults) {
206
- results.push(addr);
207
- if (hasLimit && results.length >= searchLimit)
208
- break;
209
- }
210
- if (hasLimit && results.length >= searchLimit)
211
- break;
126
+ yield* mod.findPattern(pattern);
212
127
  }
213
128
  catch (err) {
214
- processLog.warn(`findAllPatternsFromModules: Failed to process module ${name}: ${err}`);
129
+ processLog.warn(`findPatternFromModules: Failed to process module ${name}: ${err}`);
215
130
  }
216
131
  }
217
- return results;
132
+ }
133
+ findPatternFromModules(signature, moduleNames = []) {
134
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
135
+ const { STATIC_MODULES } = require('./module');
136
+ if (this._pid !== Kernel32Impl.GetCurrentProcessId()) {
137
+ throw new Error('Module scanning is only supported for the current process');
138
+ }
139
+ if (moduleNames.length === 0) {
140
+ moduleNames = Object.values(STATIC_MODULES);
141
+ }
142
+ const pattern = signature instanceof Pattern ? signature : new Pattern(signature);
143
+ return new ScanResult(this.findPatternFromModulesGenerator(pattern, moduleNames), pattern);
218
144
  }
219
145
  static current() {
220
146
  return currentProcess;
@@ -230,25 +156,11 @@ export class CurrentProcess extends Process {
230
156
  constructor() {
231
157
  // Current process uses a pseudo-handle that doesn't need closing
232
158
  super(Kernel32Impl.GetCurrentProcess(), Kernel32Impl.GetCurrentProcessId());
159
+ this.memory = new CurrentProcessMemory(this);
233
160
  }
234
161
  createThread(startAddress, parameter, stackSize = 0, flags, attributes) {
235
162
  return Thread.create(startAddress, parameter, stackSize, flags, attributes);
236
163
  }
237
- alloc(size, address = null, allocationType = MemoryState.COMMIT | MemoryState.RESERVE, protection = MemoryProtection.READWRITE) {
238
- const result = Kernel32Impl.VirtualAlloc(address, size, allocationType, protection);
239
- if (!result) {
240
- processLog.error(`VirtualAlloc failed (size: ${size})`);
241
- }
242
- return result;
243
- }
244
- free(address, size = 0, freeType = MemoryFreeType.RELEASE) {
245
- const result = Kernel32Impl.VirtualFree(address, size, freeType);
246
- if (!result) {
247
- const addrHex = ffi.address(address).toString(16).toUpperCase();
248
- processLog.error(`VirtualFree failed at 0x${addrHex}`);
249
- }
250
- return !!result;
251
- }
252
164
  close() {
253
165
  this._handle = null;
254
166
  }
@@ -266,4 +178,225 @@ export const currentProcess = new Proxy({}, {
266
178
  return CurrentProcess.prototype;
267
179
  },
268
180
  });
181
+ /**
182
+ * Manages memory operations for a given process handle.
183
+ */
184
+ export class ProcessMemory {
185
+ process;
186
+ // eslint-disable-next-line no-unused-vars
187
+ constructor(process) {
188
+ this.process = process;
189
+ }
190
+ read(address, size) {
191
+ if (!this.process.isValid())
192
+ throw new Error('Process handle is closed');
193
+ const buf = Buffer.alloc(size);
194
+ const success = Kernel32Impl.ReadProcessMemory(this.process.handle, address, buf, size, null);
195
+ if (!success) {
196
+ const addrHex = ffi.address(address).toString(16).toUpperCase();
197
+ processLog.error(`ReadProcessMemory failed at 0x${addrHex}`);
198
+ throw new Error(`ReadProcessMemory failed at 0x${addrHex}`);
199
+ }
200
+ return buf;
201
+ }
202
+ readMemory = this.read;
203
+ write(address, buffer) {
204
+ if (!this.process.isValid())
205
+ throw new Error('Process handle is closed');
206
+ const success = Kernel32Impl.WriteProcessMemory(this.process.handle, address, buffer, buffer.length, null);
207
+ if (!success) {
208
+ const addrHex = ffi.address(address).toString(16).toUpperCase();
209
+ processLog.error(`WriteProcessMemory failed at 0x${addrHex}`);
210
+ throw new Error(`WriteProcessMemory failed at 0x${addrHex}`);
211
+ }
212
+ }
213
+ writeMemory = this.write;
214
+ readInt8(address) {
215
+ return this.read(address, 1).readInt8(0);
216
+ }
217
+ writeInt8(address, value) {
218
+ const buf = Buffer.alloc(1);
219
+ buf.writeInt8(value, 0);
220
+ this.write(address, buf);
221
+ }
222
+ readUInt8(address) {
223
+ return this.read(address, 1).readUInt8(0);
224
+ }
225
+ writeUInt8(address, value) {
226
+ const buf = Buffer.alloc(1);
227
+ buf.writeUInt8(value, 0);
228
+ this.write(address, buf);
229
+ }
230
+ readInt16(address) {
231
+ return this.read(address, 2).readInt16LE(0);
232
+ }
233
+ writeInt16(address, value) {
234
+ const buf = Buffer.alloc(2);
235
+ buf.writeInt16LE(value, 0);
236
+ this.write(address, buf);
237
+ }
238
+ readUInt16(address) {
239
+ return this.read(address, 2).readUInt16LE(0);
240
+ }
241
+ writeUInt16(address, value) {
242
+ const buf = Buffer.alloc(2);
243
+ buf.writeUInt16LE(value, 0);
244
+ this.write(address, buf);
245
+ }
246
+ readInt32(address) {
247
+ return this.read(address, 4).readInt32LE(0);
248
+ }
249
+ writeInt32(address, value) {
250
+ const buf = Buffer.alloc(4);
251
+ buf.writeInt32LE(value, 0);
252
+ this.write(address, buf);
253
+ }
254
+ readUInt32(address) {
255
+ return this.read(address, 4).readUInt32LE(0);
256
+ }
257
+ writeUInt32(address, value) {
258
+ const buf = Buffer.alloc(4);
259
+ buf.writeUInt32LE(value, 0);
260
+ this.write(address, buf);
261
+ }
262
+ readInt64(address) {
263
+ return this.read(address, 8).readBigInt64LE(0);
264
+ }
265
+ writeInt64(address, value) {
266
+ const buf = Buffer.alloc(8);
267
+ buf.writeBigInt64LE(value, 0);
268
+ this.write(address, buf);
269
+ }
270
+ readUInt64(address) {
271
+ return this.read(address, 8).readBigUInt64LE(0);
272
+ }
273
+ writeUInt64(address, value) {
274
+ const buf = Buffer.alloc(8);
275
+ buf.writeBigUInt64LE(value, 0);
276
+ this.write(address, buf);
277
+ }
278
+ readFloat(address) {
279
+ return this.read(address, 4).readFloatLE(0);
280
+ }
281
+ writeFloat(address, value) {
282
+ const buf = Buffer.alloc(4);
283
+ buf.writeFloatLE(value, 0);
284
+ this.write(address, buf);
285
+ }
286
+ readDouble(address) {
287
+ return this.read(address, 8).readDoubleLE(0);
288
+ }
289
+ writeDouble(address, value) {
290
+ const buf = Buffer.alloc(8);
291
+ buf.writeDoubleLE(value, 0);
292
+ this.write(address, buf);
293
+ }
294
+ readString(address, length, encoding = 'utf8') {
295
+ const buf = this.read(address, length);
296
+ // Trim null byte if exists at the end
297
+ const nullIdx = buf.indexOf(0);
298
+ if (nullIdx !== -1) {
299
+ return buf.toString(encoding, 0, nullIdx);
300
+ }
301
+ return buf.toString(encoding);
302
+ }
303
+ writeString(address, value, encoding = 'utf8') {
304
+ const buf = Buffer.from(value + '\0', encoding);
305
+ this.write(address, buf);
306
+ }
307
+ query(address) {
308
+ if (!this.process.isValid())
309
+ throw new Error('Process handle is closed');
310
+ const buf = Buffer.alloc(MBI_SIZE);
311
+ const result = Kernel32Impl.VirtualQueryEx(this.process.handle, address, buf, MBI_SIZE);
312
+ if (result === 0) {
313
+ const addrHex = ffi.address(address).toString(16).toUpperCase();
314
+ processLog.error(`VirtualQueryEx failed at 0x${addrHex}`);
315
+ throw new Error(`VirtualQueryEx failed at 0x${addrHex}`);
316
+ }
317
+ return ffi.decode(buf, MEMORY_BASIC_INFORMATION);
318
+ }
319
+ virtualQuery = this.query;
320
+ /**
321
+ * Allocates memory in the process.
322
+ */
323
+ alloc(size, address = null, allocationType = MemoryState.COMMIT | MemoryState.RESERVE, protection = MemoryProtection.READWRITE) {
324
+ if (!this.process.isValid())
325
+ throw new Error('Process handle is closed');
326
+ const result = Kernel32Impl.VirtualAllocEx(this.process.handle, address, size, allocationType, protection);
327
+ if (!result) {
328
+ processLog.error(`VirtualAllocEx failed (PID: ${this.process.pid}, size: ${size})`);
329
+ }
330
+ return result;
331
+ }
332
+ /**
333
+ * Frees memory in the process.
334
+ */
335
+ free(address, size = 0, freeType = MemoryFreeType.RELEASE) {
336
+ if (!this.process.isValid())
337
+ throw new Error('Process handle is closed');
338
+ const result = Kernel32Impl.VirtualFreeEx(this.process.handle, address, size, freeType);
339
+ if (!result) {
340
+ const addrHex = ffi.address(address).toString(16).toUpperCase();
341
+ processLog.error(`VirtualFreeEx failed at 0x${addrHex}`);
342
+ }
343
+ return !!result;
344
+ }
345
+ /**
346
+ * Changes the memory protection of a region of memory.
347
+ */
348
+ protect(address, size, newProtect) {
349
+ if (!this.process.isValid())
350
+ throw new Error('Process handle is closed');
351
+ const oldProtectBuf = Buffer.alloc(4);
352
+ const result = Kernel32Impl.VirtualProtectEx(this.process.handle, address, size, newProtect, oldProtectBuf);
353
+ if (!result) {
354
+ const addrHex = ffi.address(address).toString(16).toUpperCase();
355
+ processLog.error(`VirtualProtectEx failed at 0x${addrHex}`);
356
+ return null;
357
+ }
358
+ return oldProtectBuf.readUInt32LE(0);
359
+ }
360
+ }
361
+ /**
362
+ * Optimizes memory operations natively for the current running process.
363
+ */
364
+ export class CurrentProcessMemory extends ProcessMemory {
365
+ alloc(size, address = null, allocationType = MemoryState.COMMIT | MemoryState.RESERVE, protection = MemoryProtection.READWRITE) {
366
+ const result = Kernel32Impl.VirtualAlloc(address, size, allocationType, protection);
367
+ if (!result) {
368
+ processLog.error(`VirtualAlloc failed (size: ${size})`);
369
+ }
370
+ return result;
371
+ }
372
+ free(address, size = 0, freeType = MemoryFreeType.RELEASE) {
373
+ const result = Kernel32Impl.VirtualFree(address, size, freeType);
374
+ if (!result) {
375
+ const addrHex = ffi.address(address).toString(16).toUpperCase();
376
+ processLog.error(`VirtualFree failed at 0x${addrHex}`);
377
+ }
378
+ return !!result;
379
+ }
380
+ protect(address, size, newProtect) {
381
+ const oldProtectBuf = Buffer.alloc(4);
382
+ const result = Kernel32Impl.VirtualProtect(address, BigInt(size), newProtect, oldProtectBuf);
383
+ if (!result) {
384
+ const addrHex = ffi.address(address).toString(16).toUpperCase();
385
+ processLog.error(`VirtualProtect failed at 0x${addrHex}`);
386
+ return null;
387
+ }
388
+ return oldProtectBuf.readUInt32LE(0);
389
+ }
390
+ query(address) {
391
+ const buf = Buffer.alloc(MBI_SIZE);
392
+ const result = Kernel32Impl.VirtualQuery(address, buf, MBI_SIZE);
393
+ if (result === 0) {
394
+ const addrHex = ffi.address(address).toString(16).toUpperCase();
395
+ processLog.error(`VirtualQuery failed at 0x${addrHex}`);
396
+ throw new Error(`VirtualQuery failed at 0x${addrHex}`);
397
+ }
398
+ return ffi.decode(buf, MEMORY_BASIC_INFORMATION);
399
+ }
400
+ virtualQuery = this.query;
401
+ }
269
402
  //# sourceMappingURL=process.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { Pattern } from './pattern';
2
+ /**
3
+ * A single pattern match entry.
4
+ * Stores the decoded numeric address (bigint) of the match.
5
+ * Call `toAddress()` to retrieve it — consistent with how ffi.address() works.
6
+ */
7
+ export declare class ScanEntry {
8
+ readonly address: bigint;
9
+ readonly module?: import('./module').Module;
10
+ constructor(address: bigint, module?: import('./module').Module);
11
+ toAddress(): bigint;
12
+ toString(): string;
13
+ }
14
+ /**
15
+ * Result of a pattern scan operation.
16
+ * Lazily evaluates the underlying generator and caches findings.
17
+ * Supports taking matches one-by-one or materializing the full result.
18
+ *
19
+ * @example
20
+ * const result = currentProcess.findPattern('55 8B EC');
21
+ * const firstMatch = result.first(); // Scans until 1 match is found
22
+ * const allMatches = result.all(); // Fully exhausts the generator up to pattern config limit
23
+ */
24
+ export declare class ScanResult implements Iterable<ScanEntry> {
25
+ readonly pattern: Pattern;
26
+ private generator;
27
+ private _cached;
28
+ private _isExhausted;
29
+ constructor(iterable: Iterable<ScanEntry>, pattern: Pattern);
30
+ /**
31
+ * Evaluates the generator up to 'n' elements and caches them internally.
32
+ */
33
+ private pump;
34
+ /** Gets the first match and stops scanning further unless requested again. */
35
+ first(): ScanEntry | undefined;
36
+ /** Gets up to N matches. Scans only as much memory as needed. */
37
+ take(n: number): ScanEntry[];
38
+ /** Evaluates the scan fully, up to the pattern's configured limit. */
39
+ all(): ScanEntry[];
40
+ /** Shortcut to strictly evaluate the scan based on the limit and return the array. */
41
+ get entries(): ScanEntry[];
42
+ /** Number of matched entries (fully evaluates scan). */
43
+ get length(): number;
44
+ /** All matched addresses directly derived from entries. */
45
+ get addresses(): bigint[];
46
+ /** Combines another ScanResult efficiently. */
47
+ merge(other: ScanResult): ScanResult;
48
+ /**
49
+ * Lazily iterates over available entries, fetching from the scan engine only when needed.
50
+ * Bound efficiently by the limit configured on the `Pattern`.
51
+ */
52
+ [Symbol.iterator](): Iterator<ScanEntry>;
53
+ }
54
+ //# sourceMappingURL=scan-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-result.d.ts","sourceRoot":"","sources":["../src/scan-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;GAIG;AACH,qBAAa,SAAS;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,UAAU,EAAE,MAAM,CAAC;gBAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,UAAU,EAAE,MAAM;IAK/D,SAAS,IAAI,MAAM;IAInB,QAAQ,IAAI,MAAM;CAMnB;AAED;;;;;;;;;GASG;AACH,qBAAa,UAAW,YAAW,QAAQ,CAAC,SAAS,CAAC;IACpD,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,YAAY,CAAS;gBAEjB,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO;IAK3D;;OAEG;IACH,OAAO,CAAC,IAAI;IAWZ,8EAA8E;IAC9E,KAAK,IAAI,SAAS,GAAG,SAAS;IAK9B,iEAAiE;IACjE,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE;IAK5B,sEAAsE;IACtE,GAAG,IAAI,SAAS,EAAE;IAWlB,sFAAsF;IACtF,IAAI,OAAO,IAAI,SAAS,EAAE,CAEzB;IAED,wDAAwD;IACxD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,2DAA2D;IAC3D,IAAI,SAAS,IAAI,MAAM,EAAE,CAExB;IAED,+CAA+C;IAC/C,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;IAUpC;;;OAGG;IACF,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC;CAuB1C"}