@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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/module.d.ts +14 -21
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +24 -40
- package/dist/module.js.map +1 -1
- package/dist/msvcrt-ext.d.ts +3 -3
- package/dist/msvcrt-ext.d.ts.map +1 -1
- package/dist/native-fn.d.ts +3 -1
- package/dist/native-fn.d.ts.map +1 -1
- package/dist/native-fn.js +7 -5
- package/dist/native-fn.js.map +1 -1
- package/dist/pattern.d.ts +27 -6
- package/dist/pattern.d.ts.map +1 -1
- package/dist/pattern.js +82 -19
- package/dist/pattern.js.map +1 -1
- package/dist/process.d.ts +73 -41
- package/dist/process.d.ts.map +1 -1
- package/dist/process.js +292 -159
- package/dist/process.js.map +1 -1
- package/dist/scan-result.d.ts +54 -0
- package/dist/scan-result.d.ts.map +1 -0
- package/dist/scan-result.js +128 -0
- package/dist/scan-result.js.map +1 -0
- package/dist/scanner.d.ts +3 -6
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +7 -15
- package/dist/scanner.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A single pattern match entry.
|
|
3
|
+
* Stores the decoded numeric address (bigint) of the match.
|
|
4
|
+
* Call `toAddress()` to retrieve it — consistent with how ffi.address() works.
|
|
5
|
+
*/
|
|
6
|
+
export class ScanEntry {
|
|
7
|
+
address;
|
|
8
|
+
module;
|
|
9
|
+
constructor(address, module) {
|
|
10
|
+
this.address = address;
|
|
11
|
+
this.module = module;
|
|
12
|
+
}
|
|
13
|
+
toAddress() {
|
|
14
|
+
return this.address;
|
|
15
|
+
}
|
|
16
|
+
toString() {
|
|
17
|
+
const addressString = '0x' + this.address.toString(16).toUpperCase();
|
|
18
|
+
return this.module
|
|
19
|
+
? `${this.module.toString()}+${addressString}`
|
|
20
|
+
: addressString;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Result of a pattern scan operation.
|
|
25
|
+
* Lazily evaluates the underlying generator and caches findings.
|
|
26
|
+
* Supports taking matches one-by-one or materializing the full result.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* const result = currentProcess.findPattern('55 8B EC');
|
|
30
|
+
* const firstMatch = result.first(); // Scans until 1 match is found
|
|
31
|
+
* const allMatches = result.all(); // Fully exhausts the generator up to pattern config limit
|
|
32
|
+
*/
|
|
33
|
+
export class ScanResult {
|
|
34
|
+
pattern;
|
|
35
|
+
generator;
|
|
36
|
+
_cached = [];
|
|
37
|
+
_isExhausted = false;
|
|
38
|
+
constructor(iterable, pattern) {
|
|
39
|
+
this.pattern = pattern;
|
|
40
|
+
this.generator = iterable[Symbol.iterator]();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Evaluates the generator up to 'n' elements and caches them internally.
|
|
44
|
+
*/
|
|
45
|
+
pump(n) {
|
|
46
|
+
while (!this._isExhausted && (n === undefined || this._cached.length < n)) {
|
|
47
|
+
const res = this.generator.next();
|
|
48
|
+
if (res.done) {
|
|
49
|
+
this._isExhausted = true;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this._cached.push(res.value);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Gets the first match and stops scanning further unless requested again. */
|
|
57
|
+
first() {
|
|
58
|
+
this.pump(1);
|
|
59
|
+
return this._cached[0];
|
|
60
|
+
}
|
|
61
|
+
/** Gets up to N matches. Scans only as much memory as needed. */
|
|
62
|
+
take(n) {
|
|
63
|
+
this.pump(n);
|
|
64
|
+
return this._cached.slice(0, n);
|
|
65
|
+
}
|
|
66
|
+
/** Evaluates the scan fully, up to the pattern's configured limit. */
|
|
67
|
+
all() {
|
|
68
|
+
const limit = this.pattern.maxResults;
|
|
69
|
+
if (limit > 0) {
|
|
70
|
+
this.pump(limit);
|
|
71
|
+
return this._cached.slice(0, limit);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.pump();
|
|
75
|
+
return [...this._cached];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** Shortcut to strictly evaluate the scan based on the limit and return the array. */
|
|
79
|
+
get entries() {
|
|
80
|
+
return this.all();
|
|
81
|
+
}
|
|
82
|
+
/** Number of matched entries (fully evaluates scan). */
|
|
83
|
+
get length() {
|
|
84
|
+
return this.all().length;
|
|
85
|
+
}
|
|
86
|
+
/** All matched addresses directly derived from entries. */
|
|
87
|
+
get addresses() {
|
|
88
|
+
return this.all().map((e) => e.address);
|
|
89
|
+
}
|
|
90
|
+
/** Combines another ScanResult efficiently. */
|
|
91
|
+
merge(other) {
|
|
92
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
93
|
+
const me = this;
|
|
94
|
+
const combined = function* () {
|
|
95
|
+
yield* me.all(); // Yields cached/evaluated from this
|
|
96
|
+
yield* other.all(); // Yields cached/evaluated from other
|
|
97
|
+
};
|
|
98
|
+
return new ScanResult(combined(), this.pattern);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Lazily iterates over available entries, fetching from the scan engine only when needed.
|
|
102
|
+
* Bound efficiently by the limit configured on the `Pattern`.
|
|
103
|
+
*/
|
|
104
|
+
*[Symbol.iterator]() {
|
|
105
|
+
const limit = this.pattern.maxResults;
|
|
106
|
+
let yielded = 0;
|
|
107
|
+
// First yield already evaluated results
|
|
108
|
+
for (const cachedEntry of this._cached) {
|
|
109
|
+
if (limit > 0 && yielded >= limit)
|
|
110
|
+
return;
|
|
111
|
+
yield cachedEntry;
|
|
112
|
+
yielded++;
|
|
113
|
+
}
|
|
114
|
+
// Now evaluate fresh parts if needed
|
|
115
|
+
while (!this._isExhausted && (limit === 0 || yielded < limit)) {
|
|
116
|
+
const res = this.generator.next();
|
|
117
|
+
if (res.done) {
|
|
118
|
+
this._isExhausted = true;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this._cached.push(res.value);
|
|
122
|
+
yield res.value;
|
|
123
|
+
yielded++;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=scan-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-result.js","sourceRoot":"","sources":["../src/scan-result.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,SAAS;IACX,OAAO,CAAS;IAChB,MAAM,CAA6B;IAE5C,YAAY,OAAe,EAAE,MAAkC;QAC7D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC,MAAM;YAChB,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,aAAa,EAAE;YAC9C,CAAC,CAAC,aAAa,CAAC;IACpB,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,UAAU;IACL,OAAO,CAAU;IACzB,SAAS,CAAsB;IAC/B,OAAO,GAAgB,EAAE,CAAC;IAC1B,YAAY,GAAG,KAAK,CAAC;IAE7B,YAAY,QAA6B,EAAE,OAAgB;QACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACK,IAAI,CAAC,CAAU;QACrB,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACb,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,iEAAiE;IACjE,IAAI,CAAC,CAAS;QACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,sEAAsE;IACtE,GAAG;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,sFAAsF;IACtF,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,wDAAwD;IACxD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,2DAA2D;IAC3D,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,KAAiB;QACrB,4DAA4D;QAC5D,MAAM,EAAE,GAAG,IAAI,CAAC;QAChB,MAAM,QAAQ,GAAG,QAAQ,CAAC;YACxB,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,oCAAoC;YACrD,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,qCAAqC;QAC3D,CAAC,CAAC;QACF,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,wCAAwC;QACxC,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,IAAI,KAAK;gBAAE,OAAO;YAC1C,MAAM,WAAW,CAAC;YAClB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,qCAAqC;QACrC,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;YAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACb,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC7B,MAAM,GAAG,CAAC,KAAK,CAAC;gBAChB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
package/dist/scanner.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { Pattern } from './pattern';
|
|
|
5
5
|
export declare class Scanner {
|
|
6
6
|
/**
|
|
7
7
|
* Scans local memory for a pattern using a generator.
|
|
8
|
-
* Yields each
|
|
8
|
+
* Yields each matched address as a decoded bigint.
|
|
9
9
|
*
|
|
10
10
|
* @param base Memory address to start from
|
|
11
11
|
* @param size Total size of the memory region to scan
|
|
@@ -14,11 +14,8 @@ export declare class Scanner {
|
|
|
14
14
|
*/
|
|
15
15
|
static scan(base: bigint, size: number, pattern: Pattern, chunkSize?: number): Generator<bigint>;
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
|
|
19
|
-
static scanLocal(base: bigint, size: number, pattern: Pattern, chunkSize?: number): bigint | null;
|
|
20
|
-
/**
|
|
21
|
-
* Helper method to scan a specific memory chunk with wildcards
|
|
17
|
+
* Helper method to scan a specific memory chunk with wildcards.
|
|
18
|
+
* Yields decoded bigint addresses.
|
|
22
19
|
*/
|
|
23
20
|
private static scanChunkWildcard;
|
|
24
21
|
}
|
package/dist/scanner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;GAEG;AACH,qBAAa,OAAO;IAClB;;;;;;;;OAQG;IACH,MAAM,CAAE,IAAI,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,SAAS,GAAE,MAAoB,GAC9B,SAAS,CAAC,MAAM,CAAC;IAuFpB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAE,iBAAiB;CA2BlC"}
|
package/dist/scanner.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { ffi } from '@cheatron/native-bindings';
|
|
2
2
|
import { Pattern } from './pattern';
|
|
3
|
+
import { MsvcrtExtImpl as msvcrt } from './msvcrt-ext';
|
|
3
4
|
/**
|
|
4
5
|
* Memory scanning utility
|
|
5
6
|
*/
|
|
6
7
|
export class Scanner {
|
|
7
8
|
/**
|
|
8
9
|
* Scans local memory for a pattern using a generator.
|
|
9
|
-
* Yields each
|
|
10
|
+
* Yields each matched address as a decoded bigint.
|
|
10
11
|
*
|
|
11
12
|
* @param base Memory address to start from
|
|
12
13
|
* @param size Total size of the memory region to scan
|
|
@@ -14,8 +15,6 @@ export class Scanner {
|
|
|
14
15
|
* @param chunkSize Size of each scan chunk (default: 1MB)
|
|
15
16
|
*/
|
|
16
17
|
static *scan(base, size, pattern, chunkSize = 1024 * 1024) {
|
|
17
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
18
|
-
const msvcrt = require('./msvcrt-ext');
|
|
19
18
|
const patternLen = pattern.length;
|
|
20
19
|
if (patternLen === 0)
|
|
21
20
|
return;
|
|
@@ -33,7 +32,7 @@ export class Scanner {
|
|
|
33
32
|
const found = msvcrt.memmem(currentBase, remainingSize, pattern.bytes, patternLen);
|
|
34
33
|
if (!found)
|
|
35
34
|
break;
|
|
36
|
-
const foundAddr =
|
|
35
|
+
const foundAddr = ffi.address(found);
|
|
37
36
|
if (foundAddr > lastYieldedAddr) {
|
|
38
37
|
yield foundAddr;
|
|
39
38
|
lastYieldedAddr = foundAddr;
|
|
@@ -69,7 +68,7 @@ export class Scanner {
|
|
|
69
68
|
const found = msvcrt.memmem(searchBase, searchSize, pattern.bytes, patternLen);
|
|
70
69
|
if (!found)
|
|
71
70
|
break;
|
|
72
|
-
const foundAddr =
|
|
71
|
+
const foundAddr = ffi.address(found);
|
|
73
72
|
if (foundAddr > lastYieldedAddr) {
|
|
74
73
|
yield foundAddr;
|
|
75
74
|
lastYieldedAddr = foundAddr;
|
|
@@ -90,21 +89,14 @@ export class Scanner {
|
|
|
90
89
|
}
|
|
91
90
|
}
|
|
92
91
|
/**
|
|
93
|
-
*
|
|
94
|
-
|
|
95
|
-
static scanLocal(base, size, pattern, chunkSize = 1024 * 1024) {
|
|
96
|
-
const it = Scanner.scan(base, size, pattern, chunkSize);
|
|
97
|
-
const result = it.next();
|
|
98
|
-
return result.done ? null : result.value;
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Helper method to scan a specific memory chunk with wildcards
|
|
92
|
+
* Helper method to scan a specific memory chunk with wildcards.
|
|
93
|
+
* Yields decoded bigint addresses.
|
|
102
94
|
*/
|
|
103
95
|
static *scanChunkWildcard(base, size, pattern) {
|
|
104
96
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
105
97
|
const { currentProcess } = require('./process');
|
|
106
98
|
const patternLen = pattern.length;
|
|
107
|
-
const buffer = currentProcess.
|
|
99
|
+
const buffer = currentProcess.memory.read(base, size);
|
|
108
100
|
const mask = pattern.mask;
|
|
109
101
|
const bytes = pattern.bytes;
|
|
110
102
|
for (let i = 0; i <= size - patternLen; i++) {
|
package/dist/scanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cheatron/native",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "Ergonomic Win32 process and memory management API for Cheatron.",
|
|
5
5
|
"module": "./src/index.ts",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@cheatron/keystone": "^1.0.1",
|
|
34
34
|
"@cheatron/log": "^1.0.1",
|
|
35
|
-
"@cheatron/native-bindings": "^1.0.
|
|
35
|
+
"@cheatron/native-bindings": "^1.0.4"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@eslint/js": "^10.0.1",
|