1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| const fs = require('fs');
(async () => { const memory = new WebAssembly.Memory({ initial: 1, maximum: 2 });
const importObject = { env: { memory: memory } }; const wasmBuffer = fs.readFileSync('./memory_test.wasm'); const wasmModule = await WebAssembly.instantiate(wasmBuffer, importObject);
const { writeToMemory, readFromMemory} = wasmModule.instance.exports;
const inBoundsOffset = 65532; const outOfBoundsOffset = 70000;
writeToMemory(inBoundsOffset, 123456); console.log("读取数据:", readFromMemory(inBoundsOffset));
try { console.log("尝试越界写数据"); writeToMemory(outOfBoundsOffset, 999); } catch (err) { console.error("越界写错误:", err.message); console.log(err); }
try { console.log("尝试越界读数据"); console.log(readFromMemory(outOfBoundsOffset)); } catch (err) { console.error("越界读错误:", err.message); console.log(err); } })();
|