Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih...

15
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA RAČUNALNA FORENZIKA - SEMINAR Software cracking Ivan-Dominik Ljubičić Zagreb, siječanj, 2016.

Transcript of Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih...

Page 1: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

RAČUNALNA FORENZIKA - SEMINAR

Software cracking

Ivan-Dominik Ljubičić

Zagreb, siječanj, 2016.

Page 2: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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

Page 3: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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.

Page 4: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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.

Page 5: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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.

Page 6: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

4

Slika 2. Oglas za Fast Hack'em nibbler, objavljen u popularnom časopisu

Compute!'s Gazette, namijenjenom primarno korisnicima Commodore računala

Page 7: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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

Page 8: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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.

Page 9: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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

Page 10: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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.

Page 11: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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

Page 12: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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

Page 13: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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.

Page 14: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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.

Page 15: Sveučilište u Zagrebu - lecto-player.lecto.org · spriječila neovlaštena distribucija njihovih produkata. Usprkos tome, pirati su uvijek uspijevali pronaći načina da zaobiđu

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.