Obfuscator je proces ali naprava, katere namen je otežiti razumevanje programa. Na splošno je pristop obfuscatorja vzeti program, ki je razmeroma preprost in narediti osnovno kodo bolj zapleteno. Medtem ko končni uporabnik verjetno ne bo opazil razlike v načinu izvajanja kode, funkcija obfuskatorja otežuje vdor v kodo in ugrabitev programa. S tega vidika lahko uporabo te vrste orodja razumemo kot varnostni ukrep.
Ime za napravo ali proces je izposojeno iz besede “obfuscate”, ki se nanaša na zapleteno besedno predstavitev v poskusu zmede ali zmede. Na podoben način poskuša obfuscator narediti proces razumevanja kode nekoliko zmeden. To v bistvu oteži spodkopavanje kode, saj je pravo meso kode tako globoko zakopano ali zakrito, da je težko izluščiti bistvene delovne dele kode.
Obstaja več programskih jezikov, ki se ponavadi zelo dobro odzivajo na proces zakrivanja. C++ je med najbolj priljubljenimi jeziki in omogoča relativno enostavno uporabo prikrivanja, ne da bi pri tem poškodoval funkcijo osnovne kode. Na podoben način tudi C in Perl dobro delujeta z uporabo prikrivanja, zaradi česar je relativno enostavno dodati element zaščite vsakemu programiranju, napisanem v teh treh jezikih.
Medtem ko je namen obfuskatorja namenoma otežiti razkrivanje kode, je treba zagotoviti tudi, da lahko ljudje, ki so pooblaščeni za delo s programiranjem, to storijo, ne da bi jih oviral proces prikrivanja. V ta namen je mogoče uporabiti različne tehnike za prebiranje dodatnih zapletov in priti do osnovne kode. Ta proces je znan kot obratni inženiring, saj v bistvu vključuje odpravo zapletov, da bi videli pravo sliko. Rezanje programov je primer tehnik povratnega inženiringa, ki se uporabljajo za odkrivanje nabora kode.
Medtem ko obfuscator zagotavlja določeno stopnjo zaščite, se je treba zavedati, da ta proces ne bi smel biti edino varnostno sredstvo, ki se uporablja za zaščito programiranja. Uporabiti je treba tudi druge varnostne strategije, da zagotovimo, da omrežje ne sprejme zlonamernih vnosov in jim omogoči, da se prebijejo v obstoječe kode.