Code obfuscation against static and dynamic reverse engineering

  • Authors:
  • Sebastian Schrittwieser;Stefan Katzenbeisser

  • Affiliations:
  • Vienna University of Technology, Austria;Darmstadt University of Technology, Germany

  • Venue:
  • IH'11 Proceedings of the 13th international conference on Information hiding
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

The process of reverse engineering allows attackers to understand the behavior of software and extract proprietary algorithms and data structures (e.g. cryptographic keys) from it. Code obfuscation is frequently employed to mitigate this risk. However, while most of today's obfuscation methods are targeted against static reverse engineering, where the attacker analyzes the code without actually executing it, they are still insecure against dynamic analysis techniques, where the behavior of the software is inspected at runtime. In this paper, we introduce a novel code obfuscation scheme that applies the concept of software diversification to the control flow graph of the software to enhance its complexity. Our approach aims at making dynamic reverse engineering considerably harder as the information an attacker can retrieve from the analysis of a single run of the program with a certain input, is useless for understanding the program behavior on other inputs. Based on a prototype implementation we show that our approach improves resistance against both static disassembling tools and dynamic reverse engineering at a reasonable performance penalty.