rOACCT/node_modules/@webassemblyjs/wasm-edit0615c7ce0b3fstaging
rOACCT/node_modules/@webassemblyjs/wasm-edit
0615c7ce0b3fstaging
wasm-edit
wasm-edit
README.md
README.md
@webassemblyjs/wasm-edit
Rewrite a WASM binary
Replace in-place an AST node in the binary.
Installation
sh yarn add @webassemblyjs/wasm-edit
Usage
Update:
js import { edit } from "@webassemblyjs/wasm-edit"; const binary = [/*...*/]; const visitors = { ModuleImport({ node }) { node.module = "foo"; node.name = "bar"; } }; const newBinary = edit(binary, visitors);
Replace:
js import { edit } from "@webassemblyjs/wasm-edit"; const binary = [/*...*/]; const visitors = { Instr(path) { const newNode = t.callInstruction(t.indexLiteral(0)); path.replaceWith(newNode); } }; const newBinary = edit(binary, visitors);
Remove:
js import { edit } from "@webassemblyjs/wasm-edit"; const binary = [/*...*/]; const visitors = { ModuleExport({ node }) { path.remove() } }; const newBinary = edit(binary, visitors);
Insert:
js import { add } from "@webassemblyjs/wasm-edit"; const binary = [/*...*/]; const newBinary = add(actualBinary, [ t.moduleImport("env", "mem", t.memory(t.limit(1))) ]);
Providing the AST
Providing an AST allows you to handle the decoding yourself, here is the API:
js addWithAST(Program, ArrayBuffer, Array<Node>): ArrayBuffer; editWithAST(Program, ArrayBuffer, visitors): ArrayBuffer;
Note that the AST will be updated in-place.
c4science · Help