Questo è chiamato offuscamento.
Ciò che fa è che esegue una serie di operazioni che non influiscono sull'esecuzione del codice sorgente, ma rendono più difficile la lettura di un essere umano.
Ad esempio, qui ci sono alcune tecniche di offuscamento comunemente usate:
Con solo queste tre tecniche di base, questo codice:
public string GenerateFileName()
{
var basePath = this.FindBasePath();
do
{
var counter = this.CounterExists ? this.GetCounter() : 0;
var name = this.GenerateName(counter);
// If the file limit was exceeded, it indicates that something went wrong.
// Possible causes include two services running side by side on the same machine
// or two machines running the service using a share. Remember that the service
// should be bound to a directory which is not used by any other application.
if (counter > MaximumAllowedFiles)
{
throw new StorageThresholdException();
}
}
while (File.Exists(Path.Combine(basePath, name)));
}
diventa:
public string c(){var a=this.h();do{var b=this.k?this.b():0;var c=this.d(b);if(b>i){throw
new af();}}while(File.Exists(Path.Combine(a,c)));}
Le tecniche di offuscamento utilizzate meno frequentemente includono ma non sono limitate a:
-
Crittografia delle stringhe,
-
Inlining (vale a dire spostando il corpo di un metodo nel metodo che stava chiamando il primo),
-
Offuscamento del flusso di controllo ,
-
Codifica del codice sorgente (l'efficacia di questa tecnica è molto contestata, poiché se la macchina che esegue l'applicazione può decifrare il codice sorgente per eseguirlo, anche l'utente di questa macchina può farlo).
Ovviamente, non dovresti fare da solo l'offuscamento, ma piuttosto cercare uno strumento che lo faccia per la lingua che preferisci.
Si noti che alcuni strumenti non hanno l'offuscamento come obiettivo principale, ma possono ancora essere utilizzati per questo. Google Closure Compiler, ad esempio, ha lo scopo di (1) eseguire il controllo statico del codice e (2) ridurre la dimensione dei file JavaScript, ma ha un effetto collaterale di rendere il codice sorgente del tutto illeggibile.