Semantic-Based Code Obfuscation by Abstract Interpretation

In this paper we introduce a semantic-based approach for code obfuscation. The aim of code obfuscation is to prevent malicious users to disclose properties of the original source program. This goal can be precisely modeled by abstract interpretation, where the hiding of properties corresponds to abstract the semantics. We derive a general theory based on abstract interpretation, where the potency of code obfuscation can be measured by comparing hidden properties in the lattice of abstract interpretations. Semantic-based code obfuscation is applied to show that well known program transformation methods, such as constant propagation, can be seen as code obfuscation.

[1]  Agostino Cortesi,et al.  Complementation in abstract interpretation , 1997, TOPL.

[2]  Clark Thomborson,et al.  Manufacturing cheap, resilient, and stealthy opaque constructs , 1998, POPL '98.

[3]  Roberto Giacobazzi,et al.  Making abstract interpretations complete , 2000, JACM.

[4]  Amit Sahai,et al.  On the (im)possibility of obfuscating programs , 2001, JACM.

[5]  Christian S. Collberg,et al.  A Taxonomy of Obfuscating Transformations , 1997 .

[6]  Patrick Cousot,et al.  Méthodes itératives de construction et d'approximation de points fixes d'opérateurs monotones sur un treillis, analyse sémantique des programmes , 1978 .

[7]  Christian S. Collberg,et al.  Breaking abstractions and unstructuring data structures , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[8]  Christian S. Collberg,et al.  Watermarking, Tamper-Proofing, and Obfuscation-Tools for Software Protection , 2002, IEEE Trans. Software Eng..

[9]  Patrick Cousot Constructive design of a hierarchy of semantics of a transition system by abstract interpretation , 2002, Theor. Comput. Sci..

[10]  S CollbergChristian,et al.  Watermarking, tamper-proffing, and obfuscation , 2002 .

[11]  Gilberto Filé,et al.  Complementation of Abstract Domains made Easy , 1996, JICSLP.

[12]  Patrick Cousot,et al.  An abstract interpretation-based framework for software watermarking , 2004, POPL.

[13]  Robert Paige,et al.  Future directions in program transformations , 1997, SIGP.

[14]  Patrick Cousot,et al.  Systematic design of program transformation frameworks by abstract interpretation , 2002, POPL '02.

[15]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

[16]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.