Ein Obfuscator (englisch to obfuscate: "verdunkeln" oder "verwirren") ist ein Hilfsmittel zur Verschleierung von bestimmten in Computerprogrammen enthaltenen Informationen. Ein Obfuscator soll die Rückumwandlung eines Programmes, das als fertiges Endprodukt vorliegt, in eine für einen Menschen lesbare Form erschweren.
Dazu wird die im Endprodukt enthaltene Information soweit verschleiert, dass die Wiedergewinnung in eine menschenlesbare Form nur noch unter großem Aufwand erreicht werden kann. Ein häufiger Nebeneffekt ist die Verkleinerung des Programmcodes. Dies ist vor allem bei der Entwicklung von Applikationen für mobile Endgeräte vorteilhaft.
Obwohl es in der Softwaretechnik schon immer die Möglichkeit zur Rückgewinnung von Informationen aus Computerprogrammen durch Reverse Engineering gab, wurde es in letzter Zeit durch die leichte Erkennbarkeit der Programmabläufe in den neueren Umgebungen, wie bei Java oder Microsofts .NET, zu einem bedeutenden Problem.
Ein Obfuscator ist nicht Teil der sogenannten Steganografie oder Kryptografie, da beim Obfuscator nur das Verständnis für den Menschen die Hürde ist, nicht jedoch in formaler Hinsicht für einen Decompiler.
Um verschiedene Skripte wie JScript-, VBScript- und insbesondere ASP-Dateien zu verschleiern, empfiehlt Microsoft, den Windows Script Encoder zu benutzen. Im Falle einer Kompromittierung des Webservers soll der Angreifer nicht in der Lage sein zu verstehen, wie die ASP-Anwendung funktioniert. Mittlerweile gibt es jedoch Decoder, um die Verschleierung rückgängig zu machen.
Programmierwettbewerbe für die am kreativsten verschleierten Programm-Quelltexte: