Neil D. Jones, Professor Emeritus of the University of Copenhagen,
Obfuscation by Partial Evaluation of Distorted Interpreters
Joint work with Roberto Giacobazzi and Isabella Mastroeni.
Abstract. How to construct
a general program obfuscator? We present a novel approach
to automatically generating obfuscated code P2 from any program
P whose source code is given. Start with a (program-executing) interpreter
interp for the language in which P is written. Then
interp so it is still correct, but its specialization
P2 w.r.t. 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
P2 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.
PEPM 2012 talk and paper.