C/C++ Data Randomization

Die antispy™ C/C++ Data Randomization sorgt für eine zufällige Anordnung von statischen Werten in der kompilierten Binary. Damit lassen sich Heuristiken brechen, die durch Binary Matchings Daten finden (Tokens, API Schlüssel, Secret Keys, Secret Strings).

Implementierung

Durch das Einfügen der zufällig angeordneten Gaps mittels dem Makro ANTI_SPY_CONST_DATA_RANDOMIZER  im Speicher ist der String im Ganzen nicht mehr in der Binary zu finden. Diese Art von Data Randomization ist auch für alle anderen const-Daten möglich.

#include <antispy/obfuscation.hpp>

ANTI_SPY_CONST_DATA_RANDOMIZER(gap_0)
ANTI_SPY_RANDOM_DATA const char randomized_data[] = "Hardcoded string";
ANTI_SPY_CONST_DATA_RANDOMIZER(gap_1)

int main(int argc, const char **argv)
{   
    // make sure to reference gap_0 and gap_1 to have them included in the final binary.
    if (&gap_0 != &gap_1)
    {
        std::cout << "Randomized data: " << randomized_data << std::endl;
    }
    return 0;
}