Resistenza al deoffuscamento
Una volta cifrata una costante, il valore reale non è più presente nel corpo del metodo: l’IL contiene solo un indice di una tabella cifrata, che viene decifrata in fase di esecuzione. Un decompilatore mostra quindi indici opachi al posto dei numeri originali o del contenuto degli array.
La cifratura di valori e array di Babel è verificata con i principali strumenti open source di deoffuscamento per .NET. Eseguirli su un assembly protetto non recupera i valori cifrati: le costanti originali non compaiono come valori letterali nell’output ripulito, l’indirezione della decifratura resta al suo posto e la tabella dei dati cifrati rimane necessaria. La protezione regge.
Per il risultato più solido, combina la cifratura di valori e array con gli altri strati di protezione (ridenominazione dei simboli, cifratura delle stringhe, offuscamento del flusso di controllo e cifratura del codice), in modo che nessuno strato, se analizzato da solo, riveli il quadro completo.