@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 CHANGED
@@ -3,6 +3,7 @@ export * from '@cheatron/native-bindings';
3
3
  export type * from '@cheatron/native-bindings';
4
4
  export * from './handle';
5
5
  export * from './pattern';
6
+ export * from './scan-result';
6
7
  export * from './scanner';
7
8
  export * from './thread';
8
9
  export * from './process';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,mBAAmB,2BAA2B,CAAC;AAE/C,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,mBAAmB,2BAA2B,CAAC;AAE/C,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ export { log } from './logger';
2
2
  export * from '@cheatron/native-bindings';
3
3
  export * from './handle';
4
4
  export * from './pattern';
5
+ export * from './scan-result';
5
6
  export * from './scanner';
6
7
  export * from './thread';
7
8
  export * from './process';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
package/dist/module.d.ts CHANGED
@@ -1,14 +1,21 @@
1
- import { type HMODULE, type INT_PTR } from '@cheatron/native-bindings';
1
+ import { type HMODULE, type INT_PTR, type ModuleInfo } from '@cheatron/native-bindings';
2
2
  import { Handle } from './handle';
3
3
  import { Pattern } from './pattern';
4
+ import { ScanResult } from './scan-result';
4
5
  export declare const STATIC_MODULES: Record<string, string>;
5
6
  /**
6
7
  * Represents a loaded module
7
8
  */
8
9
  export declare class Module extends Handle {
9
10
  protected _name: string;
10
- private _info;
11
+ readonly base: bigint;
12
+ readonly size: number;
13
+ readonly entryPoint: bigint;
14
+ readonly end: bigint;
15
+ readonly info: ModuleInfo;
16
+ static readonly ntdll: Module;
11
17
  static readonly kernel32: Module;
18
+ static readonly kernelbase: Module;
12
19
  static readonly crt: Module;
13
20
  private static _staticCache;
14
21
  constructor(handle: HMODULE, name: string);
@@ -21,25 +28,11 @@ export declare class Module extends Handle {
21
28
  getProcAddress(procName: string): INT_PTR;
22
29
  get name(): string;
23
30
  /**
24
- * Gets the base address of the module
31
+ * Finds pattern matches within this module.
32
+ * Configure limit and protect filter on the Pattern object.
33
+ * @returns ScanResult with each entry tagged with this module
25
34
  */
26
- get base(): bigint;
27
- /**
28
- * Gets the size of the module image
29
- */
30
- get size(): number;
31
- /**
32
- * Gets the entry point of the module
33
- */
34
- get entryPoint(): bigint;
35
- /**
36
- * Finds a pattern within this module
37
- * @param signature Pattern string
38
- */
39
- findPattern(signature: string | Pattern): bigint | null;
40
- /**
41
- * Finds all matches of a pattern within this module
42
- */
43
- findAllPatterns(signature: string | Pattern, limit?: number): bigint[];
35
+ findPattern(signature: string | Pattern): ScanResult;
36
+ toString(): string;
44
37
  }
45
38
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,OAAO,EACZ,KAAK,OAAO,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGjD,CAAC;AAEF;;GAEG;AACH,qBAAa,MAAO,SAAQ,MAAM;IAChC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,KAAK,CAAS;IAGtB,gBAAwB,QAAQ,EAAE,MAAM,CAAC;IACzC,gBAAwB,GAAG,EAAE,MAAM,CAAC;IAEpC,OAAO,CAAC,MAAM,CAAC,YAAY,CAA8B;gBAE7C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM;IAmBzC;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA2BhC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAazC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI;IAKvD;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM,EAAE;CAc1E"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKjD,CAAC;AAEF;;GAEG;AACH,qBAAa,MAAO,SAAQ,MAAM;IAChC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IAExB,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,IAAI,EAAE,UAAU,CAAC;IAGjC,gBAAwB,KAAK,EAAE,MAAM,CAAC;IACtC,gBAAwB,QAAQ,EAAE,MAAM,CAAC;IACzC,gBAAwB,UAAU,EAAE,MAAM,CAAC;IAC3C,gBAAwB,GAAG,EAAE,MAAM,CAAC;IAEpC,OAAO,CAAC,MAAM,CAAC,YAAY,CAA8B;gBAE7C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM;IAyBzC;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA2BhC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAazC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU;IAW3C,QAAQ,IAAI,MAAM;CAG5B"}
package/dist/module.js CHANGED
@@ -1,11 +1,13 @@
1
- import { Kernel32Impl, PsapiImpl, MODULEINFO_SIZE, } from '@cheatron/native-bindings';
1
+ import { ffi, Kernel32Impl, PsapiImpl, MODULEINFO, MODULEINFO_SIZE, } from '@cheatron/native-bindings';
2
2
  import { Handle } from './handle';
3
3
  import { log } from './logger';
4
- import { Scanner } from './scanner';
5
4
  import { Pattern } from './pattern';
5
+ import { ScanResult } from './scan-result';
6
6
  const moduleLog = log.child('Module');
7
7
  export const STATIC_MODULES = {
8
+ ntdll: 'ntdll.dll',
8
9
  kernel32: 'kernel32.dll',
10
+ kernelbase: 'kernelbase.dll',
9
11
  crt: 'msvcrt.dll',
10
12
  };
11
13
  /**
@@ -13,18 +15,27 @@ export const STATIC_MODULES = {
13
15
  */
14
16
  export class Module extends Handle {
15
17
  _name;
16
- _info;
18
+ base;
19
+ size;
20
+ entryPoint;
21
+ end;
22
+ info;
17
23
  static _staticCache = {};
18
24
  constructor(handle, name) {
19
25
  // Module handles from GetModuleHandle should not be closed with CloseHandle
20
26
  super(handle, false);
21
27
  this._name = name;
22
28
  const processHandle = Kernel32Impl.GetCurrentProcess();
23
- this._info = Buffer.alloc(MODULEINFO_SIZE);
24
- const success = PsapiImpl.GetModuleInformation(processHandle, handle, this._info, MODULEINFO_SIZE);
29
+ const moduleInfoBuffer = Buffer.alloc(MODULEINFO_SIZE);
30
+ const success = PsapiImpl.GetModuleInformation(processHandle, handle, moduleInfoBuffer, MODULEINFO_SIZE);
25
31
  if (!success) {
26
32
  throw new Error(`Failed to get module information for ${name}`);
27
33
  }
34
+ this.info = ffi.decode(moduleInfoBuffer, MODULEINFO);
35
+ this.base = BigInt(this.info.lpBaseOfDll);
36
+ this.size = this.info.SizeOfImage;
37
+ this.entryPoint = BigInt(this.info.EntryPoint);
38
+ this.end = this.base + BigInt(this.size);
28
39
  }
29
40
  /**
30
41
  * Gets a module handle for the specified module name
@@ -64,44 +75,17 @@ export class Module extends Handle {
64
75
  return this._name;
65
76
  }
66
77
  /**
67
- * Gets the base address of the module
68
- */
69
- get base() {
70
- return this._info.readBigUInt64LE(0);
71
- }
72
- /**
73
- * Gets the size of the module image
74
- */
75
- get size() {
76
- return this._info.readUInt32LE(8);
77
- }
78
- /**
79
- * Gets the entry point of the module
80
- */
81
- get entryPoint() {
82
- return this._info.readBigUInt64LE(16);
83
- }
84
- /**
85
- * Finds a pattern within this module
86
- * @param signature Pattern string
78
+ * Finds pattern matches within this module.
79
+ * Configure limit and protect filter on the Pattern object.
80
+ * @returns ScanResult with each entry tagged with this module
87
81
  */
88
82
  findPattern(signature) {
89
- const results = this.findAllPatterns(signature, 1);
90
- return results[0] ?? null;
83
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
84
+ const { CurrentProcess } = require('./process');
85
+ return CurrentProcess.current().findPatternInRange(signature, this.base, this.size, this);
91
86
  }
92
- /**
93
- * Finds all matches of a pattern within this module
94
- */
95
- findAllPatterns(signature, limit = 0) {
96
- const pattern = signature instanceof Pattern ? signature : new Pattern(signature, limit);
97
- const results = [];
98
- const searchLimit = limit > 0 ? limit : pattern.limit > 0 ? pattern.limit : Infinity;
99
- for (const addr of Scanner.scan(this.base, this.size, pattern)) {
100
- results.push(addr);
101
- if (results.length >= searchLimit)
102
- break;
103
- }
104
- return results;
87
+ toString() {
88
+ return `Module(${this.name})[0x${this.base.toString(16)}-0x${this.end.toString(16)}]`;
105
89
  }
106
90
  }
107
91
  // Initialize dynamic static getters for modules
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { MsvcrtImpl } from '@cheatron/native-bindings';
2
- import type { LPVOID } from '@cheatron/native-bindings';
3
- type MemmemFn = (haystack: LPVOID, haystackLen: bigint, needle: LPVOID, needleLen: bigint) => LPVOID;
2
+ import type { LPVOID, SIZE_T } from '@cheatron/native-bindings';
3
+ type MemmemFn = (haystack: LPVOID, haystackLen: SIZE_T, needle: LPVOID, needleLen: SIZE_T) => LPVOID;
4
4
  /**
5
5
  * memmem - Find the first occurrence of a byte sequence in memory.
6
6
  */
7
- export declare function memmem(haystack: LPVOID, haystackLen: bigint, needle: LPVOID, needleLen: bigint): LPVOID;
7
+ export declare function memmem(haystack: LPVOID, haystackLen: SIZE_T, needle: LPVOID, needleLen: SIZE_T): LPVOID;
8
8
  /**
9
9
  * Extended MSVCRT interface including custom assembly functions
10
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"msvcrt-ext.d.ts","sourceRoot":"","sources":["../src/msvcrt-ext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAO,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AA4FxD,KAAK,QAAQ,GAAG,CACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,KACd,MAAM,CAAC;AAsCZ;;GAEG;AACH,wBAAgB,MAAM,CACpB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,CAGR;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAOpB,OAAO,UAAU,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"msvcrt-ext.d.ts","sourceRoot":"","sources":["../src/msvcrt-ext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAO,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AA4FhE,KAAK,QAAQ,GAAG,CACd,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,KACd,MAAM,CAAC;AAsCZ;;GAEG;AACH,wBAAgB,MAAM,CACpB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,MAAM,CAGR;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAOpB,OAAO,UAAU,GAAG,SAAS,CAAC"}
@@ -14,7 +14,9 @@ export declare const ALIGN = 16;
14
14
  /**
15
15
  * Rounds a number up to the nearest multiple of 16.
16
16
  */
17
- export declare function align16(n: number): number;
17
+ export declare function addressAlign16(n: number): number;
18
+ export declare const codeAlign16: typeof addressAlign16;
19
+ export declare const stackAlign16: typeof addressAlign16;
18
20
  /**
19
21
  * Dynamically creates callable native functions from assembly or bytecode.
20
22
  *
@@ -1 +1 @@
1
- {"version":3,"file":"native-fn.d.ts","sourceRoot":"","sources":["../src/native-fn.ts"],"names":[],"mappings":"AA0CA,wDAAwD;AACxD,MAAM,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAEvC,mEAAmE;AACnE,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1C,iDAAiD;AACjD,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,KAAK,CAAC;IAEX,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;CAC3C;AAED,eAAO,MAAM,KAAK,KAAK,CAAC;AAExB;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzC;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,SAAS,CAAyC;IAE1D,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;gBAEP,QAAQ,GAAE,MAAa;IA+BnC;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAgB1C;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAc7C;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI5C;;OAEG;IAEH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,SAAS;IAIxE;;OAEG;IACH,IAAI,IAAI,aAAa,EAAE;IAIvB;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;IA+Bf,OAAO,CAAC,aAAa;CA4DtB;AAOD,eAAO,MAAM,QAAQ,EAAE,qBAmBtB,CAAC"}
1
+ {"version":3,"file":"native-fn.d.ts","sourceRoot":"","sources":["../src/native-fn.ts"],"names":[],"mappings":"AA0CA,wDAAwD;AACxD,MAAM,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAEvC,mEAAmE;AACnE,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1C,iDAAiD;AACjD,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,KAAK,CAAC;IAEX,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;CAC3C;AAED,eAAO,MAAM,KAAK,KAAK,CAAC;AAExB;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,eAAO,MAAM,WAAW,uBAAiB,CAAC;AAC1C,eAAO,MAAM,YAAY,uBAAiB,CAAC;AAE3C;;;;;GAKG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,SAAS,CAAyC;IAE1D,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;gBAEP,QAAQ,GAAE,MAAa;IA+BnC;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAgB1C;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAc7C;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI5C;;OAEG;IAEH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,SAAS;IAIxE;;OAEG;IACH,IAAI,IAAI,aAAa,EAAE;IAIvB;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;IA+Bf,OAAO,CAAC,aAAa;CA4DtB;AAOD,eAAO,MAAM,QAAQ,EAAE,qBAmBtB,CAAC"}
package/dist/native-fn.js CHANGED
@@ -10,7 +10,7 @@ const registry = new FinalizationRegistry((page) => {
10
10
  const { currentProcess } = require('./process');
11
11
  // Free the allocated memory using currentProcess.free
12
12
  try {
13
- const success = currentProcess.free(page, 0, MemoryFreeType.RELEASE);
13
+ const success = currentProcess.memory.free(page, 0, MemoryFreeType.RELEASE);
14
14
  if (success) {
15
15
  nfLog.info('Garbage collection: cleaned up executable memory page');
16
16
  }
@@ -28,9 +28,11 @@ export const ALIGN = 16;
28
28
  /**
29
29
  * Rounds a number up to the nearest multiple of 16.
30
30
  */
31
- export function align16(n) {
31
+ export function addressAlign16(n) {
32
32
  return (n + ALIGN - 1) & ~(ALIGN - 1);
33
33
  }
34
+ export const codeAlign16 = addressAlign16;
35
+ export const stackAlign16 = addressAlign16;
34
36
  /**
35
37
  * Dynamically creates callable native functions from assembly or bytecode.
36
38
  *
@@ -51,7 +53,7 @@ export class NativeFunctionCreator {
51
53
  // eslint-disable-next-line @typescript-eslint/no-require-imports
52
54
  const { currentProcess } = require('./process');
53
55
  // Allocate executable memory using currentProcess.alloc
54
- this.page = currentProcess.alloc(BigInt(capacity), null, MemoryState.COMMIT | MemoryState.RESERVE, MemoryProtection.EXECUTE_READWRITE);
56
+ this.page = currentProcess.memory.alloc(BigInt(capacity), null, MemoryState.COMMIT | MemoryState.RESERVE, MemoryProtection.EXECUTE_READWRITE);
55
57
  if (!this.page) {
56
58
  throw new Error('VirtualAlloc failed: could not allocate executable memory');
57
59
  }
@@ -132,7 +134,7 @@ export class NativeFunctionCreator {
132
134
  // eslint-disable-next-line @typescript-eslint/no-require-imports
133
135
  const { currentProcess } = require('./process');
134
136
  // Perform the actual free using currentProcess.free
135
- const success = currentProcess.free(this.page, 0, MemoryFreeType.RELEASE);
137
+ const success = currentProcess.memory.free(this.page, 0, MemoryFreeType.RELEASE);
136
138
  if (success) {
137
139
  nfLog.info('NativeFunctionCreator destroyed');
138
140
  }
@@ -148,7 +150,7 @@ export class NativeFunctionCreator {
148
150
  if (this.functions.has(name)) {
149
151
  throw new Error(`Function '${name}' already registered`);
150
152
  }
151
- const alignedSize = align16(bytes.length);
153
+ const alignedSize = codeAlign16(bytes.length);
152
154
  if (this.offset + alignedSize > this.capacity) {
153
155
  throw new Error(`Not enough space: need ${alignedSize} bytes, ${this.remaining} remaining`);
154
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"native-fn.js","sourceRoot":"","sources":["../src/native-fn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-fn.js","sourceRoot":"","sources":["../src/native-fn.ts"],"names":[],"mappings":"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"}
package/dist/pattern.d.ts CHANGED
@@ -1,15 +1,36 @@
1
+ import { MemoryProtection } from '@cheatron/win32-ext';
1
2
  /**
2
- * Represents a parsed memory signature/pattern
3
+ * Default protection mask: all readable memory regions.
4
+ */
5
+ export declare const DEFAULT_PROTECT: number;
6
+ /**
7
+ * Pure data representation of a memory signature.
8
+ * Defines the bytes, mask, limits, and memory protection preferences.
3
9
  */
4
10
  export declare class Pattern {
5
11
  bytes: Buffer;
6
12
  mask: string;
7
- limit: number;
13
+ private _limit;
14
+ protect: number;
15
+ constructor(signature: string | (number | null | undefined)[]);
16
+ get length(): number;
17
+ get maxResults(): number;
18
+ get hasLimit(): boolean;
8
19
  /**
9
- * @param signature Pattern string (e.g. "55 8B EC ?? 56")
10
- * @param limit Maximum number of results to find (0 = no limit)
20
+ * Sets a specific scan limit.
11
21
  */
12
- constructor(signature: string, limit?: number);
13
- get length(): number;
22
+ limit(n: number): this;
23
+ /**
24
+ * Removes any limits (scan the whole memory for matches).
25
+ */
26
+ noLimit(): this;
27
+ /**
28
+ * Restricts scan to segments matching the given protection mask.
29
+ */
30
+ addProtect(flag: number | MemoryProtection): this;
31
+ /**
32
+ * Automatically applies typical readable/executable filters.
33
+ */
34
+ defaultProtect(): this;
14
35
  }
15
36
  //# sourceMappingURL=pattern.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../src/pattern.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,qBAAa,OAAO;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IAErB;;;OAGG;gBACS,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU;IAyBhD,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF"}
1
+ {"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../src/pattern.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAKvD;;GAEG;AACH,eAAO,MAAM,eAAe,QAIQ,CAAC;AAErC;;;GAGG;AACH,qBAAa,OAAO;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,MAAM,CAAa;IACpB,OAAO,EAAE,MAAM,CAAK;gBAEf,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE;IAiD7D,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtB;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAKjD;;OAEG;IACH,cAAc,IAAI,IAAI;CAIvB"}
package/dist/pattern.js CHANGED
@@ -1,35 +1,64 @@
1
+ import { MemoryProtection } from '@cheatron/win32-ext';
1
2
  import { log } from './logger';
2
3
  const scanLog = log.child('Scanner');
3
4
  /**
4
- * Represents a parsed memory signature/pattern
5
+ * Default protection mask: all readable memory regions.
6
+ */
7
+ export const DEFAULT_PROTECT = MemoryProtection.READONLY |
8
+ MemoryProtection.READWRITE |
9
+ MemoryProtection.EXECUTE_READ |
10
+ MemoryProtection.EXECUTE_READWRITE;
11
+ /**
12
+ * Pure data representation of a memory signature.
13
+ * Defines the bytes, mask, limits, and memory protection preferences.
5
14
  */
6
15
  export class Pattern {
7
16
  bytes;
8
17
  mask;
9
- limit;
10
- /**
11
- * @param signature Pattern string (e.g. "55 8B EC ?? 56")
12
- * @param limit Maximum number of results to find (0 = no limit)
13
- */
14
- constructor(signature, limit = 0) {
15
- this.limit = limit;
16
- const parts = signature.split(/\s+/).filter(Boolean);
18
+ _limit = 1; // Default to 1 result
19
+ protect = 0;
20
+ constructor(signature) {
17
21
  const bytes = [];
18
22
  let mask = '';
19
- for (const part of parts) {
20
- if (part === '??' || part === '?') {
21
- bytes.push(0);
22
- mask += '?';
23
+ if (typeof signature === 'string') {
24
+ // Clean up common prefixes like 0x or \x
25
+ let cleanSig = signature.replace(/(0x|\\x)/gi, '');
26
+ // If there are no spaces, assume it's a continuous hex string (e.g. DEADBEEF)
27
+ if (!cleanSig.includes(' ')) {
28
+ // Inject spaces between every 2 characters
29
+ cleanSig = cleanSig.replace(/(.{2})/g, '$1 ').trim();
30
+ }
31
+ const parts = cleanSig.split(/\s+/).filter(Boolean);
32
+ for (const part of parts) {
33
+ if (part === '??' || part === '?') {
34
+ bytes.push(0);
35
+ mask += '?';
36
+ }
37
+ else {
38
+ const byte = parseInt(part, 16);
39
+ if (isNaN(byte))
40
+ throw new Error(`Invalid byte in signature: ${part} (from original: ${signature})`);
41
+ bytes.push(byte);
42
+ mask += 'x';
43
+ }
23
44
  }
24
- else {
25
- const byte = parseInt(part, 16);
26
- if (isNaN(byte)) {
27
- throw new Error(`Invalid byte in signature: ${part}`);
45
+ }
46
+ else if (Array.isArray(signature)) {
47
+ for (let i = 0; i < signature.length; i++) {
48
+ const val = signature[i];
49
+ if (val == null || val < 0 || val > 255) {
50
+ bytes.push(0);
51
+ mask += '?';
52
+ }
53
+ else {
54
+ bytes.push(val);
55
+ mask += 'x';
28
56
  }
29
- bytes.push(byte);
30
- mask += 'x';
31
57
  }
32
58
  }
59
+ else {
60
+ throw new Error('Signature must be a string or an array of numbers');
61
+ }
33
62
  this.bytes = Buffer.from(bytes);
34
63
  this.mask = mask;
35
64
  scanLog.debug(`Parsed pattern: ${signature} -> ${mask}`);
@@ -37,5 +66,39 @@ export class Pattern {
37
66
  get length() {
38
67
  return this.bytes.length;
39
68
  }
69
+ get maxResults() {
70
+ return this._limit;
71
+ }
72
+ get hasLimit() {
73
+ return this._limit > 0;
74
+ }
75
+ /**
76
+ * Sets a specific scan limit.
77
+ */
78
+ limit(n) {
79
+ this._limit = n;
80
+ return this;
81
+ }
82
+ /**
83
+ * Removes any limits (scan the whole memory for matches).
84
+ */
85
+ noLimit() {
86
+ this._limit = 0;
87
+ return this;
88
+ }
89
+ /**
90
+ * Restricts scan to segments matching the given protection mask.
91
+ */
92
+ addProtect(flag) {
93
+ this.protect |= flag;
94
+ return this;
95
+ }
96
+ /**
97
+ * Automatically applies typical readable/executable filters.
98
+ */
99
+ defaultProtect() {
100
+ this.protect = DEFAULT_PROTECT;
101
+ return this;
102
+ }
40
103
  }
41
104
  //# sourceMappingURL=pattern.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pattern.js","sourceRoot":"","sources":["../src/pattern.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAErC;;GAEG;AACH,MAAM,OAAO,OAAO;IACX,KAAK,CAAS;IACd,IAAI,CAAS;IACb,KAAK,CAAS;IAErB;;;OAGG;IACH,YAAY,SAAiB,EAAE,QAAgB,CAAC;QAC9C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,IAAI,IAAI,GAAG,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAChC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;gBACxD,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,IAAI,IAAI,GAAG,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,mBAAmB,SAAS,OAAO,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"pattern.js","sourceRoot":"","sources":["../src/pattern.ts"],"names":[],"mappings":"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"}