Tamper-Proofing with Self-Modifying Code
Gregory Morse, Tam\'as Kozsik

TL;DR
This paper introduces a tamper-proofing approach for self-modifying code that leverages timing and introspection to detect tampering, addressing practical execution challenges on modern processors.
Contribution
It presents a new model combining introspective and polymorphic self-modifying code with timing predicates, along with hardware primitives and performance analysis for tamper detection.
Findings
Careful engineering reduces SMC overhead significantly.
Timing semantics are crucial to prevent catastrophic pipeline clears.
Performance measurements show feasible overhead for tamper detection.
Abstract
Classical computability theory tells us that self-modifying code (SMC) on a deterministic universal Turing machine can be simulated by non-SMC code on the same model. That abstraction, however, omits the external timing inputs, concurrency, and microarchitectural state that dominate practical execution on modern processors. We argue that once timing, ordering, and self-introspective effects are treated as observables, a practically faithful non-SMC reproduction of timed SMC becomes detectably expensive on commodity systems. We present a tamper-proofing model that combines introspective and polymorphic SMC, reliable clocks, and runtime timing predicates to bind integrity checks to execution behavior. We distinguish static and dynamic SMC generation, characterize the timing semantics needed to avoid catastrophic pipeline clears, and give x86-64 design primitives for checksum-driven…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
