Zaštita izvornog koda programa

Razvojem i komercijalizacijom softvera, zaštita izvornog programskog koda postala je nužan faktor u radu softverske industrije. U tu svrhu razvijene su razne tehnike kojima se programski kod može učiniti nečitljiv ljudima. Najpopularnija metoda za „skrivanje“ izvornog koda programa je obfuskacija, no postoje i brojne druge tehnike koje se prilikom izmjene koda obično kombiniraju. Za provođenje obfuskacije i drugih metoda postoji mnogo besplatnih i komercijalnih alata koji se mogu primijeniti na razne programske jezike. U ovom dokumentu opisane su najpopularnije tehnike „skrivanja“ izvornog programskog koda, zatim se navedeni neki popularni alati, a opisana je i tzv. „tehnika deobfuskacije“ koja se koristi za ponovno otkrivanje izvornog koda izmijenjenog programa.

 

 

Izvorni programski kod često je potrebno zaštititi od nelegalnog korištenja. Kako bi se programski kod zaštitio razvijene su razne tehnike. Jedna od najpopularnijih i najraširenijih tehnika je tzv. obfuskacija koja spada pod paradigmu “security through obscurity“, odnosno sigurnost kroz nejasnoće. Ova paradigma tehniku koja koristi tajnost i nejasnoće kako bi se povećala sigurnost računalnih sustava i programa.

Obfuskacija podrazumijeva „zamračivanje koda“ odnosno stvaranje nečitkog i ljudima nerazumljivog koda programa od izvornog programskog koda. Ona ne može u potpunosti zaštititi izvorni programski kod od zloćudnih napada i inverznog inženjerstva. Obfuskacija je u mogućnosti spriječiti napad neko vrijeme i to je njen primarni cilj. Bolja zaštita programa postiže se kombinacijom obfuskacije s drugim tehnikama zaštite, kao što su code morphing, enkripcija i druge. Razvijeni su brojni programi, tzv. obfuskatori za razne programske jezike, a poznatiji među njima su ProGuard i Jshrink za Javu, Stunixx i Mangle-It za programske jezike C i C++, CliSecure i Skater za .NET te Pyfuscate za Python.

Obfuskacija je također i česta metoda koju zloćudni programi koriste kako bi sakrili svoju prisutnost i proširili se po računalnom sustavu. Polimorfizam je pojam koji se u računalnoj znanosti koristi za programski kod koji stalno mijenja svoj izgled, ali mu funkcionalnost ostaje ista. Polimorfni zloćudni programi u pravilu uvijek koriste obfuskaciju za sakrivanje svojeg programskog koda. Obfuskacija im omogućuje mijenjanje koda na više načina, a neki od njih su dodavanje beskorisnog koda, mijenjanje imena registara, promjena varijabli i konstanti u programu, promjena rasporeda naredbi i dr.

Ipak, postoje i brojni postupci kojima je moguće vratiti izvorni kod originalnog programa. Deobfuskacija je tehnika dobivanja izvornog koda programa iz obfusciranog programskog koda. U deobfuskaciji se koriste statičke i dinamičke analize kako bi se dobio originalni izvorni kod programa. Ipak, najčešća situacija nakon deobfuskacije je da izvorni programski kod koji je rezultat ovog postupka bude slične funkcionalnosti kao i originalni izvorni kod programa, no njegov izgled se poprilično razlikuje od početnog izvornog programskog koda.

U budućnosti se očekuje razvoj sve sofisticiranijih tehnika zaštite izvornog programskog koda, pa će reverzni inženjering takvog koda biti sve kompliciraniji. S jedne strane to pogoduje proizvođačima komercijalnog softvera čiji će proizvodi tako biti zaštićeniji, no s druge strane to će stvarati dodatne probleme proizvođačima antivirusnih alata koji će sve teže moći detektirati zaštićene zlonamjerne programe.

Cijeli dokument (u PDF formatu) "Zaštita izvornog koda programa" preuzmite ovdje.

© Laboratorij za sustave i signale - Copyright 2008 - 2013. www.LSS.hr