paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Static stack-preserving intra-procedural slicing of webassembly binaries

WebAssembly 二进制的静态保持栈的过程内切片
ICSE Proceedings of the 44th International Conference on Software Engineering2022匹配度 3/10 · 该论文属于静态程序分析与抽象解释方向,提出 WebAssembly 二进制的过程内切片方法,具有工程实现与大规模评估;但未涉及 LLM/Agent、浮点程序分析或贝叶斯程序分析,也不直接面向机器学习系统或 Agentic 程序,因此与用户核心研究画像仅存在宽泛的“程序分析”关联。引用 18 inbox
Quentin Stiévenart, David W. Binkley, Coen De Roover
crossref: 2026-09-12

AI 速览

一句话:提出一种静态过程内后向切片方法,可在 WebAssembly 二进制上做依赖分析并保持栈合法性。

WebAssembly 作为可移植编译目标,在逆向工程、代码理解和安全等场景中需要二进制级切片;但二进制层依赖分析困难,且切片必须满足 WebAssembly 的栈验证要求。本文提出一种静态、过程内、后向切片方法,针对 WebAssembly 特有依赖识别切片指令,并保证输出切片保持栈行为从而可执行。作者在 8,386 个真实 WebAssembly 二进制上评估,计算了 495,204,868 个切片,平均大小为原代码的 53%,优于相关 ARM 二进制切片工作的 60%。此外,他们将切片与 1,956 个 C 程序源级切片对比,以定性分析该方法的优势与改进空间。

问题
WebAssembly 二进制缺乏有效的切片支持,而二进制级依赖分析困难,且切片必须保持栈行为才能通过验证并执行。
方法
采用静态、过程内、后向切片方法,建模 WebAssembly 特有的依赖关系,并生成保持栈行为的可执行切片。
评估
在 8,386 个真实 WebAssembly 二进制上计算约 4.95 亿个切片,平均保留原代码的 53%;并与 1,956 个 C 程序源级切片对比进行定性分析。
原文摘要(Abstract)

The recently introduced WebAssembly standard aims to be a portable compilation target, enabling the cross-platform distribution of programs written in a variety of languages. We propose an approach to slice WebAssembly programs in order to enable applications in reverse engineering, code comprehension, and security among others. Given a program and a location in that program, program slicing produces a minimal version of the program that preserves the behavior at the given location. Specifically, our approach is a static, intra-procedural, backward slicing approach that takes into account WebAssembly-specific dependences to identify the instructions of the slice. To do so it must correctly overcome the considerable challenges of performing dependence analysis at the binary level. Furthermore, for the slice to be executable, the approach needs to ensure that the stack behavior of its output complies with WebAssembly's validation requirements. We implemented and evaluated our approach on a suite of 8 386 real-world WebAssembly binaries, finding that the average size of the 495 204 868 slices computed is 53% of the original code, an improvement over the 60% attained by related work slicing ARM binaries. To gain a more qualitative understanding of the slices produced by our approach, we compared them to 1 956 source-level slices of benchmark C programs. This inspection helps to illustrate the slicer's strengths and to uncover potential future improvements.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@inproceedings{paperbot6916,
  title = {Static stack-preserving intra-procedural slicing of webassembly binaries},
  author = {Quentin Stiévenart and David W. Binkley and Coen De Roover},
  booktitle = {ICSE},
  year = {2022},
  doi = {10.1145/3510003.3510070}
}