Fast static analysis of WebAssembly binaries with a per-function scope index

Static analysis tools now have to handle large WebAssembly modules built from C, C++, Rust, Go and Emscripten. A branch in Wasm names an enclosing scope by depth, and a call names a function by index. Tools built for native code often decode forward from each branch until the scope ends, and search the symbol list at each call, so analysis cost grows with the square of function or module size. This paper builds a per-function scope index in one pass, answers branch queries by binary search, maps function indices to addresses with a direct array, and skips the search for code pointers in data when the architecture cannot take code addresses from memory. Implemented in the Rizin reverse engineering framework, full analysis of a 2,812,058 byte module that did not finish in 600 s with the old plugin finishes in about 9 s with the patch, and on a 32 module Linux rerun the stock build timed out on 14 modules while the patched build finished all of them. The record includes the paper PDF and the artifact bundle (patch, benchmark scripts, raw timing rows). A short work-in-progress version is under review at MADWeb 2027.

Authors

Institutions

Publication Details

Journal
Zenodo (CERN European Organization for Nuclear Research)
Published
2026-10-30
DOI
https://doi.org/10.5281/zenodo.23797857
Primary Topic
Security and Verification in Computing
Type
preprint
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
preprint

Fast static analysis of WebAssembly binaries with a per-function scope index

Alok Mishra
Zenodo (CERN European Organization for Nuclear Research)
Security and Verification in Computing
preprint

Fast static analysis of WebAssembly binaries with a per-function scope index

Alok Mishra
preprint en

Abstract

Static analysis tools now have to handle large WebAssembly modules built from C, C++, Rust, Go and Emscripten. A branch in Wasm names an enclosing scope by depth, and a call names a function by index. Tools built for native code often decode forward from each branch until the scope ends, and search the symbol list at each call, so analysis cost grows with the square of function or module size. This paper builds a per-function scope index in one pass, answers branch queries by binary search, maps function indices to addresses with a direct array, and skips the search for code pointers in data when the architecture cannot take code addresses from memory. Implemented in the Rizin reverse engineering framework, full analysis of a 2,812,058 byte module that did not finish in 600 s with the old plugin finishes in about 9 s with the patch, and on a 32 module Linux rerun the stock build timed out on 14 modules while the patched build finished all of them. The record includes the paper PDF and the artifact bundle (patch, benchmark scripts, raw timing rows). A short work-in-progress version is under review at MADWeb 2027.

Zenodo (CERN European Organization for Nuclear Research)
Indian Institute of Information Technology Design and Manufacturing Jabalpur (IN)
Security and Verification in Computing
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.

Laika access coming soon
Fast static analysis of WebAssembly binaries with a per-function scope index — Alok Mishra · Zenodo (CERN European Organization for Nuclear Research) (2026) | TGRS Research Map | TGRS