  The increasing adoption of WebAssembly (Wasm) for performance-critical and
security-sensitive tasks drives the demand for WebAssembly program
comprehension and reverse engineering. Recent studies have introduced machine
learning (ML)-based WebAssembly reverse engineering tools. Yet, the
generalization of task-specific ML solutions remains challenging, because their
effectiveness hinges on the availability of an ample supply of high-quality
task-specific labeled data. Moreover, previous works overlook the high-level
semantics present in source code and its documentation. Acknowledging the
abundance of available source code with documentation, which can be compiled
into WebAssembly, we propose to learn representations of them concurrently and
harness their mutual relationships for effective WebAssembly reverse
engineering.
  In this paper, we present WasmRev, the first multi-modal pre-trained language
model for WebAssembly reverse engineering. WasmRev is pre-trained using
self-supervised learning on a large-scale multi-modal corpus encompassing
source code, code documentation and the compiled WebAssembly, without requiring
labeled data. WasmRev incorporates three tailored multi-modal pre-training
tasks to capture various characteristics of WebAssembly and cross-modal
relationships. WasmRev is only trained once to produce general-purpose
representations that can broadly support WebAssembly reverse engineering tasks
through few-shot fine-tuning with much less labeled data, improving data
efficiency. We fine-tune WasmRev onto three important reverse engineering
tasks: type recovery, function purpose identification and WebAssembly
summarization. Our results show that WasmRev pre-trained on the corpus of
multi-modal samples establishes a robust foundation for these tasks, achieving
high task accuracy and outperforming the state-of-the-art ML methods for
WebAssembly reverse engineering.
