C/C++ Function Corruption

Was ist die C/C++ Function Corruption?

Die antispy C/C++ Function Corruption ist eine erweiterte Anti-Analyse Technik.

Bei einer normalen C/C++ Funktion ist es so, dass der Quelltext zu nativen Code-Instructions kompiliert wird. Daraus entsteht ein Programm. Diese Code-Instructions können mit einem Disassembler zu einer menschlich lesbaren Form Assembler, Pseudo-C wiederhergestellt werden. Beides hilft bei der Analyse Ihrer Software.

Die antispy C/C++ Function Corruption sorgt dafür, dass der Quelltext in verschlüsselte Code-Instructions kompiliert wird. Diese versteht ein Disassembler nicht. Folglich scheitert der Versuch der statischen Analyse.

Diese verschlüsselten Code-Instructions werden zur Laufzeit zu den originalen Code-Instructions umgewandelt und nach Verwendung wieder verschlüsselt.

Implementierung

Grundsätzlich lässt sich nach Einrichtung des Projektes die Function Corruption sehr einfach implementieren.

#include <antispy/obfuscation.hpp>

int main(int argc, const char **argv)
{   
    int result = 0;
    ANTI_SPY_CORRUPT_CALL(reinterpret_cast<uint64_t>(&result), argc)
    return result;
}

Durch die Verwendung des ANTI_SPY_CORRUPT_CALL Makros können Zuweisungen und Aufrufe von Funktionen in verschlüsselten Code kompiliert werden. Daraus folgt, dass sämtliche Disassembler bei der Analyse des Codes scheitern. Zur Laufzeit wird der Code bei der Benutzung entschlüsselt.