Code obfuscation has gained a lot of interest as a means for protecting trusted software on an untrusted host. Obfuscation hampers reverse engineering by hiding the actual control flow and data structures of the program. In this paper we present a general deobfuscation attack against control flow obfuscation techniques. Control flow obfuscation techniques apply transformations to the program in order to hide information necessary to obtain a simple control flow graph of the program. Therefore, the first phase of our attack consists of retrieving this information. By using advanced, dynamic instrumentation techniques, we can collect the missing information for a large number of input sequences. In the second phase, this information is fed to static analyses which undo the applied control flow obfuscation transformations.