Dapper


A Lightweight and Extensible Framework for Live Program State Rewriting

Overview

Dapper transforms a live process's state for different purposes. For example, Dapper supports live process migration of natively compiled Linux binaries across servers with CPUs of different architectures. It also supports re-randomizing the stack and registers of a process to improve security.

Dinosaur

Dapper was built on top of CRIU to dump a running process and then transform the CRIU images to support restoration on servers of a different architecture (see the demo below). Currently, Dapper supports live process migration on x86-64 and aarch64 CPUs.

Demo

Dinosaur
A demo of Dapper's process rewriting capability for cross-architecture live process migration. More details can be found here.

Getting Started

Please refer to the wiki page for a tutorial on how to rewrite process images with Dapper.

Publication

  • Dapper: A Lightweight and Extensible Framework for Live Program State Rewriting.
    A. Bapat, J. Shastri, X. Wang, A. Sundarasamy, and B. Ravindran
    to appear in IEEE ICDCS'24 [Paper] [Code]
  • DynaCut: A Framework for Dynamic and Adaptive Program Customization.
    A. Mahurkar, X. Wang, H. Zhang, and B. Ravindran
    appears in ACM Middleware'23 [Paper] [Code]

Dapper is supported in part by the US Office of Naval Research under grants N00014-18-1-2022, N00014-19-1-2493, and N0001422-1-2672, and by the US National Science Foundation (NSF) under grant CNS 2127491. Any opinions, findings, and conclusions expressed in this material are those of the authors and do not necessarily reflect the views of these agencies.