Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih...
Transcript of Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih...
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
RAČUNALNA FORENZIKA - SEMINAR
Software cracking
Ivan-Dominik Ljubičić
Zagreb, siječanj, 2016.
Sadržaj
1. Uvod ..................................................................................................................... 1
2. Povijesni pregled .................................................................................................. 2
2.1 Atari ............................................................................................................... 2
2.2 Commodore 64 ............................................................................................. 3
3. Današnje tehnike i alati probijanja softvera .......................................................... 5
3.1 Metode .......................................................................................................... 5
3.2 Alati ............................................................................................................... 6
4. Primjer probijanja zaštite jednog softwarea .......................................................... 8
4.1 Probijanje zaštite WinRara (verzija iz 2007. godine) ..................................... 8
5. Literatura ............................................................................................................ 12
6. Sažetak .............................................................................................................. 13
1
1. Uvod
Software cracking predstavlja engleski termin za svaku modifikaciju programskog
produkta kojoj je cilj uklanjanje značajki koje se smatraju nepoželjnima iz perspektive
osobe koja probija softver tj. provodi postupak „krekiranja“. Nepoželjne značajke
ponajprije podrazumijevaju uklanjanje zaštite od neovlaštenog kopiranja (engl. copy
protection), ali i drugih „ometala“ koji se pojavljuju pri radu s aplikacijom, poput
učestalih oglasa ili zahtjeva za registracijom softvera koji na taj način pokušavaju
prisiliti korisnika da kupi punu verziju aplikacije. Zaštita od neovlaštenog kopiranja
obuhvaća zaštitu od manipulacije softverskog koda, serijskog broja, provjere datuma
ili diska kojom kompanije pokušavaju osigurati svoje programske produkte. Povijesno
gledano, probijanje softvera radilo je veliku materijalnu štetu softverskim
kompanijama, pogotovo u industriji računalnih igara. Te su brojke dodatno narasle
nakon popularizacije P2P (engl. peer-to-peer) mreža i torrent servisa, koje su
omogućile jednostavni, učinkoviti i brzi prijenos piratskog softvera. Crack danas
označava zbirni naziv za dodatak koji omogućuje proboj određenog softvera, poput
ukradenog serijskog broja ili alata koji obavlja akt krekiranja. Neki od tih alata su
generator serijskih brojeva (engl. keygen), zakrpa (engl. patch) ili loader. Keygen je
vlastito izrađeni generator lažnih licenci koje omogućuju korištenje nekog
programskog produkta. Patch je mali računalni program koji izmjenjuje strojni kod
drugog programa, dok loader mijenja tok izvođenja programa, ali ne uklanja zaštitu
od neovlaštenog korištenja već je zaobilazi. Osobe koje se bave piratiziranjem
softvera uglavnom se oslanjaju na alate i tehnike reverznog inženjerstva (engl.
reverse engineering) tj. dobivanja i modifikacije programskog koda iz izvršnih
datoteka. Piratski softver vrlo je popularan i danas, a njegova distribucija zabranjena
je u većini zemalja, pa tako i u Hrvatskog, dok u zapadnim zemljama nisu rijetke
novčane kazne zbog njegovog korištenja. Danas postoji i globalna underground
zajednica koja se bavi piratiziranjem i neovlašenom distribucijom piratskog softvera,
pod nazivom Warez scene, ili češće samo The Scene. S druge strane, tehnike i alati
reverznog inženjerstva su javno dostupni i često se koriste u legalne i edukacijske
svrhe. Potrebno je još reći kako je ovaj seminar napisan isključivo u edukacijske
svrhe i ne potiče korisnika na pokušaj piratizacije softvera.
2
2. Povijesni pregled
Prve metode zašitite od neovlašenog umnožavanja softvera primijenjene su na
softver razvijen za računala Apple II, Atari 800 i Commodore 64, a softverske
kompanije od tada pokušavaju implementirati što složenije metode kako bi se
spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek
uspijevali pronaći načina da zaobiđu ili uklone te oblike zaštite. Rani pirati softvera
uglavnom su se time bavili iz hobija i zabave, a često su formirali grupe koje su se
međusobno natjecale u piratizaciji i distribuciji piratskog softvera. Probijanje najnovije
metode zaštite softvera više je bila prilika da netko prikaže svoje tehnološko umijeće,
nego prilika za dobru zaradu. U idućih nekoliko potpoglavlja pokušati će se objasniti
neke od prvih metoda piratizacije.
2.1 Atari
8-bitna Atari računala su kao najčešću metodu zaštite softvera koristile
takozvanu metodu bad sectora (hrv. neispravnih sektora). Programi su se tada
upogonili s 5.25'' disketa čitanjem preko floppy diska, a neispravni sektori diskete
namjerno su bili nečitljivi od samog floppy disketnog pogona. Softver bi tražio ove
sektore kada se program učitavao i prekinuo bi učitavanje ako se kod pogreške ne bi
vratio prilikom čitanja takvih sektora. Specijalni programi su bili razvijeni koji su bili u
mogućnosti kopirati disketu i zapamtiti gdje se nalaze neispravni sektori. Tada bi pirat
pokrenuo program koji bi zavrtio floppy disk i konstantno čitao isti sektor. Dalje bi se
fizički osigurali smanjenje okretaja diska u sekundi i kada bi se okretaji spustili ispod
određene razine, aplikacija bi mogla zapisati neispravne sektore tamo gdje je
potrebno. Po završetku bi se okretaji diska vratili na normalnu razinu, a rezultat bi
bila disketa koja sada sadrži piratsku verziju programa. Kako je vrijeme napredovalo,
razvijale su se učinkovitije metode zaštite, ali su se i dalje uglavnom oslanjale na
neku vrstu čitanja neispravnih podataka sa diskete. Kasnije su se na tržištu pojavili i
hardverski proizvodi koji su omogućavali da se izrade identične kopije disketa, budući
da bi su koristili različiti BIOS kontroler nego Atarijevi floppy disketni pogoni.
3
Slika 1. Floppy pogon Atari 810 računala
2.2 Commodore 64
Računalo Commodore 64 koristilo je nekoliko metoda za zaštitu softvera. Za
softver na ROM kazetama su bile uključene subrutine koje su imale mogućnost
izmjene programskog koda. Ako je softver bio na ROM-u (engl. read only memory)
ništa se ne bi dogodilo, međutim ako bi se softver prebacio u RAM, subrutina bi ga
onesposobila. Jedna od metoda zaštite znala je uzrokovati iskrivljenje glave floppy
diska, zbog udaranja o rub moguće putanja pa su ponekad piratske verzije softvera
bile i poželjnije jer nisu imale ovaj problem.
Piratiziranje softvera na Commodoreu bilo je vrlo popularno korištenjem Fast
Hack'em niblera tj. programa koji je dizajniran da kopira podatke s floppy diska na
vrlo niskoj razini, bit po bit. Korištenjem ovog programa, kopiranje diskete se vršilo na
puno nižoj razini nego preko standardnih Commodore DOS naredbi. Time su ujedno i
metode zašitite opisane u poglavlju 2.1 kod Atari računala, koje je i računalo
Commodore koristilo, postale beskorisne. Diskete su bile replicirane u potpunosti pa
se time riješio i problem namjernih neispravnih sektora. Samo kopiranje diskete je
kratko trajalo, u prosjeku 60 sekundi ako se radilo o dvostrukom floppy čitaču, ili oko
3 minute ako se radilo o jednostrukom floppy čitaču.
4
Slika 2. Oglas za Fast Hack'em nibbler, objavljen u popularnom časopisu
Compute!'s Gazette, namijenjenom primarno korisnicima Commodore računala
5
3. Današnje tehnike i alati probijanja softvera
Tehnike opisane u poglavlju 2. uglavnom su izumrle, što zbog zastarjenja
hardvera i prelaska na nove tehnologije, što zbog otkrića novih vrsta zaštite softvera,
ali i metoda njihovog proboja. Ovo poglavlje bavi se upravo tim metoda te uz to daje i
popis alata koji pirati koji često koriste u takve svrhe.
3.1 Metode
Najčešće metoda probijanja softverske zaštite je modifikacija binarnih izvršnih
datoteka koje sadrže strojni kod za izvođenje na računalu. Takav kod se dekompilira
tehnikama reverznog inženjerstva i alterira zaobilaskom i preskakanjem određene
grane koda služi za zaštitu softvera. Jedan od poznatih alata za tu svrhu je Interactive
Disassembler, o kojem će više biti rečeno u nastavku. Također, izvršavanje
kompiliranog koda može se pratiti preko debuggera zaduženih za tu svrhu, poput
x64dbg-a. Program se prati sve dok se ne dođe do subrutine zadužene za zaštitu
softvera. Binarna izvršna datoteka mijenja u samom debuggeru ili hex editoru na način
da se naredba prije grananja zamijeni komplementarnom ili naredbom koja ne izvršava
ništa. Na taj način, program ćemo modificirati da uvijek izvrši subrutinu koju želimo ili
da preskoči onu koju ne želimo. Primjer ove tehnike je crack koji uklanja period isteka
trial verzije programa. Takvi crackovi su uglavnom programi koji mijenjaju izvršne
datoteke programa, ali ponekad i biblioteke vezane uz aplikaciju (datoteke .dll ili .so
tipa).
Još jedna metoda je koristiti specijalni softver za skeniranje medija kako bi se
pronašao softver za zaštitu medija od neovlaštenog kopiranja poput SafeDisca ili
StarForcea. Nakon toga, moguće je korištenjem drugih alata ukloniti takvu zaštitu.
Tada se takav medij može kopirati na korisnikov hard disk pomoću programa poput
Alcohol 120%, CloneDVD-a ili Deamon toolsa.
U drugim slučajevima, ponekad je moguće dekompilirati program kako bi se dobio
izvorni kod ili barem kod više razine od strojnog koda. Napredne metode reverznog
inženjerstva zahtijevaju od pirata ili skupine pirata da provedu puno vremena
proučavajući problematiku, ali u konačnici gotovo uvijek uspiju pronaći manu u sustavu
6
zaštite. Iskorištavanjem te mane, pirati koristeći svoja programerska znanja rade nove
inačice izvršne datoteke, popularne crackove, koji uklanjaju ili zaobilaze metode zaštite
softvera od neovlaštenog kopiranja ili korištenja. Takvi crackovi vrlo se brzo šire preko
raznih web portala ili P2P mrežama, koje zbog svoje popularnosti na taj način nanose
veliku štetu kompanijama koji proizvode sami softver kao što je spomenuto u uvodu.
Bitno je spomenuti da softverske kompanije uvijek moraju odabrati kompromis
između velike softverske zaštite i jednostavnosti korištenja aplikacije. Previše
sigurnosnih zahtjeva poput stalne internetske veze u radu s aplikacijom i česta
ponavljanja registracije na raznim mjestima može iritirati i ometati korisnika u radu s
aplikacijom. Kompanije mogu uložiti puno vremena i u razvoj internih sigurnosnih
opcija, poput enkripcije i raznih drugih oblika zaštite, ali čini se kako su pirati uvijek
jedan korak ispred programera. Sve te sigurnosne opcije često usporavaju i otežavaju
probijanje softvera, ali u konačnici, čini se kako svaki novi krekriani programski produkt
osvane ne torrent servisima.
3.2 Alati
Postoje mnogi javno dostupni i besplatni alati koji mogu poslužiti u postupku
uklanjanja softverske zaštite, a u nastavku je dana lista i kratki opis funkcionalnosti
nekih od njih:
IDA (Interactive disassembler) – disassembler za više opracijskih sustava,
koji uključuju Microsoft Windows, Mac OS X i Linux koji omogućuje reverzni
proces dobivanja asemblerskog koda iz strojnog koda. Kao što je već opisano
u ranijim poglavljima, ovaj postupak može uvelike pomoći kod piratizacije
softvera. Pogotovo dolazi do prednosti kod aplikacija koje računaju serijske
brojeve unutar samog koda, pa se tako može otkriti i algoritam njihovog
generiranja. Zbog toga je moguće replicirati taj algoritam za generiranje vlastitih
lažnih serijskih brojeva.
x64dbg – open-source debugger strojnog koda za MS Windows operacijski
sustav. Prednost ovog debuggera je njegova mogućnost da prolazi kroz kod
dok se vanjska aplikacija izvršava. Može detektirati linije koda kada se pokrene
postupak za registraciju aplikacije te se tako taj postupak može i zaobići.
7
Hiew – hex-editor koji omogućuje korisniku da mijenja hex vrijednosti za danu
aplikaciju. Na taj način se piratu omogućuje modificiranje linija programskog ili
strojnog koda. Kao što je opisano u poglavlju 3.1 pirat može na taj način
preskočiti linije koda koje mu ne odgovaraju i tako zaobići nužnu registraciju
softvera.
Process monitor – besplatan alat za sistem administraciju koji korisniku
omogućava pregled svih akcija nad bilo kojom vrstom datoteka na Windows
operacijskom sustav. Alat je nastao spajanjem mogućnosti zastarjelih RegMon
i FileMon alata.
CloneCD – software koji omogućuje identične 1:1 kopije glazbenih ili
podatkovnih medija, bez obzira koje metode zaštite od neovlaštenog
umnažanja koriste
8
4. Primjer probijanja zaštite jednog softwarea
Za kraj seminara, prikazan je stvarni postupak probijanja zasitite jednog
softverskog produkta. Kako se ne bi prikazao ilegalan postupak piratizacije, prikazan
je primjer iz rada Software cracking autora Ankita Jaina i ostalih iz 2007 godine [1].
Konkretno radi se o postupku lažnoj registraciji popularnog programa za arhiviranje
WinRara. Program je od tada napredovao i danas koristi online aktivaciju pa stoga
ovaj postupak više ne bi bio dovoljan, međutim opisana tehnika probijanja se i dalje
koristi kod piratizacije softvera.
4.1 Probijanje zaštite WinRara (verzija iz 2007. godine)
1. Ispitivanje sigurnosnih mjera aplikacije – otvaranjem aplikacije i
upisivanjem random vrijednosti za serijski broj, javlja se poruka o neuspjeloj
registraciji: „Registration Failed“. Ovu poruku je korisno zapisati kako bi se
kasnije mogao pretraživati kod za potencijalnim hard kodiranim stringom.
2. Proučavanje izvršne datoteke programa – otvaranjem izvršne datoteke
programa u hex-editoru Hiew i upisivanjem stringa „Registration Failed“ ne
dobije se nikakav rezultat pa očito treba isprobati drugu metodu. Započinje se
pretvaranjem izvršne datoteke sa strojnim kodom u asemblerski kod pomoću
programa Softice (disassemlber za Windowse do verzije Windowsa XP,
tadašnji ekvivalent današnjem programu IDA). Sada se može pratiti tok
programa, a pretragom za referencama sa stringom, lako se dolazi do dijela
koda za kojeg je vrlo vjerojatno da je zadužen za iskočni prozor ako se ne
upiše ispravan serijski broj. Taj odlomak asemblerskog koda prikazan je na
slici 3. Sada se zapiše offset koji predstavlja liniju koda u asemblerskom
programu.
9
Slika 3. Referenca na string te usporedba dva stringa s asemblerskom
naredbom jump ukoliko se stringovi ne podudaraju
3. Izmjena koda u hex editoru – otvaranjem koda u Hiew hex-editoru i
promjenom pregleda na asembler može se skočiti na offset u programu
zapisan u koraku 2. Asemblerska naredba „jump not equal“ sada se mijenja u
naredbu „jump“. Ako se stvarno radilo o skoku nakon upisa serijskog broja pri
registraciji, sada će se registracija WinRara izvršiti koja god se vrijednost
upisala.
Slika 4. Usporedba stringova nakon koje sada slijedi bezuvjetni skok
10
4. Provjera uspješnosti – nakon spremanja izmjena u programu i ponovnim
pokretanjem programa i registracije, može se vidjeti na slici 5. da se
upisivanjem random vrijednosti registracija uspješno obavlja. Može se reći da
je softver uspješno probijen (krekiran ili piratiziran).
Slika 5. Uspješna registracija WinRara nakon upisivanje random vrijednosti
11
5. Zaključak
Može se zaključiti kako je probijanje softvera kroz povijest do dan danas bilo i
ostalo vrlo popularno. Iako su se razvijale sve složenije metode zaštite softvera od
neovlaštenog kopiranja i korištenja, čini se kako su softverski pirati uvijek korak ispred
te da njihovi „proizvodi“ vrlo brzo osvanu na popularnim P2P servisima. Takve
distribucije godinama čine veliku štetu softverskim i medijskim produkcijskim kućama,
uzimajući im dio zarade. Također, ljudi još uvijek ne uspoređuju krađu tuđeg
intelektualnog vlasništva s krađom fizičkom vlasništva, primjerice namirnica iz dućana.
Sve dok je tako i sve dok glazbena, filmska i softverska industrija skupo naplaćuje
svoje produkte, ljudi će te iste piratizirati i koristiti takve, besplatne inačice, budući da
ne osjećaju grižnju savjesti zbog činjenja istog. Osobno mišljenje autora ovog
seminara jest da bi se proizvođači i kupci trebali naći negdje na sredini. Softver bi
mogao biti nešto jeftiniji dok se ostvaruje pristojna zarada softverskim firmama, a ljudi
bi trebali podržati developere kupnjom originalnog proizvoda u kojeg je vrlo često
uložen veliki trud i napor. Primjeri pozitivne marketinške strategije su servis za kupnju
računalnih igrača Steam i internetski pružatelj medijskih streamova Netflix. Oba
servisa omogućuju kupnju i gledanje svojih proizvoda po pristojnim cijenama, a
svejedno održavajući dobru zaradu zbog velikog broja korisnika.
12
6. Literatura
[1] Jain A., Kuo J., Soet J., Tse B., Software Cracking, 2007.
[2] Software cracking, https://en.wikipedia.org/wiki/Software_cracking, siječanj 2017.
[3] Copy Protection Used on Atari 8-Bit Computers,
http://diskpreservation.com/dp.php?pg=protection_atari, siječanj 2017.
[4] Commodore 64 and Copy Protection, http://www.root.org/~nate/c64/, siječanj
2017.
13
7. Sažetak
U okviru ovog rada objašnjeni su osnovni koncepti iza metoda piratizacije softvera
tj. probijanja zaštite od neovlaštenog kopiranja i korištenja proizvoda bez odgovarajuće
licence. Nakon uvoda u temu, iznesen je povijesni pregled prvih metoda piratizacije
softvera, a kasnije su objašnjene i novije metode koje se koriste i danas. Za kraj rada,
demonstriran je praktični primjer probijanja zaštite stare verzije WinRara te je donesen
zaključak o tematici kojom se rad bavi.