Software code protection through software obfuscation
Date of Issue2010
School of Computer Engineering
The mode of platform-independent software running on client machine has various advantages. But it also introduces some problems, such as how to guard against software piracy, how to protect user from intellectual property theft and from attacks by malicious modifications. Development of reverse engineering techniques makes all these attacks easier. Therefore, obfuscation has gained a lot of interest since the obfuscation technique makes the cost of program reverse engineering prohibitively high with least program size and execution speed overheads. In this report, we present our proposed obfuscation algorithms which are primarily based on self-modifying code. We have designed three software obfuscation algorithms. The first self-modifying proposal is integrated with Control Flow Flattening to realize the obscurity in instruction and execution control flow. The second one is based on Basic Blocks to improve both the performance of storage size overhead and the instruction disassembly errors metrics. And the third one is proposed at the function level to provide full protection to improve the security to both static and dynamic attacks. We implement these obfuscation algorithms at link time and evaluate them on standard benchmark suite. The novel techniques are evaluated with metrics referred by existing proposals to prove that our algorithms succeed in confusing the disassembler when reverse engineering the control flow and instructions of program. We also discuss how the novel methods improve the obfuscation efficiency in comparison with the existing competing obfuscation methods.
DRNTU::Engineering::Computer science and engineering::Software::Software engineering