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
- Alok Mishra (ORCID: https://orcid.org/0000-0003-1275-2050)
Institutions
- Indian Institute of Information Technology Design and Manufacturing Jabalpur (IN)
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