L'offuscamento non trasforma i dati - rende i dati difficili da interpretare.
Se sto scrivendo malware e voglio rendere difficile agli analisti la comprensione del flusso della logica, allora invece di usare una funzione chiamata print
, uso una stringa casuale per nominare quella funzione. "Stampa" non è stato trasformato in una stringa casuale, la funzione è appena chiamata stringa casuale. Non c'è nulla per "ripristinare" la stringa casuale su.
Quando si esegue un obfuscator di codice, prende i nomi variabili e funzioni, assegna loro un valore chiave (pensa: variable1
, function1
, ecc.), quindi sostituisce quei nomi con una stringa casuale (e talvolta il la stringa casuale viene a sua volta offuscata tramite una funzione di ridenominazione incorporata nel codice). Questa non è crittografia o hashing. Questa è una rinomina completa con stringhe casuali. Sì, potresti anche usare la crittografia come funzione di ridenominazione, ma perché prendere quel successo computazionale? Alla fine, le variabili e i nomi delle funzioni devono essere coerenti nel flusso logico in fase di esecuzione.