@cheatron/nthread 1.0.1 → 1.0.3

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/README.md CHANGED
@@ -14,23 +14,36 @@
14
14
  NThread reuses two tiny instruction sequences (gadgets) already present in loaded modules:
15
15
 
16
16
  | Gadget | Pattern | Purpose |
17
- |--------|---------|--------|
17
+ |--------|---------|---------|
18
18
  | **Sleep** | `jmp .` (`EB FE`) | Parks the thread in an infinite loop |
19
19
  | **Pivot** | `push reg; ret` | Redirects `RIP` to the sleep gadget |
20
20
 
21
21
  Hijack sequence: suspend → capture context → redirect RIP through pivot → spin until RIP lands on sleep gadget. No shellcode, no remote allocation — just register writes.
22
22
 
23
+ ```
24
+ suspend thread
25
+ → save full register context
26
+ → set RIP = pushret gadget
27
+ → set RSP = safe scratch area (current RSP − 8192, 16-aligned)
28
+ → set target register = sleep address
29
+ → apply context → resume
30
+ → poll until RIP == sleep address
31
+ → thread is now parked and ready for commands
32
+ ```
33
+
23
34
  ---
24
35
 
25
36
  ## Features
26
37
 
27
38
  - **No code injection** — reuses gadgets in `ntdll`, `kernel32`, `kernelbase`, `msvcrt`
28
- - **No `WriteProcessMemory`** — memory ops are performed by hijacking the target thread to call its own `msvcrt` functions
29
- - **Auto-discovery** — scans modules lazily via `Module.scan()`
39
+ - **No `WriteProcessMemory`** — memory ops use the target thread's own `msvcrt` functions
40
+ - **Auto-discovery** — scans loaded modules lazily via `Module.scan()`
30
41
  - **Reversible** — saves full register context before hijacking; restores on `proxy.close()`
31
- - **CRT bridge** — resolves `msvcrt!malloc`, `calloc`, `memset`, `fwrite`, etc. and calls them *from inside the target thread*
32
- - **Write optimization** — `romem` tracks known region contents and lets `write()` skip unchanged bytes automatically
33
- - **Heap allocator** — `NThreadHeap` pre-allocates a single heap block in the target and sub-allocates from it, minimising round-trips
42
+ - **CRT bridge** — resolves `msvcrt` exports (`malloc`, `calloc`, `memset`, `fopen`, `fread`, etc.) and calls them *from inside the target thread*
43
+ - **String args** — pass strings directly to `proxy.call()`, automatically allocated and freed
44
+ - **Write optimization** — `romem` tracks known region contents and skips unchanged bytes automatically
45
+ - **Heap allocator** — `NThreadHeap` pre-allocates a heap block in the target and sub-allocates from it, minimising CRT round-trips
46
+ - **File channel** — `NThreadFile` replaces RPM/WPM with bidirectional filesystem I/O through a single temp file
34
47
 
35
48
  ---
36
49
 
@@ -44,12 +57,12 @@ bun add @cheatron/nthread
44
57
 
45
58
  ## Quick Start
46
59
 
60
+ ### Basic — `NThread`
61
+
47
62
  ```typescript
48
- import { NThread, createReadOnlyMemory } from '@cheatron/nthread';
63
+ import { NThread, crt } from '@cheatron/nthread';
49
64
 
50
65
  const nthread = new NThread();
51
-
52
- // Hijack an existing thread by TID
53
66
  const [proxy, captured] = await nthread.inject(tid);
54
67
 
55
68
  // Call a function inside the target thread (x64 calling convention)
@@ -58,9 +71,6 @@ const ptr = await proxy.call(crt.malloc, 1024n);
58
71
  // Write memory via hijacked memset calls
59
72
  await proxy.write(ptr, Buffer.from([0xDE, 0xAD, 0xBE, 0xEF]));
60
73
 
61
- // Allocate and write a wide string in one step
62
- const strPtr = await proxy.allocString('Hello, target!');
63
-
64
74
  // Read memory back
65
75
  const buf = await proxy.read(ptr, 4);
66
76
 
@@ -68,9 +78,82 @@ const buf = await proxy.read(ptr, 4);
68
78
  await proxy.close();
69
79
  ```
70
80
 
81
+ ### Heap — `NThreadHeap`
82
+
83
+ ```typescript
84
+ import { NThreadHeap } from '@cheatron/nthread';
85
+
86
+ const nt = new NThreadHeap();
87
+ const [proxy] = await nt.inject(tid);
88
+
89
+ // alloc/free go through the local heap — fewer CRT calls
90
+ const ptr = await proxy.alloc(256, { fill: 0 });
91
+ await proxy.write(ptr, myData);
92
+ await proxy.free(ptr);
93
+
94
+ // Allocate and write a null-terminated string in one step
95
+ const strPtr = await proxy.allocString('Hello, target!');
96
+
97
+ await proxy.close(); // frees all heap blocks atomically
98
+ ```
99
+
100
+ ### File Channel — `NThreadFile`
101
+
102
+ ```typescript
103
+ import { NThreadFile } from '@cheatron/nthread';
104
+
105
+ const nt = new NThreadFile();
106
+ const [proxy] = await nt.inject(tid);
107
+
108
+ // read/write now go through a temp file — no RPM/WPM
109
+ const ptr = await proxy.alloc(4096, { fill: 0 });
110
+ await proxy.write(ptr, largeBuffer); // fs.writeFileSync → fread
111
+ const data = await proxy.read(ptr, 4096); // fwrite + fflush → fs.readFileSync
112
+
113
+ await proxy.close(); // closes FILE*, deletes temp file, destroys heaps, restores thread
114
+ ```
115
+
116
+ ### File I/O Helpers
117
+
118
+ ```typescript
119
+ // Open a file in the target process
120
+ const stream = await nthread.fileOpen(proxy, 'C:\\data\\log.txt', 'rb');
121
+
122
+ // Read 512 bytes from the stream → local Buffer
123
+ const buf = await nthread.fileRead(proxy, stream, 512);
124
+
125
+ // Write data to a stream (string, Buffer, or NativeMemory)
126
+ await nthread.fileWrite(proxy, stream, 'hello');
127
+
128
+ // Flush and close
129
+ await nthread.fileFlush(proxy, stream);
130
+ await nthread.fileClose(proxy, stream);
131
+ ```
132
+
133
+ ### Read-Only Memory (`romem`)
134
+
135
+ Tracks a known-content region as a `(remote, local)` pair. `proxy.write()` auto-detects overlaps and skips unchanged bytes.
136
+
137
+ ```typescript
138
+ import { createReadOnlyMemory, unregisterReadOnlyMemory } from '@cheatron/nthread';
139
+
140
+ const romem = await createReadOnlyMemory(proxy, 256); // calloc in target
141
+ const data = Buffer.alloc(256);
142
+ data.writeUInt32LE(0xDEADBEEF, 0);
143
+ await proxy.write(romem.remote, data); // only the 4 changed bytes are written
144
+
145
+ unregisterReadOnlyMemory(romem);
146
+ ```
147
+
71
148
  ---
72
149
 
73
- ## Core Components
150
+ ## Class Hierarchy
151
+
152
+ ```
153
+ NThread — Orchestrator: inject, threadCall, writeMemory, CRT helpers
154
+ └─ NThreadHeap — Heap sub-allocator per proxy (doubles up to maxSize)
155
+ └─ NThreadFile — Filesystem-based I/O channel (single temp file)
156
+ ```
74
157
 
75
158
  ### `NThread`
76
159
 
@@ -83,8 +166,13 @@ new NThread(processId?, sleepAddress?, pushretAddress?, regKey?)
83
166
  | Method | Description |
84
167
  |--------|-------------|
85
168
  | `inject(thread)` | Hijack a thread (TID or `Thread`), returns `[ProxyThread, CapturedThread]` |
86
- | `threadCall(thread, target, args, timeout)` | Execute a function call on a captured thread |
87
- | `writeMemory(thread, dest, source)` | Write via decomposed `memset` calls; romem-aware |
169
+ | `allocString(proxy, str, opts?)` | Allocate + write a null-terminated string |
170
+ | `writeString(proxy, dest, str)` | Write a null-terminated string to an existing address |
171
+ | `fileOpen(proxy, path, mode)` | `fopen` in the target; auto-allocates/frees string args |
172
+ | `fileWrite(proxy, stream, data)` | `fwrite` — accepts `Buffer`, `string`, or `NativeMemory` |
173
+ | `fileRead(proxy, stream, dest)` | `fread` — `NativeMemory` or byte-count → `Buffer` |
174
+ | `fileFlush(proxy, stream)` | `fflush` |
175
+ | `fileClose(proxy, stream)` | `fclose` |
88
176
 
89
177
  Overridable hooks (for subclasses):
90
178
  - `threadClose(proxy, captured, suicide?)` — called by `proxy.close()`
@@ -93,18 +181,49 @@ Overridable hooks (for subclasses):
93
181
 
94
182
  ### `NThreadHeap`
95
183
 
96
- Subclass of `NThread`. Pre-allocates a single heap block (`calloc`) in the target and sub-allocates from it. The heap doubles on full (up to `maxSize`); oversized requests fall back to `msvcrt!malloc`.
184
+ Subclass of `NThread`. Pre-allocates a heap block in the target and sub-allocates from it. The block doubles on full (up to `maxSize`); oversized requests fall back to `msvcrt!malloc`.
97
185
 
98
186
  ```typescript
99
187
  new NThreadHeap(heapSize?, maxSize?, processId?, sleepAddress?, pushretAddress?, regKey?)
100
- // Defaults: heapSize = 65536, maxSize = 65536 * 8
188
+ // Defaults: heapSize = 65536, maxSize = 524288
189
+ ```
190
+
191
+ All heap blocks are **freed atomically on `proxy.close()`**.
192
+
193
+ ### `NThreadFile`
194
+
195
+ Subclass of `NThreadHeap`. Replaces `ReadProcessMemory`/`WriteProcessMemory` (and the base class's decomposed `memset` writes) with a bidirectional filesystem channel.
196
+
197
+ ```typescript
198
+ new NThreadFile(heapSize?, maxSize?, processId?, sleepAddress?, pushretAddress?, regKey?)
101
199
  ```
102
200
 
103
- All proxy allocations are **freed atomically on `proxy.close()`**.
201
+ - Opens a single temp file in the target with `fopen(path, "w+b")` during `inject()`
202
+ - **Write** (attacker → target): write locally → `fseek(0)` + `fread` in target
203
+ - **Read** (target → attacker): `fseek(0)` + `fwrite` + `fflush` in target → read locally
204
+ - `proxy.close()` calls `fclose`, deletes the temp file, then destroys heaps and restores the thread
205
+
206
+ ### `ProxyThread`
207
+
208
+ High-level interface returned by `inject()`. Each operation is a replaceable delegate.
209
+
210
+ | Method | Description |
211
+ |--------|-------------|
212
+ | `read(address, size)` | Read memory from the target |
213
+ | `write(address, data, size?)` | Write memory to the target |
214
+ | `call(address, ...args)` | Call a function (up to 4 args: RCX, RDX, R8, R9) |
215
+ | `alloc(size, opts?)` | Allocate memory (`AllocOptions`: `fill`, `readonly`, `address`) |
216
+ | `free(ptr)` | Free memory |
217
+ | `allocString(str, encoding?, opts?)` | Alloc + write null-terminated string (default `utf16le`) |
218
+ | `close(suicide?)` | Release thread, or terminate with exit code |
219
+
220
+ **Delegate setters**: `setReader`, `setWriter`, `setCaller`, `setCloser`, `setAllocer`, `setFreer` — replace any operation with a custom function.
221
+
222
+ **CRT auto-binding**: All resolved `msvcrt` functions are bound as methods on the proxy (e.g. `proxy.malloc(size)`, `proxy.fopen(path, mode)`).
104
223
 
105
224
  ### `CapturedThread`
106
225
 
107
- Extends `Native.Thread`. Owns the hardware context cache, suspend tracking, and register manipulation for a single captured thread.
226
+ Extends `Native.Thread`. Owns the hardware context cache, suspend tracking, and register manipulation.
108
227
 
109
228
  | Method | Description |
110
229
  |--------|-------------|
@@ -114,48 +233,77 @@ Extends `Native.Thread`. Owns the hardware context cache, suspend tracking, and
114
233
  | `release()` | Restore saved context without closing handle |
115
234
  | `close()` | `release()` → drain suspends → close handle |
116
235
 
117
- ### `ProxyThread`
118
-
119
- High-level interface for a captured thread. Each operation is a replaceable delegate.
236
+ ### `AllocOptions`
120
237
 
121
238
  ```typescript
122
- new ProxyThread(close: CloseFn, process?: Native.Process)
239
+ interface AllocOptions {
240
+ fill?: number; // byte value to fill allocated memory
241
+ readonly?: boolean; // allocate in the readonly zone of the heap
242
+ address?: NativePointer; // realloc mode: resize an existing allocation
243
+ }
123
244
  ```
124
245
 
125
- | Method | Description |
126
- |--------|-------------|
127
- | `read(address, size)` | Read memory |
128
- | `write(address, data, size?)` | Write memory |
129
- | `call(address, ...args)` | Call a function |
130
- | `alloc(size, opts?)` | Allocate memory (`malloc`/`calloc`/realloc) |
131
- | `free(ptr)` | Free memory |
132
- | `allocString(str, encoding?, opts?)` | Alloc + write a string; null-terminated; default encoding `utf16le` |
133
- | `close(suicide?)` | Release the thread (or terminate with exit code) |
134
- | `setReader/setWriter/setCaller/setCloser/setAllocer/setFreer` | Replace delegates |
246
+ ---
135
247
 
136
- ### `globals.ts` — Gadget Registry
248
+ ## Gadget Auto-Discovery
137
249
 
138
- Manages sleep and pushret gadget pools. Auto-discovery runs once lazily on first use, scanning `ntdll`, `kernel32`, `kernelbase`, `msvcrt`. Register priority: `Rbx → Rbp → Rdi → Rsi`.
250
+ Gadgets are discovered lazily on first `inject()`. The scanner searches `ntdll`, `kernel32`, `kernelbase`, and `msvcrt` for:
139
251
 
140
- ### `crt.ts` CRT Bridge
252
+ - **Sleep**: `EB FE` (`jmp .`)
253
+ - **Pushret**: `push reg; ret` — register priority: `Rbx → Rbp → Rdi → Rsi` (least-clobbered by `msvcrt` calls)
141
254
 
142
- Resolves `msvcrt.dll` exports at load time (`malloc`, `calloc`, `free`, `memset`, `realloc`, `fopen`, `fread`, `fwrite`, `fflush`, `fclose`). All values are `NativePointer` — set as `RIP` on the hijacked thread.
255
+ You can also provide explicit gadget addresses in the constructor if you prefer manual control:
256
+
257
+ ```typescript
258
+ const nt = new NThread(pid, mySleepAddr, myPushretAddr, 'Rbx');
259
+ ```
143
260
 
144
261
  ---
145
262
 
146
- ## Read-Only Memory (`romem`)
263
+ ## CRT Bridge
147
264
 
148
- `romem` tracks a known-content region as a `(remote: NativePointer, local: Buffer)` pair. `proxy.write()` auto-detects overlaps and skips unchanged bytes.
265
+ `crt.ts` resolves `msvcrt.dll` exports at load time. All values are `NativePointer` used as `RIP` targets for `threadCall`.
149
266
 
150
267
  ```typescript
151
- import { createReadOnlyMemory, unregisterReadOnlyMemory } from '@cheatron/nthread';
268
+ import { crt } from '@cheatron/nthread';
269
+
270
+ crt.malloc // msvcrt!malloc
271
+ crt.calloc // msvcrt!calloc
272
+ crt.realloc // msvcrt!realloc
273
+ crt.free // msvcrt!free
274
+ crt.memset // msvcrt!memset
275
+ crt.fopen // msvcrt!fopen
276
+ crt.fread // msvcrt!fread
277
+ crt.fwrite // msvcrt!fwrite
278
+ crt.fseek // msvcrt!fseek
279
+ crt.fflush // msvcrt!fflush
280
+ crt.fclose // msvcrt!fclose
281
+ ```
152
282
 
153
- const romem = await createReadOnlyMemory(proxy, 256); // calloc in target
154
- const data = Buffer.alloc(256);
155
- data.writeUInt32LE(0xDEADBEEF, 0);
156
- await proxy.write(romem.remote, data); // only changed bytes are written
283
+ ---
284
+
285
+ ## Error Hierarchy
157
286
 
158
- unregisterReadOnlyMemory(romem);
287
+ ```
288
+ NThreadError
289
+ ├─ NoSleepAddressError — no sleep gadget found
290
+ ├─ NoPushretAddressError — no pushret gadget found
291
+ ├─ InjectError
292
+ │ ├─ InjectTimeoutError — thread didn't reach sleep in time
293
+ │ └─ MsvcrtNotLoadedError — msvcrt.dll not in target process
294
+ ├─ CallError
295
+ │ ├─ CallNotInjectedError — call before inject
296
+ │ ├─ CallTooManyArgsError — more than 4 args
297
+ │ ├─ CallRipMismatchError — RIP not at sleep before call
298
+ │ ├─ CallTimeoutError — function didn't return in time
299
+ │ └─ CallThreadDiedError — thread exited during call (e.g. ExitThread)
300
+ ├─ WriteError
301
+ │ └─ WriteSizeRequiredError — NativePointer write without size
302
+ ├─ AllocError
303
+ │ └─ ReallocNullError — realloc with null address
304
+ ├─ FileError — fopen returned NULL
305
+ └─ GadgetError
306
+ └─ GadgetScanError — pattern scan failed
159
307
  ```
160
308
 
161
309
  ---
@@ -165,7 +313,11 @@ unregisterReadOnlyMemory(romem);
165
313
  ```bash
166
314
  bun install
167
315
  bun run build
168
- wine /path/to/bun.exe test
316
+ bun run lint
317
+ bun run format
318
+
319
+ # Tests require Wine (Windows x64 on Linux)
320
+ wine /path/to/bun-windows-x64/bun.exe test
169
321
  ```
170
322
 
171
323
  ---
package/dist/crt.d.ts CHANGED
@@ -14,6 +14,7 @@ export interface CRTFunctions {
14
14
  fflush: Native.NativePointer;
15
15
  fclose: Native.NativePointer;
16
16
  fread: Native.NativePointer;
17
+ fseek: Native.NativePointer;
17
18
  free: Native.NativePointer;
18
19
  }
19
20
  /**
package/dist/crt.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"crt.d.ts","sourceRoot":"","sources":["../src/crt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAG3C;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC;CAC5B;AAYD;;;GAGG;AACH,eAAO,MAAM,GAAG,EAAE,YAWjB,CAAC"}
1
+ {"version":3,"file":"crt.d.ts","sourceRoot":"","sources":["../src/crt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAG3C;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC;CAC5B;AAYD;;;GAGG;AACH,eAAO,MAAM,GAAG,EAAE,YAYjB,CAAC"}
package/dist/crt.js CHANGED
@@ -23,6 +23,7 @@ export const crt = {
23
23
  fflush: get('fflush'),
24
24
  fclose: get('fclose'),
25
25
  fread: get('fread'),
26
+ fseek: get('fseek'),
26
27
  free: get('free'),
27
28
  };
28
29
  //# sourceMappingURL=crt.js.map
package/dist/crt.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"crt.js","sourceRoot":"","sources":["../src/crt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAoBlC;;;GAGG;AACH,MAAM,GAAG,GAAG,CAAC,IAAY,EAAwB,EAAE;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACpD,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAAiB;IAC/B,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;IACrB,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"crt.js","sourceRoot":"","sources":["../src/crt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAqBlC;;;GAGG;AACH,MAAM,GAAG,GAAG,CAAC,IAAY,EAAwB,EAAE;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACpD,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAAiB;IAC/B,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;IACrB,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;IACnB,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;CAClB,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -43,6 +43,18 @@ export declare class CallThreadDiedError extends CallError {
43
43
  }
44
44
  export declare class WriteError extends NThreadError {
45
45
  }
46
+ export declare class WriteSizeRequiredError extends WriteError {
47
+ constructor();
48
+ }
49
+ export declare class AllocError extends NThreadError {
50
+ }
51
+ export declare class ReallocNullError extends AllocError {
52
+ readonly address: bigint;
53
+ readonly size: number;
54
+ constructor(address: bigint, size: number);
55
+ }
56
+ export declare class FileError extends NThreadError {
57
+ }
46
58
  export declare class GadgetError extends NThreadError {
47
59
  }
48
60
  export declare class GadgetScanError extends GadgetError {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,uBAAe,SAAU,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAID,qBAAa,YAAa,SAAQ,SAAS;CAAG;AAE9C,qBAAa,mBAAoB,SAAQ,YAAY;;CAIpD;AAED,qBAAa,qBAAsB,SAAQ,YAAY;;CAItD;AAED,qBAAa,WAAY,SAAQ,YAAY;CAAG;AAEhD,qBAAa,kBAAmB,SAAQ,WAAW;aACrB,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;CAG/C;AAED,qBAAa,oBAAqB,SAAQ,WAAW;;CAIpD;AAID,qBAAa,SAAU,SAAQ,YAAY;IACzC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAI5C;AAED,qBAAa,oBAAqB,SAAQ,SAAS;;CAIlD;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IACjD,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAErB,QAAQ,EAAE,MAAM;CAO7B;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IACjD,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAExB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAQpE;AAED,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAO/C;AAED,qBAAa,mBAAoB,SAAQ,SAAS;gBACpC,MAAM,EAAE,MAAM;CAM3B;AAID,qBAAa,UAAW,SAAQ,YAAY;CAAG;AAI/C,qBAAa,WAAY,SAAQ,YAAY;CAAG;AAEhD,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,MAAM;CAI5B"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,uBAAe,SAAU,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAID,qBAAa,YAAa,SAAQ,SAAS;CAAG;AAE9C,qBAAa,mBAAoB,SAAQ,YAAY;;CAIpD;AAED,qBAAa,qBAAsB,SAAQ,YAAY;;CAItD;AAED,qBAAa,WAAY,SAAQ,YAAY;CAAG;AAEhD,qBAAa,kBAAmB,SAAQ,WAAW;aACrB,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;CAG/C;AAED,qBAAa,oBAAqB,SAAQ,WAAW;;CAIpD;AAID,qBAAa,SAAU,SAAQ,YAAY;IACzC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAI5C;AAED,qBAAa,oBAAqB,SAAQ,SAAS;;CAIlD;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IACjD,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAErB,QAAQ,EAAE,MAAM;CAO7B;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IACjD,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAExB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAQpE;AAED,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAO/C;AAED,qBAAa,mBAAoB,SAAQ,SAAS;gBACpC,MAAM,EAAE,MAAM;CAM3B;AAID,qBAAa,UAAW,SAAQ,YAAY;CAAG;AAE/C,qBAAa,sBAAuB,SAAQ,UAAU;;CAIrD;AAID,qBAAa,UAAW,SAAQ,YAAY;CAAG;AAE/C,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEjB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C;AAID,qBAAa,SAAU,SAAQ,YAAY;CAAG;AAI9C,qBAAa,WAAY,SAAQ,YAAY;CAAG;AAEhD,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,SAAgB,OAAO,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,MAAM;CAI5B"}
package/dist/errors.js CHANGED
@@ -76,6 +76,26 @@ export class CallThreadDiedError extends CallError {
76
76
  // ── Write errors ─────────────────────────────────────────────────────────────────
77
77
  export class WriteError extends NThreadError {
78
78
  }
79
+ export class WriteSizeRequiredError extends WriteError {
80
+ constructor() {
81
+ super('Size must be specified when writing from a NativePointer source');
82
+ }
83
+ }
84
+ // ── Alloc errors ─────────────────────────────────────────────────────────────
85
+ export class AllocError extends NThreadError {
86
+ }
87
+ export class ReallocNullError extends AllocError {
88
+ address;
89
+ size;
90
+ constructor(address, size) {
91
+ super(`realloc(0x${address.toString(16)}, ${size}) returned NULL`);
92
+ this.address = address;
93
+ this.size = size;
94
+ }
95
+ }
96
+ // ── File I/O errors ───────────────────────────────────────────────────────────
97
+ export class FileError extends NThreadError {
98
+ }
79
99
  // ── Gadget errors ─────────────────────────────────────────────────────────────
80
100
  export class GadgetError extends NThreadError {
81
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,MAAe,SAAU,SAAQ,KAAK;IACpC,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;CACF;AAED,iFAAiF;AAEjF,MAAM,OAAO,YAAa,SAAQ,SAAS;CAAG;AAE9C,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD;QACE,KAAK,CAAC,0DAA0D,CAAC,CAAC;IACpE,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,YAAY;IACrD;QACE,KAAK,CAAC,2DAA2D,CAAC,CAAC;IACrE,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,YAAY;CAAG;AAEhD,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACrB;IAA5B,YAA4B,UAAkB;QAC5C,KAAK,CAAC,oDAAoD,UAAU,GAAG,CAAC,CAAC;QAD/C,eAAU,GAAV,UAAU,CAAQ;IAE9C,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IACnD;QACE,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACnE,CAAC;CACF;AAED,iFAAiF;AAEjF,MAAM,OAAO,SAAU,SAAQ,YAAY;IACzB,MAAM,CAAS;IAE/B,YAAY,OAAe,EAAE,MAAc;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IACjD;QACE,KAAK,CAAC,2CAA2C,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IACjC,QAAQ,CAAS;IAEjC,YAAY,QAAgB;QAC1B,KAAK,CACH,oFAAoF,QAAQ,EAAE,EAC9F,EAAE,CACH,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IACjC,UAAU,CAAS;IACnB,WAAW,CAAS;IAEpC,YAAY,MAAc,EAAE,UAAkB,EAAE,WAAmB;QACjE,KAAK,CACH,iBAAiB,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,gCAAgC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EACnG,MAAM,CACP,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAC7B,UAAU,CAAS;IAEnC,YAAY,MAAc,EAAE,UAAkB;QAC5C,KAAK,CACH,wDAAwD,UAAU,GAAG,EACrE,MAAM,CACP,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IAChD,YAAY,MAAc;QACxB,KAAK,CACH,+DAA+D,EAC/D,MAAM,CACP,CAAC;IACJ,CAAC;CACF;AAED,oFAAoF;AAEpF,MAAM,OAAO,UAAW,SAAQ,YAAY;CAAG;AAE/C,iFAAiF;AAEjF,MAAM,OAAO,WAAY,SAAQ,YAAY;CAAG;AAEhD,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9B,OAAO,CAAS;IAEhC,YAAY,OAAe;QACzB,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from './logger.js';
4
4
  export * from './thread/captured-thread.js';
5
5
  export * from './nthread.js';
6
6
  export * from './nthread-heap.js';
7
+ export * from './nthread-file.js';
7
8
  export * from './globals.js';
8
9
  export * from './thread/proxy-thread.js';
9
10
  export * from './memory/romem.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ export * from './logger.js';
4
4
  export * from './thread/captured-thread.js';
5
5
  export * from './nthread.js';
6
6
  export * from './nthread-heap.js';
7
+ export * from './nthread-file.js';
7
8
  export * from './globals.js';
8
9
  export * from './thread/proxy-thread.js';
9
10
  export * from './memory/romem.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC"}
@@ -5,8 +5,8 @@ import { type ReadOnlyMemory } from './romem.js';
5
5
  export declare const DEFAULT_HEAP_SIZE = 16384;
6
6
  /** Result of a heap allocation — pointer into the pre-allocated region */
7
7
  export interface HeapAlloc {
8
- /** Remote address in the target process */
9
- readonly remote: Native.NativePointer;
8
+ /** Remote address in the target process (includes allocation size) */
9
+ readonly remote: Native.NativeMemory;
10
10
  /** Size of this allocation */
11
11
  readonly size: number;
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"heap.d.ts","sourceRoot":"","sources":["../../src/memory/heap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAGpB,sCAAsC;AACtC,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC,0EAA0E;AAC1E,MAAM,WAAW,SAAS;IACxB,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IACtC,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,IAAI;IACf,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC;IACpC,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAE/B,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAK;IACrB,oDAAoD;IACpD,OAAO,CAAC,QAAQ,CAAK;IAErB,yDAAyD;IACzD,OAAO,CAAC,UAAU,CAAmB;IACrC,0DAA0D;IAC1D,OAAO,CAAC,UAAU,CAAmB;IAErC,OAAO;IAcP;;;;;;;;OAQG;WACU,MAAM,CACjB,KAAK,EAAE,WAAW,EAClB,SAAS,GAAE,MAA0B,EACrC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAuBhB,qDAAqD;IACrD,IAAI,MAAM,IAAI,MAAM,CAAC,aAAa,CAEjC;IAED,gFAAgF;IAChF,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,iFAAiF;IACjF,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAIxB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAIxB;IAED;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAmB7B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAqChC;;;;;;;;;;OAUG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IA2BtC;;;;;;;;;OASG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAyB9B;;;;;;;;;OASG;IACH,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAqB5B;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAQb;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAIjD"}
1
+ {"version":3,"file":"heap.d.ts","sourceRoot":"","sources":["../../src/memory/heap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAGpB,sCAAsC;AACtC,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC,0EAA0E;AAC1E,MAAM,WAAW,SAAS;IACxB,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC;IACrC,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,IAAI;IACf,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC;IACpC,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAE/B,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAK;IACrB,oDAAoD;IACpD,OAAO,CAAC,QAAQ,CAAK;IAErB,yDAAyD;IACzD,OAAO,CAAC,UAAU,CAAmB;IACrC,0DAA0D;IAC1D,OAAO,CAAC,UAAU,CAAmB;IAErC,OAAO;IAcP;;;;;;;;OAQG;WACU,MAAM,CACjB,KAAK,EAAE,WAAW,EAClB,SAAS,GAAE,MAA0B,EACrC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAuBhB,qDAAqD;IACrD,IAAI,MAAM,IAAI,MAAM,CAAC,aAAa,CAEjC;IAED,gFAAgF;IAChF,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,iFAAiF;IACjF,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAIxB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAIxB;IAED;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAmB7B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAqChC;;;;;;;;;;OAUG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IA6BtC;;;;;;;;;OASG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IA6B9B;;;;;;;;;OASG;IACH,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAqB5B;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAQb;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAIjD"}
@@ -77,7 +77,7 @@ export class Heap {
77
77
  throw new Error(`calloc(1, ${totalSize}) returned NULL`);
78
78
  }
79
79
  // Register the readonly zone as romem for snapshot-based write optimization
80
- const roRemote = base;
80
+ const roRemote = new Native.NativeMemory(base.address, actualRoSize);
81
81
  const roLocal = Buffer.alloc(actualRoSize); // zero-filled — matches calloc
82
82
  const romem = registerReadOnlyMemory(roRemote, roLocal);
83
83
  return new Heap(base, totalSize, actualRoSize, rwSize, romem);
@@ -183,14 +183,14 @@ export class Heap {
183
183
  const freeIdx = Heap.findFreeBlock(this.roFreeList, size);
184
184
  if (freeIdx !== -1) {
185
185
  const offset = Heap.splitFreeBlock(this.roFreeList, freeIdx, size);
186
- const remote = new Native.NativePointer(this.base.address + BigInt(offset));
186
+ const remote = new Native.NativeMemory(this.base.address + BigInt(offset), size);
187
187
  return { remote, size };
188
188
  }
189
189
  // Bump allocate
190
190
  if (this.roOffset + size > this.roSize) {
191
191
  throw new Error(`Readonly zone exhausted: requested ${size}, available ${this.roAvailable}`);
192
192
  }
193
- const remote = new Native.NativePointer(this.base.address + BigInt(this.roOffset));
193
+ const remote = new Native.NativeMemory(this.base.address + BigInt(this.roOffset), size);
194
194
  this.roOffset += size;
195
195
  return { remote, size };
196
196
  }
@@ -211,14 +211,14 @@ export class Heap {
211
211
  const freeIdx = Heap.findFreeBlock(this.rwFreeList, size);
212
212
  if (freeIdx !== -1) {
213
213
  const offset = Heap.splitFreeBlock(this.rwFreeList, freeIdx, size);
214
- const remote = new Native.NativePointer(this.base.address + BigInt(this.roSize) + BigInt(offset));
214
+ const remote = new Native.NativeMemory(this.base.address + BigInt(this.roSize) + BigInt(offset), size);
215
215
  return { remote, size };
216
216
  }
217
217
  // Bump allocate
218
218
  if (this.rwOffset + size > this.rwSize) {
219
219
  throw new Error(`ReadWrite zone exhausted: requested ${size}, available ${this.rwAvailable}`);
220
220
  }
221
- const remote = this.base.add(BigInt(this.roSize) + BigInt(this.rwOffset));
221
+ const remote = new Native.NativeMemory(this.base.address + BigInt(this.roSize) + BigInt(this.rwOffset), size);
222
222
  this.rwOffset += size;
223
223
  return { remote, size };
224
224
  }
@@ -1 +1 @@
1
- {"version":3,"file":"heap.js","sourceRoot":"","sources":["../../src/memory/heap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heap.js","sourceRoot":"","sources":["../../src/memory/heap.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,8 @@ import type { ProxyThread } from '../thread/proxy-thread.js';
7
7
  * this lets writeMemory skip unchanged bytes automatically.
8
8
  */
9
9
  export interface ReadOnlyMemory {
10
- /** Remote address in the target process (allocated via calloc) */
11
- readonly remote: Native.NativePointer;
10
+ /** Remote address in the target process (allocated via calloc, size included) */
11
+ readonly remote: Native.NativeMemory;
12
12
  /** Local copy of the data — always mirrors what is on the remote side */
13
13
  readonly local: Buffer;
14
14
  }
@@ -29,7 +29,7 @@ export declare function createReadOnlyMemory(proxy: ProxyThread, size: number):
29
29
  * @param remote Address in the target process.
30
30
  * @param local Buffer that mirrors the remote contents exactly.
31
31
  */
32
- export declare function registerReadOnlyMemory(remote: Native.NativePointer, local: Buffer): ReadOnlyMemory;
32
+ export declare function registerReadOnlyMemory(remote: Native.NativeMemory, local: Buffer): ReadOnlyMemory;
33
33
  /**
34
34
  * Removes a read-only memory region from the registry.
35
35
  * Does NOT free the remote allocation — call `free` separately if needed.
@@ -1 +1 @@
1
- {"version":3,"file":"romem.d.ts","sourceRoot":"","sources":["../../src/memory/romem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IACtC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAKD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAUzB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,CAAC,aAAa,EAC5B,KAAK,EAAE,MAAM,GACZ,cAAc,CAIhB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAKvE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,cAAc,GAAG,SAAS,CAW5B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,cAAc,GACpB;IACD,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;CAClB,CAiBA;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,IAAI,CAeN"}
1
+ {"version":3,"file":"romem.d.ts","sourceRoot":"","sources":["../../src/memory/romem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC;IACrC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAKD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAWzB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,CAAC,YAAY,EAC3B,KAAK,EAAE,MAAM,GACZ,cAAc,CAIhB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAKvE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,cAAc,GAAG,SAAS,CAW5B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,cAAc,GACpB;IACD,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;CAClB,CAiBA;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,IAAI,CAeN"}
@@ -15,8 +15,9 @@ export async function createReadOnlyMemory(proxy, size) {
15
15
  if (ptr.address === 0n) {
16
16
  throw new Error(`calloc(1, ${size}) returned NULL`);
17
17
  }
18
+ const remote = Native.NativeMemory.createFromPointer(ptr, undefined, size);
18
19
  const local = Buffer.alloc(size); // zero-filled — matches calloc
19
- const romem = { remote: ptr, local };
20
+ const romem = { remote, local };
20
21
  regions.push(romem);
21
22
  return romem;
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"romem.js","sourceRoot":"","sources":["../../src/memory/romem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"romem.js","sourceRoot":"","sources":["../../src/memory/romem.ts"],"names":[],"mappings":"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"}