Obfuscated Instructions for Software Protection

Akito Monden,Antoine Monsifrot,Clark Thomborson
2003-01-01
Abstract:Many computer systems are designed to make it easy for end-users to install and update software. An undesirable side-effect, from the perspective of many software producers, is that hostile end-users may analyze or tamper with the software being installed or updated. This paper proposes a way to avoid the side-effect without affecting the ease of installation and update. We construct a computer system M with the following properties: 1) the end-user may install program P in any conveniently accessible area of M; 2) the program P contains obfuscated instructions whose semantics are obscure and difficult to understand; and 3) an internal interpreter W, embedded in a non-accessible area of M, interprets the obfuscated instructions without revealing their semantics. Our W is a finite state machine (FSM) which gives context-dependent semantics and operand syntax to the obfuscated instructions in P; thus, attempts to statically analyze the relation between instructions and their semantics will not succeed. We present a systematic method to construct a P whose instruction stream is always interpreted correctly regardless of its input, even though changes in input will (in general) affect the execution sequence of instructions in P. Our framework is easily applied to conventional computer systems by adding a FSM unit to a virtual machine or a reconfigurable processor.
What problem does this paper attempt to address?