Metamorphic code generation from LLVM bytecode
2013; Springer Science+Business Media; Volume: 10; Issue: 3 Linguagem: Inglês
10.1007/s11416-013-0194-3
ISSN2263-8733
AutoresTeja Tamboli, Thomas H. Austin, Mark Stamp,
Tópico(s)Software Testing and Debugging Techniques
ResumoMetamorphic software changes its internal structure across generations with its functionality remaining unchanged. Metamorphism has been employed by malware writers as a means of evading signature detection and other advanced detection strategies. However, code morphing also has potential security benefits, since it can serve to increase the "genetic diversity" of software. We have created a metamorphic code generator within the LLVM compiler framework. LLVM is a three-phase compiler that supports multiple source languages and target architectures. It uses a common intermediate representation (IR) bytecode in its optimizer. Consequently, any supported high-level programming language is transformed to this IR bytecode as part of the LLVM compilation process. Our metamorphic generator functions at the IR bytecode level, which provides many advantages over morphing at the assembly or source code level. The morphing techniques that we employ include dead code insertion and transposition, where the dead code is actually executed within the morphed code, making its detection and removal more challenging. We have verified the effectiveness of our code morphing using hidden Markov model analysis.
Referência(s)