Abstract
Program analysis techniques have improved steadily over the past several decades, and these techniques have made algorithms and secret data contained in programs susceptible to discovery. Obfuscation is a technique to protect against this threat. Obfuscation schemes that encode variables have the potential to hide both algorithms and secret data. We define five types of attack — data-dependency attacks, dynamic attacks, instruction-guessing attacks, numerical attacks, and brute force attacks — that can be launched against existing obfuscation schemes. We then propose an obfuscation scheme which encodes variables in a code using an affine transformation. Our scheme is more secure than that of Sato, et al. because it can protect against dependency attacks, instruction-guessing attacks, and numerical attacks. We describe the implementation of our scheme as an obfuscation tool for C/C++ code.