Hämärtäjä on prosessi tai laite, jonka tarkoituksena on vaikeuttaa ohjelman ymmärtämistä. Yleensä hämärtäjän lähestymistapa on ottaa ohjelma, joka on suhteellisen yksinkertainen ja tehdä taustalla olevasta koodista monimutkaisempi. Vaikka loppukäyttäjä ei todennäköisesti huomaa eroa koodin kulussa, obfuscator -toiminto vaikeuttaa koodin hakkerointia ja ohjelman kaappaamista. Tästä näkökulmasta tämän tyyppisten työkalujen käyttöä voidaan pitää turvatoimenpiteenä.
Laitteen tai prosessin nimi on lainattu sanasta “hämärtää”, joka viittaa sanallisen esityksen mutkistamiseen yrittäessään hämmentää tai hämmentää. Samalla tavalla hämärtäjä yrittää tehdä koodin ymmärtämisprosessista hieman hämmentävän. Tämä vaikeuttaa olennaisesti koodin heikentämistä, koska koodin todellinen liha on haudattu tai hämärtynyt niin, että koodin olennaisia työosia on vaikea poimia.
On olemassa useita ohjelmointikieliä, jotka yleensä reagoivat erittäin hyvin hämärtymisprosessiin. C ++ on yksi suosituimmista kielistä, ja se mahdollistaa hämärtimen käytön suhteellisen helposti vahingoittamatta peruskoodin toimintaa. Samalla tavalla C ja Perl pyrkivät myös toimimaan hyvin hämärtymisen avulla, mikä tekee suhteellisen helpoksi lisätä suojaelementin kaikkiin näillä kolmella kielellä kirjoitettuihin ohjelmiin.
Vaikka hämärtäjän tarkoitus on tarkoituksella vaikeuttaa koodin purkamista, on myös varmistettava, että ohjelmoinnin parissa työskentelevät henkilöt voivat tehdä sen ilman hämmennyksen estämistä. Tätä varten on mahdollista käyttää erilaisia tekniikoita ylimääräisten komplikaatioiden selvittämiseksi ja peruskoodin saavuttamiseksi. Tätä prosessia kutsutaan käänteiseksi suunnitteluksi, koska siihen sisältyy olennaisesti komplikaatioiden poistaminen todellisen kuvan näkemiseksi. Ohjelman leikkaaminen on esimerkki käänteisestä tekniikasta, jota käytetään koodisarjan hämärtämiseen.
Vaikka hämärtäjä tarjoaa jonkin verran suojaa, on tärkeää ymmärtää, että tämä prosessi ei saisi olla ainoa suojauskeino ohjelmoinnin suojaamiseksi. Muita suojausstrategioita olisi myös käytettävä sen varmistamiseksi, että verkko ei vastaanota pahantahtoisia lisäyksiä ja että niiden annetaan vaikuttaa olemassa oleviin koodeihin.