wasm-edit 0.1.6

Edit and instrument already compiled Wasm binaries
Documentation

wasm-edit

Edit and instrument already compiled Wasm binaries

Install

cargo install wasm-edit

Edit the main memory

Change the initial memory amount (in pages):

wasm-edit edit-memory --initial-memory=1000 < input.wasm > output.wasm

Trace calls to memory.grow

Trace calls to the memory.grow instruction:

wasm-edit instrument-memory < input.wasm > output.wasm

Requires Wasi, but doesn't require any change on the host. Tested with Rust and theoretically working with C/C++ (clang).

Coredump generation

Add the coredump generation:

wasm-edit coredump < input.wasm > output.wasm

When WebAssembly encounters a unreachable instruction it will unwind the stack, collect informations and generate a coredump.

The coredump struct is stored at a fixed location, this might conflict with other transformations like asyncify.

Collect the entire WebAssembly memory and use wasmgdb to analyze.

Running into stack overflow

Some Wasm binaries have very recursive flow of control, increase the maximum stack size:

$ ulimit -s 160000