Control code obfuscation by abstract interpretation
Authors:
- 1 January 2005
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- No. 15510255,p. 301-310
Abstract
Control code obfuscation is intended to prevent malicious reverse engineering of software by masking the program control flow. These obfuscating transformations often rely on the existence of opaque predicates, that support the design of transformations that break up the program control flow. We prove that an algorithm for control obfuscation by opaque predicate insertion can be systematically derived as an abstraction of a suitable semantic transformation. In this framework, deobfuscation is interpreted as an attacker which can observe the computational behaviour of programs up to a given precision degree. Both obfuscation and deobfuscation can therefore be interpreted as approximations of program semantics, where approximation is formalized using abstract interpretation theory. In particular we prove that abstract interpretation provides the adequate setting to measure the potency of an obfuscation algorithm by comparing the degree of abstraction of the most abstract domains which are able to disclose opaque predicates.Keywords
This publication has 19 references indexed in Scilit:
- Systematic design of program transformation frameworks by abstract interpretation2002
- Making abstract interpretations completeJournal of the ACM, 2000
- Characterization of a sequentially consistent memory and verification of a cache memory by abstractionDistributed Computing, 1999
- Abstract interpretation of reactive systemsACM Transactions on Programming Languages and Systems, 1997
- Types as abstract interpretations1997
- Abstract interpretationACM Computing Surveys, 1996
- “Optimal” collecting semantics for analysis in a hierarchy of logic program semanticsLecture Notes in Computer Science, 1996
- Inductive definitions, semantics and abstract interpretations1992
- Systematic design of program analysis frameworks1979
- Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints1977