Vad är en obfuscator?

En obfuscator är en process eller enhet som är avsedd att göra ett program svårare att förstå. I allmänhet är obfuscatorns tillvägagångssätt att ta ett program som är relativt enkelt och göra den underliggande koden mer komplex. Även om slutanvändaren sannolikt inte kommer att märka någon skillnad i hur koden körs, gör obfuscatorns funktion det svårare att hacka koden och kapa programmet. Ur detta perspektiv kan användningen av denna typ av verktyg ses som en säkerhetsåtgärd.

Namnet på enheten eller processen är lånat från ordet ”obfuscate”, som syftar på att komplicera en verbal presentation i ett försök att förvirra eller förvirra. På samma sätt försöker obfuscatorn göra processen att förstå koden något förbryllande. Detta gör det i grunden svårare för koden att undergrävas, eftersom det verkliga köttet i koden är så djupt begravd eller förvirrad att det är svårt att extrahera de väsentliga fungerande delarna av koden.

Det finns flera programspråk som tenderar att reagera mycket bra på förvirringsprocessen. C++ är bland de mest populära språken och gör det möjligt att använda en obfuscator relativt enkelt utan att förstöra baskodens funktion. På samma sätt tenderar C och Perl också att fungera bra med användning av obfuskation, vilket gör det relativt enkelt att lägga till ett skyddselement till all programmering som är skriven på dessa tre språk.

Även om syftet med en obfuscator är att avsiktligt göra koden svårare att reda ut, finns det också ett behov av att se till att personer som är behöriga att arbeta med programmeringen kan göra det utan att hindras av fördunklingsprocessen. För detta ändamål är det möjligt att använda olika tekniker för att arbeta igenom de extra komplikationerna och komma till baskoden. Denna process är känd som omvänd ingenjörskonst, eftersom det i huvudsak innebär att ångra komplikationerna för att se den sanna bilden. Program slicing är ett exempel på en omvänd ingenjörsteknik som används för att de-obfuskera en uppsättning kod.

Även om obfuscatorn ger en viss grad av skydd, är det viktigt att inse att denna process inte bör vara det enda säkerhetsmedlet som används för att skydda programmeringen. Andra säkerhetsstrategier bör också användas för att säkerställa att illvilliga infogningar inte tas emot av nätverket och tillåts arbeta sig in i befintliga koder.