Obfuscation by Partial Evaluation of Distorted Interpretation
By: Roberto Giacobazzi, Neil Jones and Isabella Mastroeni
Roberto
Giacobazzi
Dip. di Informatica
Univ. di Verona
Strada Le Grazie a Ca' Vignal 2
I-37134 Verona, Italy
roberto.giacobazzi@univr.it
Neil Jones
DIKU
Univ. of Copenhagen
Universitetsparken 1
DK-2100 Copenhagen East, DENMARK
neil@diku.dk
Isabella Mastroeni
Dip. di Informatica
Univ. di Verona
Strada Le Grazie a Ca' Vignal 2
I-37134 Verona, Italy
isabella.mastroeni@univr.it
Abstract:
How to construct a general program obfuscator?We present a novel
approach to automatically generating obfuscated code P0 from any
program P with source clear code. Start with a (program-executing)
interpreter interp for the language in which P is written. Then
“distort” interp so it is still correct, but its specialization P0 with
respect to P is transformed code that is equivalent to the original
program, but harder to understand or analyze. Potency of the obfuscator
is proved with respect to a general model of the attacker,
modeled as an approximate (abstract) interpreter. A systematic approach
to distortion is to make program P obscure by transforming
it to P0 on which (abstract) interpretation is incomplete. Interpreter
distortion can be done by making residual in the specialization
process sufficiently many interpreter operations to defeat an
attacker in extracting sensible information from transformed code.
Our method is applied to: code flattening, data-type obfuscation,
and opaque predicate insertion. The technique is language independent
and can be exploited for designing obfuscating compilers.
isabella.mastroeni@univr.it