@TechReport{Dartmouth:TR2009-657, author = {Ashwin Ramaswamy and Sergey Bratus and Michael E. Locasto and Sean W. Smith}, title = {{Katana: A Hot Patching Framework for ELF Executables}}, institution = {Dartmouth College, Computer Science}, address = {Hanover, NH}, number = {TR2009-657}, year = {2009}, month = {September}, URL = {http://www.cs.dartmouth.edu/reports/TR2009-657.pdf}, abstract = { Despite advances in software modularity, security, and reliability, offline patching remains the predominant form of updating or protecting commodity software. Unfortunately, the mechanics of hot patching (the process of upgrading a program while it executes) remain understudied, even though such a capability offers practical benefits for both consumer and mission-critical systems. A reliable hot patching procedure would serve particularly well by reducing the downtime necessary for critical functionality or security upgrades. Yet, hot patching also carries the risk -- real or perceived -- of leaving the system in an inconsistent state, which leads many owners to forego its benefits as too risky. In this paper, we propose a novel method for hot patching ELF binaries that supports (a) synchronized global data and code updates and (b) reasoning about the results of applying the hot patch. We propose a format, which we call a Patch Object, for encoding patches as a special type of ELF relocatable object file. Our tool, Katana, automatically creates these patch objects as a by-product of the standard source build process. Katana also allows an end-user to apply the Patch Objects to a running process. In essence, our method can be viewed as an extension of the Application Binary Interface (ABI), and we argue for its inclusion in future ABI standards. } }